Fuego 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 = * if a major release, select a fire-related name * update the change log * change the version number * 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: * https://bitbucket.org/tbird20d/fuego/src/VERSION * the CHANGELOG for each release is in: * https://bitbucket.org/tbird20d/fuego/src/CHANGELOG * version of ftc = 1.1.0 on March 20, 2017 * version of abstraction scripts = ??? * version of tests = ??? * version of docker stuff = ??? * version of Jenkins used = 1.509.2 (In Jenkins interface) = 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 change log == * get a list of change for each repository: * git log --oneline origin/master..HEAD * or use gitk to see changes graphically * edit fuego/CHANGELOG with human-readable features == change the version number == * edit fuego/VERSION * edit fuego-core/engine/scripts/ftc VERSION variable == test changes since last release == * push 'next' branch changes * (in fuego-core:) git push * verify that Docker container has the latest git version for fuego-core * (in fuego:) grep 'ENV.*NEXT' Dockerfile * (in fuego-core:) git log -n 1 --oneline * if different, set INST_FUEGO_CORE_NEXT_GIT_REVISION to value from fuego-core * (in fuego:) git push * make release directory: * mkdir ~/work/fuego/release-<date> * git clone -b next git@bitbucket.org:tbird20d/fuego.git * git clone -b next git@bitbucket.org:tbird20d/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 == pull patches from next to master == * in ~/work/fuego/release-<date>/fuego: * git stash * sudo chown -R 1000072457.domain_users userdata * git checkout -tb master origin/master * rm last_fuego_container.id * git merge next * get fuego-core patches onto master * cd ~/work/fuego/release-<date> * git clone git@bitbucket.org:tbird20d/fuego-core * cd fuego-core * git merge origin/next * git push * test again * install, create container, start container, update config.xml, run tests * commit the new Dockerfile * in fuego: git add Dockerfile * git commit == tag the release == Where M= Major, m = minor, r = revision, * git tag -a vM.m.r -m "Fuego vM.m.r" == push fuego-core master to bitbucket == * git push * git push --tags == update the release table == * see [[Releases]] == announce on the fuego mailing list == * copy changelog * use subject: Release vX.Y.Z * add commentary * send = Notes on specific releases = == 1.1 release == * [[release-1.1-test-2017-03-31 Notes]] == 1.0 release == === git log fuego === {{{ e41dea4 README: fix columns in README 7fbef4b tests.info: reboot has only a time plot at the moment 6e88fdd proxy: add support for environments behind a proxy f9f8139 Dockerfile: whitespace cleanups 04fb120 Add script for creating a container that can talk through USB 2209f9b Add .gitignore files to ignore generated files 39c0601 nologger: change to nologread }}} === git log fuego-core === {{{ df134e0 reboot: fix the reboot test 00b129b logger: remove dependency on logging mechanism 46e054e nosyslogd.dist: support targets without syslogd f679cca dist: rename nologger.dist to nologread.dist 39c8ecc gitignore: add a gitignore file 0fd8885 FUEGO_'HOME: create automatically if not provided 876e6f9 bzip2: add support for busybox version of bzip2 }}} === changelog list === * Add support for building docker container behind a proxy * Add support for creating a container that can see USB changes * Change reboot test to only report time * Fix some other issues with the reboot test * Change name of logread function and distribution overlay file * WARNING: this has potential to break the Jenkins configuration for targets that referenced nologread.dist * DISTRIB environment variable should be changed from distribs/nologger.dist to distribs/nologread.dist * Add .gitignore files to make repository management easier * Add code to create the FUEGO_H''''''OME directory if not already present * Change bzip2 test to support busybox version of bzip2