This document describes how to release of the projects involved in the PlUES Timetable Validation Tool and project.
[TOC]
Project releases have to follow this logical order to avoid problems in the process:
- mincer
- model-generator
- data
- models
- handbook
- plues
- Remember to pull/fetch-merge.
git flow release start <version>lein ancientto check if the dependencies are up to date.lein test
If everything works as expected
Bump the version number, e.g. from 3.0.0-SNAPSHOT to 3.0.0
bumpversion --verbose release- and finish the release with
git flow release finish
In the develop branch:
bumpversion --verbose minor or bumpversion --verbose patch to set the next
version number. E.g. after releasing 3.0.0
`bumpversion --verbose minor` would create version `3.1.0-SNAPSHOT`
git push origin master:master --tags
git push origin develop:develop
Remember to pull/fetch-merge.
steps:
git flow release start <version>
./gradlew check
If everything works as expected:
bumpversion --verbose release
git flow release finish
In the develop branch set the version for the development version with:
bumpversion --verbose major|minor|patch
git push origin master:master --tags
git push origin develop:develop
Remember to pull/fetch-merge.
git flow release start <version>
bumpversion release
Update the Makefile:
- set
MINCER_VERSIONandMODEL_GENERATOR_VERSIONto the corresponding release versions as chosen in the steps above. - Once builds above have finished run
make data.mchto verify everything works as expected.
If everything works as expected:
git add Makefile
git commit
git flow release finish
In the develop branch:
- Update
Makefile
- set
MINCER_VERSIONandMODEL_GENERATOR_VERSIONto the correspondingSNAPSHOTversions as chosen in the steps above. - Once builds above have finished run
make data.mchto verify everything works as expected. - Commit changes.
bump version to next development version:
bumpversion --verbose patch|major|minor
git push origin master:master --tags
git push origin develop:develop
make philfak-data.sqlite3 flavor=philfak
make wiwi-data.sqlite3 flavor=wiwi
make cs-data.sqlite3 flavor=cs
Remember to pull/fetch-merge.
git flow release start <version>
git submodule update --init
(cd data; git checkout master; git pull origin master)
git add data
git commit -m 'Updated submodule to the latest release'
Setup:
- Requirements for python test runner are defined in
tests/requirements.txt - Install with
pip install -r tests/requirements.txtas appropiate. - Update
tests/data/raw/Makefile - set
MINCER_VERSIONandMODEL_GENERATOR_VERSIONto the corresponding release versions as chosen in the steps above. git add tests/data/raw/Makefilegit commit -m 'Updated test dependencies to release versions'- run
make test-datato regenerate test data using the latest versions of model-generator and mincer.
Run Tests
make data.mch solver7_tests tests
If everything works as expected commit changes and:
git add tests/data/raw
git commit -m 'Regenerated test data files'
bumpversion --verbose release
git flow release finish
In the develop branch:
- Update
tests/data/raw/Makefile - set
MINCER_VERSIONandMODEL_GENERATOR_VERSIONto the correspondingSNAPSHOTversions as chosen in the steps above. - run
make test-datato regenerate test data using the latest versions of model-generator and mincer. - commit changes
git add tests/data/raw/Makefilegit commit -m 'Updated test dependencies to development versions'git add tests/data/rawgit commit -m 'Regenerated test files'
then run:
(cd data; git checkout develop; git pull)
git add data
git commit -m 'Updated submodule to the latest development version'
bumpversion --verbose major|minor|patch
git push origin master:master --tags
git push origin develop:develop
The handbook also follows the git-flow process.
Remember to pull/fetch-merge.
git flow release start <version>
bumpversion --verbose release
Update tool Version numbers and URLs in dokumentation.md:
- Section 1.1 links and versions
- Section 2.1: Version
run the following command to generate the pdf and html versions of the handbook to check that everything workds as expected
make
If everything is as expected commit changes:
git add dokumentation.md
git commit -m 'Updated version numbers'
And finish the release with:
git flow release finish
git push origin master:master --tags
git push origin develop
In the develop branch set the version for the next release:
bumpversion major|minor|patch
Update tool Version numbers and URLs in dokumentation.md:
- Section 1.1 Links and versions
- Section 2.1: Version
Commit dokumentation.md and push everything:
git push origin develop:develop
git flow release start <version>
(cd model-generator; git checkout master; git pull)
git add model-generator
git commit -m 'Updated submodule to the latest release'
- Set
model_versionto released version of models project, as chosen above.
Commit changes:
git add src/main/resources/main.properties
git commit -m 'Updated required version of models'
- Set
handbook-url-htmlandhandbook-url-pdfto the URL of the released handbook insrc/main/resources/main.properties.
Commit changes:
git add src/main/resources/main.properties
git commit -m 'Updated handbook url'
- Update
build.gradle. Switch fromSNAPSHOTto latest ProB2 release. Maven Central
git add build.gradle
git commit -m 'Updated ProB2 to latest release'
./gradlew clean check -Pheadless=true
If everything works as expected:
bumpversion --verbose release
git flow release finish
In the develop branch:
(cd model-generator; git checkout develop; git pull)
git add model-generator
git commit -m 'Updated submodule to the latest development version'
- Set
model_versionto released version of models project, as chosen above.
Commit changes:
git add src/main/resources/main.properties
git commit -m 'Updated required version of models'
- Set
handbook-url-htmlandhandbook-url-pdfto the URL of the latest development version handbook insrc/main/resources/main.properties.
Commit changes:
git add src/main/resources/main.properties
git commit -m 'Updated handbook url'
- Update
build.gradle. Switch to the currentSNAPSHOTof ProB2. Maven Central
git add build.gradle
git commit -m 'Updated ProB2 to SNAPSHOT release'
bumpversion --verbose major|minor|patch
git push origin master:master --tags
git push origin develop:develop
On the corresponding branch, i.e. master.
Download release build from https://www3.hhu.de/stups/downloads/plues/mincer/ or run:
lein uberjar launch4j
Upload mincer-<VERSION>-standalone.jar and mincer-.exe` to the corresponding tag/release at https://github.com/plues/mincer/releases/.
On the corresponding branch, i.e. master.
Download the release to be published from https://www3.hhu.de/stups/downloads/plues/model-generator/ or run:
./gradlew buildStandaloneJar
Upload model-generator-4.2.0-SNAPSHOT.jar and model-generator-standalone-4.2.0-SNAPSHOT.jar to the corresponding tag/release at https://github.com/plues/model-generator/releases.
On the corresponding branch, i.e. master.
Generate all databases:
make philfak-data.sqlite3
make wiwi-data.sqlite3 flavor=wiwi
make cs-data.sqlite3 flavor=cs
Upload philfak-data.sqlite, wiwi-data.sqlite3 and cs-data.sqlite3 to the corresponding release at https://github.com/plues/data/releases.
go to the models repository checkout.
In the corresponding branch for the release (e.g. master) run:
make very_clean dist
This copies and packages all relevant model files to dist/models.zip.
Copy the created dist/models.zip file to the resources direcotry in the plues
project: src/main/resources.
Upload dist/models.zip to the corresponding release at https://github.com/plues/models/releases.
Go to the corresponding branch (e.g. master) in you handbook checkout and generate the handbook files with:
make
Copy the generated .html and .pdf files to your plues checkout:
cp handbook-<version>.html <plues checkout>/src/main/resources/doc/handbook.html
cp handbook-<version>.pdf <plues checkout>/src/main/resources/doc/handbook.pdf
Upload handbook-<version>.html and handbook-<version>.pdf to the corresponding release at https://github.com/plues/handbook/releases.
On the corresponding branch, i.e. master.
IMPORTANT Make sure src/main/resources/local.properties does not override any settings.
In the plues repositry run:
./gradlew clean createDmg winZip distTar
this step creates the following artifacts, which can be distributed:
build/distributions/plues-<VERSION>.dmg(Mac Os)build/distributions/plues-<VERSION>.tarbuild/launch4j/plues-<VERSION>-win.zip(Windows)