Fuego release process
This assumes that changes to be released are in the 'next' branches of the repositories on bitbucket.org.
Overview [edit section]
- if a major release, select a volcano 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 [edit section]
- the main version number of Fuego is found in:
- the CHANGELOG for each release is in:
- version of ftc = 1.0.9 on March 20, 2017
- version of abstraction scripts = ???
- version of tests = ???
- version of docker stuff = ???
- version of Jenkins used = 1.5.6 (In Jenkins interface)
- no longer applies?
Detailed steps [edit section]
select a volcano or fire-related name [edit section]
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 [edit section]
- get a list of change for each repository:
- git log --oneline origin/master..HEAD
- edit fuego/CHANGELOG with human-readable features
change the version number [edit section]
- edit fuego/VERSION
- edit fuego-core/engine/scripts/ftc VERSION variable
test changes since last release [edit section]
- 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
- docker ps
- 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
- run the following quick tests first:
pull patches from next to master [edit section]
- 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
- update Dockerfile for master to use git version of fuego-core master
- in fuego-core: glog - and look at top commit id
- it should be the id for the merge commit
- vi Dockerfile, copy value for INST_FUEGO_CORE_NEXT_GIT_REVSION to value for INST_FUEGO_CORE_GIT_REVISION
- uncomment 'RUN git clone fuego-core' and comment out 'RUN git clone -b next fuego-core'
- in fuego-core: glog - and look at top commit id
- 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 [edit section]
Where M= Major, m = minor, r = revision,- git tag -a vM.m.r -m "Fuego vM.m.r"
push fuego-core master to bitbucket [edit section]
- git push
- git push --tags
announce on the fuego mailing list [edit section]
- copy changelog
- use subject: Release vX.Y.Z
- add commentary
- send
Notes on specific releases [edit section]
1.1 release [edit section]
1.0 release [edit section]
git log fuego [edit section]
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 [edit section]
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 [edit section]
- 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
- WARNING: this has potential to break the Jenkins configuration for
targets that referenced nologread.dist
- Add .gitignore files to make repository management easier
- Add code to create the FUEGO_HOME directory if not already present
- Change bzip2 test to support busybox version of bzip2