Tracking of currently running services on all environments.
<service-name>.version files contain the service version as file content.
Archive of previous production release parent and service versions.
Features / 1
Jenkins will manipulate this directory structure and automatically commit the changes (no human intervention).
Version stability status.
Features / 2
README.md regeneration exposing all current versions in a human readable form.
Features / 3
Release Procedures
STAGING release
Execute nightly build and release a test release: MAJOR.MINOR.0-<timestamp>.<git.commit.hash>.
Trigger downstream Jenkins job after deploy job that updates <service_name>.versionfile of the released service with the new version in phoenix-versions repo.
Commit changes in phoenix-versions.
New PROD release / 1
1. Manually trigger a special Jenkins job that mirrors the current staging environment:
Rebuild and push on or copy built Docker images from STAGING to PROD ECS repositories.
Retag or tag docker images with versions in format: MAJOR.MINOR.0.
Tag in Git with new parent version.
After deploy job trigger phoenix-versions job.
New PROD release / 2
2. On triggered phoenix-versions job:
Create a new directory prod/<new_parent_version>.
Copy <service_name>.version files from staging directory to the new directory.
Edit the copied files by removing PRERELEASE component.
Generate README.md listing service versions of the new PROD release.
...
New PROD release / 3
2. On triggered phoenix-versions job:
...
Change latest.version file with the name of the new parent release.
Regenerate main README.md with the new latest PROD release versions.
Commit and push changes to the repo.
PROD hotfix / 1
1. Execute special hotfix Jenkins job with parameters-service name and new version with format: MAJOR.MINOR.PATCH:
After service hotfix, build and tag Docker image with new version.