-
Notifications
You must be signed in to change notification settings - Fork 15
Release Instructions
-
Run:
gcf-test.py
-
With no aggregates defined on the command line or in your omni_config ensure the following returns a version for each aggregate:
./omni.py -f <pg-utah> getversion ./omni.py -f <plc> getversion
-
With no aggregates defined on the command line or in your omni_config ensure the following returns a resource for each aggregate for which we got a version in the previous step:
./omni.py -f <pg-utah> listresources ./omni.py -f <plc> listresources
-
Run the following cases (or the equivalent therefore):
api-test.py -f <pg-utah> -a <myplc aggregate url>
api-test.py -f <pg-utah> -a <PG aggregate url>
api-test.py -f <plc> -a <myplc aggregate url>
api-test.py -f <plc> -a <PG aggregate url>
-
Create a sliver using native RSpecs at some AM
This section explains how to make a release of the GCF software.
Note we assume that "origin" points to Github: [email protected]:GENI-NSF/geni-tools.git.
-
Make sure BOTH README-omni.txt and CHANGES are up to date.
To check that CHANGES is up to date, try this git command:
git log v1.6.2... --no-merges --format="%ce %cd %s %b %N" --reverse --stat
Substitute the appropriate last version tag-name.
Be sure that there are GCF tickets for each (significant) item that changed/was fixed and that these are targeted at the right milestone, that you are noting in CHANGES
-
Make sure the version is set:
omni.py --version
-
Make sure the
windows_install/LICENSE.txt
is up to date.We are required to list all 3rd party packages that we are including, and include the correct license file. Check the license file that all dependent packages are listed with the proper versions and licenses, plus the URL where the binary can be retrieved. Note that all packages must be currently retrievable there - if not, then you must use a different version. If there are any changes to version numbers, licenses, or included packages, then submit this to Mark (who may then submit it to Bill Quantrille in contracts for written approval).
Note that any change to the required packages should also be noted in the appropriate INSTALL files.
-
Make sure you are in the gcf directory (otherwise the tarball won't contain the correct files):
pwd
-
Make sure your local repository is up to date:
git checkout master git fetch origin git merge origin/master git checkout develop git merge origin/develop
-
Create a release branch
Release branches are created off of develop. Releases are tagged on the release branch. When the release is final, the release branch is merged on to both master and develop.
git checkout develop git checkout -b release-2.5 git push origin release-2.5
-
Create a tag for the release.
An example of a final release:
git tag -a -m "gcf 1.0.1" v1.0.1 release-1.0.1
An example of a candidate release:
git tag -a -m "gcf 1.0.1-rc1" v1.0.1-rc1 release-1.0.1
Don't forget to push the tag.
git push --tags origin
(You can check the tags in your repo with:
git tag
)(Also delete mistakenly added tags in your local repo with:
git tag -d badtag
) -
Create the tar bundle (note the trailing slash in the prefix arg):
(Alternative: simply use the tarball Github automatically creates for tags here: https://github.com/GENI-NSF/geni-tools/tags )
Here is the basic form:
git archive --prefix=gcf-VERSION/ TAG > gcf-VERSION.tar
A example of a final release:
git archive --prefix=gcf-1.0.1/ v1.0.1 > gcf-1.0.1.tar
An example of a candidate release:
git archive --prefix=gcf-1.0.1-rc1/ v1.0.1-rc1 > gcf-1.0.1-rc1.tar
-
Check the tar file to make sure it has the right directory prefix AND contains the expected items in the top level gcf directory (like INSTALL and the src directory):
tar tf gcf-1.0.1.tar | less
-
Compress the tar file:
gzip gcf-1.0.1.tar
You now have a file named
gcf-1.0.1.tar.gz
.
-
Post the release candidate and iterate
- Open a ticket, e.g.:
Release GCF 1.3
. Be sure to note if there were changes to the license file or not, where the file is, and if there were changes to the file, whether you have gotten approval from Bill Q (via Mark) for the updated file. Note the date of the last license approval and who approved, and any changes since then. Be sure to cc Mark & Marshall on the ticket. - Tag v1.3-rc1 per above
- Attach that tarball to the ticket, assigned to Luisa for testing
- Point Infra at the ticket, to have them test amcanary with the new release
- Iterate with Luisa and Infra
- When Luisa approves and Infra finds no problems, it is time to build the Windows & Mac binaries and attach those. See wiki:SwReleaseGcf/MacOS and wiki:SwReleaseGcf/Windows
- When Luisa finds no issues with these binaries. tag a clean v1.3 at the same point as the approved RC, and attach that tarball to the ticket for posting. Also attach new windows and mac binaries for the clean tag point.
- Open a ticket, e.g.:
-
Get the release approved and posted
- Once Luisa says the release is ok, and you've posted a non-RC version on the ticket, she verifies that it is the same as what she tested
- Then she passes it to Heidi
- Once Heidi signs off, Infra posts it
- Then Luisa verifies the right thing was posted ok.
- Then you are ready to merge the release branch on to master and develop, and delete the release branch
-
Merge the release branch
git fetch origin -p git checkout master git merge origin/master git merge --no-ff release-2.5 git push origin master git checkout develop git merge origin/develop git merge --no-ff release-2.5 git push origin develop
Update the trac repo as well if desired.
Delete the release branch
git branch -d release-2.5 git push origin :release-2.5
Switch to the develop branch for ongoing development
git checkout develop
-
Update the version number to prepare for the next release.
See EG: https://github.com/GENI-NSF/geni-tools/commit/f757f53e20451194438b1b7d32450dc9e1fca1cc
git checkout develop
-
src/gcf/gcf_version.py
editGCF_VERSION
- Add a section in
CHANGES
- Add a section in
README-omni.txt
for release notes -
INSTALL.txt
: 3 sample commandlines -
windows_install/package_builder.iss
(7 places) -
mac_install/addAliases.command
(6 places) -
mac_install/INSTALL.txt
(2 places) -
mac_install/makeMacdmg.sh
(1 place) -
agg_nick_cache.base
- update the date at the top and the current release number configure.ac
README-packaging.md
-
Update Wiki pages
Note that these pages should transition to github.
- Post the edited
agg_nick_cache.base
to update the current release number (asagg_nick_cache
, replacing the current file)- The file lives on the master branch on github
- Close the existing milestone and create a new one: https://github.com/GENI-NSF/geni-tools/milestones)
- Update the wiki home page:
- update the three links for downloading the release to the latest version
- Update https://github.com/GENI-NSF/geni-tools/wiki/QuickStart:
- one link (both the link and the label) for downloading the release to the latest version (including link label)
- 3 sample text at top showing version#s
- If necessary, create a new page on how to update to this new version from previous versions
- https://github.com/GENI-NSF/geni-tools/wiki/Omni page should be updated to make the prior release be in the Older versions section, and update the current version #, and update 1 download link
- https://github.com/GENI-NSF/geni-tools/wiki/Windows for new version #s and download links
- https://github.com/GENI-NSF/geni-tools/wiki/MacOS for new version #s and download links
- As needed, update other pages off of Omni - including GENIExperimenter and its sub-pages.
- Convention is that old pages are saved but renamed, and refer users at the top to the latest page. And new versions mention what version they are for
- Post the edited
-
Send email announcing the new release
-
Do NOT close the ticket (the infra group will close it)
- Luisa should have the ticket to verify wiki edits
-
Create a release on Github
- https://github.com/GENI-NSF/geni-tools/releases
- Hit
Draft a new release
- Pick the proper tag
- Title release something like
Stitcher / Omni version 2.9
- Give the release a nice description, using text from the announcement email
- Attach the Windows and Mac binaries
- Preview, then Publish
GENI is sponsored by the National Science Foundation.