Release Process in 'raw' format
{{TableOfContents}} Here are the steps in the Fuego release process. This assumes that changes to be released are in the 'next' branches of the repositories on bitbucket.org. = Overview = * create Release_X.Y_Notes page * use 'git-when-introduced.sh' to find new tests * if a major release, select a fire-related name * update the CHANGELOG and CREDITS file * change the VERSION number (see below for where version is found) * update reference materials for testing * push changes to bitbucket * test all changes since the last release * run the fuego test suite * pull patches from next to master * tag the release * push master to bitbucket * announce on the fuego mailing list = where is the version found = * the main version number of Fuego is found in: * fuego/VERSION * fuego/docs/rst_src/conf.py ('version' and 'release') * the CHANGELOG for each release is in: * fuego/CHANGELOG * version of ftc * 1.5.8 on Dec 3, 2020 * 1.5.0 on Aug 14, 2019 * fuego-core/scripts/ftc (VERSION variable) * version of abstraction scripts: * fuego-core/scripts/common.sh (FUEGO_VERSION, FUEGO_CORE_VERSION) * version of test definition (fuego_package_version) = 1 * fuego-core/tests/<test_name>/test.yaml * version of docker stuff = ??? * version of Jenkins used * Look at bottom right of any page in Jenkins interface) * 2.249.3 for version 1.5.8 of Fuego * 2.164.2 for version 1.5.0 of Fuego * fuego/Dockerfile (JENKINS_VERSION, JENKINS_SHA) = Detailed steps = == select a volcano or fire-related name == If this is a major release, it should get a name for the release. See [[Volcano Names]] or [[Fire Names]] for a tentative list and resources for finding a name. == update the CHANGELOG == * get a list of changes for each repository: * git log --oneline v1.4.0.. * or use gitk to see changes graphically * or use 'git shortlog v1.4.0..' and examine commits by author * edit fuego/CHANGELOG with human-readable features == update the CREDITS file * in fuego and fuego-core, do author-stats * or 'git shortlog -s -e -n v1.x.x..' * edit fuego/CREDITS and add any new significant contributors == change the VERSION number == * edit fuego/VERSION * edit fuego/docs/rst_src/conf.py 'version' and 'release' variables * edit fuego-core/engine/scripts/ftc VERSION variable * edit fuego-core/engine/scripts/common.sh FUEGO_VERSION and FUEGO_CORE_VERSION variables == update reference materials for testing == * make sure reference materials (board, toolchains, etc) are up-to-date * check ~/work/fuego-reference and update with material from ~/f/fuego/fuego-ro * cd ~/work/fuego-reference * ./check-for-changes.sh == push changes to bitbucket == * push branch changes * if testing 'next', make sure each repository is on the correct branch: * (in fuego:) git branch -v * (in fuego-core:) git branch -v * (in fuego-core:) git push * (in fuego:) git push == test changes since last release == * make a release directory: * mkdir ~/work/fuego/release-<date> * ln ~/work/fuego/release-<date> ~/fr * cd ~/fr * build docker image, install boards and toolchains, and run tests * curdate=''MMdd'' * $ fuego-clean-install.sh [next|master] fuego-<curdate> * (in another terminal) $ fuego-finish-install.sh fuego-<curdate>-container * examine error reports for tests * ftc list-runs --where "start_time>yesterday,status!=PASS" * ftc gen-report --where "start_time>yesterday,status!=PASS" == pull patches from next to master == * in ~/work/fuego/release-<date>/fuego: * git stash * git checkout master * git merge next * get fuego-core patches onto master * cd ~/work/fuego/release-<date> * git clone git@bitbucket.org:fuegotest/fuego-core * cd fuego-core * git merge origin/next * git push * test again * install, create container, start container, run tests * (see steps above, but use 'master-YYYY-MM-dd' for directory, and fuego-MMdd for image name) == tag the release == NOTE: '''IMPORTANT''' tag the release NAME first, then the number, so that 'git describe' will show releases with the number, not the name. Where M= Major, m = minor, r = revision, * (in fuego:) git tag -a Name -m "Name the vM.m.r release: Name" * (in fuego:) git tag -a vM.m.r -m "Fuego vM.m.r" * (in fuego-core:) git tag -a Name -m "Name the vM.m.r release: Name" * (in fuego-core:) git tag -a vM.m.r -m "Fuego vM.m.r" == push fuego and fuego-core master to bitbucket == * (in fuego:) git push * (in fuego:) git push --tags * (in fuego-core:) git push * (in fuego-core:) git push --tags == update the release table == * see [[Releases]] == announce on the fuego mailing list == * create a new e-mail message, to: fuego@lists.linuxfoundation.org * copy CHANGELOG * use subject: ANNOUNCE: Fuego Release vX.Y.Z (''Name'') * add commentary * send = Notes on specific releases = See [[Releases]] for references to pages with notes and testing information about specific Fuego releases. = old information = === manual steps (legacy) === This is now scripts, but here are the previous manual steps. * push 'next' branch changes * (in fuego-core:) git push * (in fuego:) git push * make release directory: * mkdir ~/work/fuego/release-<date> * git clone -b next git@bitbucket.org:fuegotest/fuego.git * git clone -b next git@bitbucket.org:fuegotest/fuego-core.git * build docker image, create container, and start it * cd fuego * ./install.sh * ''NOTE: there are about 60 steps'' * make sure no other Fuego containers are running * docker ps * if needed, in docker containers: exit * cd fuego-host-scripts * ./docker-create-container.sh * ./docker-start-container.sh * (on host:) use 'docker ps' to verify that a new image is running * add bbb board * cd ~/work/fuego/release-<date>/fuego * ~/work/fuego/add-board-and-toolchain.sh * OR.... * cd ~/work/fuego/release-<date>/fuego/fuego-ro * cp ~/work/fuego/fuego/fuego-ro/conf/boards/bbb-poky-sdk.board conf/boards * add toolchain * (on host) sudo cp -a ~/work/fuego/fuego/fuego-ro/toolchains/* toolchains * add jenkins node for bbb * fuegosh * (in container) fuego-create-node -b bbb-poky-sdk * fuego-create-node -b docker * add jobs * fuego-create-jobs -b docker -t testplan_docker -d nosyslogd.dist * fuego-create-jobs -b bbb-poky-sdk -t testplan_default -d nologread.dist * fuego-create-jobs -b docker -t testplan_fuego -d nosyslogd.dist * fuego-create-jobs -b bbb-poky-sdk -t testplan_fuego -d nologread.dis * run fuego unit tests * run ftc-unit-tests.sh * run all tests on bbb * run the following quick tests first: * Functional.fuego_board_check * Functional.hello_world * Functional.bzip2 * Benchmark.Dhrystone * Benchmark.reboot