erplibre/doc/RELEASE.md

4.4 KiB

Release

A guide on how to generate a release.

Clean environment before generating new release

Before the cleaning, check if existing file isn't committed, not pushed or in stash.

.venv.erplibre/bin/repo forall -pc "git stash list"
./script/git/git_show_code_diff_repo_manifest.py

This will erase everything in addons. Useful before creating docker, manifest and do a release.

./script/git/clean_repo_manifest.sh

And update all from dev to merge into prod.

Test all supported Odoo version :

make install_odoo_all_version

Validate environment

make test_full_fast

Format code

To format all code, run:

make format

Update documentations

To generate Markdown in directory ./doc, run:

make doc_markdown

Test docker generate

To generate a docker, run:

make docker_build_odoo_18

Rename old version to new version

Search old version, like :

grep --color=always --exclude-dir={.repo,.venv,.git} --exclude="*.svg" -nri v1.6.0

Replace if need it to new version.

Update file ./pyproject.toml in [tool.poetry], line version =.

Test production Ubuntu environment

Follow instructions in PRODUCTION.md.

Test installation with code generator Geomap:

make addons_install_code_generator_full

Update image_db

To generate database images in directory ./image_db, run:

make db_clean_cache
make config_gen_all
make image_db_create_all_parallel

To test it, you need to clean caches and install it:

./script/database/db_restore.py --clean_cache
./script/database/db_restore.py --database test --image erplibre_website

Generate new prod and release

Generate production manifest and freeze all repos versions.

.venv.erplibre/bin/repo manifest -r -o ./default.xml

Update ERPLIBRE_VERSION variable in env_var.sh, Dockerfile.prod and docker-compose.

Generate poetry and keep only missing dependencies, remove updates.

./script/poetry/poetry_update.py

When running script ./script/poetry/poetry_update.py, note manually inserted dependencies, stash all changes and add it manually.

poetry add DEPENDENCY

Understand differences from last release:

# Get all differences between the last tag and HEAD, to update the CHANGELOG.md
# ERPLibre
git diff v#.#.#..HEAD

# All repo
.venv.erplibre/bin/repo forall -pc "git diff ERPLibre/v#.#.#..HEAD"

Simplification tools:

# Show all divergence repository with production
make repo_diff_manifest_production
# Short version with statistics
make repo_diff_stat_from_last_version
# Long version
make repo_diff_from_last_version

Update file CHANGELOG.md and create a section with new version, use next command to read all changes.

Create a branch release/#.#.# and create a pull request to branch master with your commit:

git commit -am "Release v#.#.#"

Review by your peers, test the docker file and merge to master.

git checkout master
git merge --no-ff RELEASE_BRANCH

Add comment Release v#.#.#.

Create tag

Add a tag on the commit in branch master with your release. When adding tag, be sure to update default.xml

git tag v#.#.#
# Push your tags
git push --tags
# Add tags for all repo
.venv.erplibre/bin/repo forall -pc "git tag ERPLibre/v#.#.#"
make tag_push_all

Generate and push docker

Important to generate container after push git tags, otherwise the git version will be wrong.

When building your docker with script

make docker_build_release

List your docker version

docker images

You need to push your docker image and update your tag, like 1.0.1:

docker push technolibre/erplibre:VERSION

Do a release on github

Visit https://github.com/ERPLibre/ERPLibre/releases/new and create a release named v#.#.# and copy information from CHANGELOG.md.

TIPS

Compare repo differences with another ERPLibre project

To generate a list of differences between repo git commit

./script/git/git_change_remote.py --sync_to /path/to/directory

Semantic versioning

<valid semver> ::= <version core> "-" <pre-release> "+" <build>