-
Notifications
You must be signed in to change notification settings - Fork 31
Akvo Flow deployments
We're using trunk based development with short-lived feature branches.
- Any master build is a candidate build.
- We test master in UAT2.
- We promote UAT2 to UAT1 and dark production.
- Final test in UAT1.
- Flip production traffic to UAT1 version.
A deployed version can be live or dark.
A live version is the one that is serving our users when they visit https://<org>.akvoflow.org
A dark version is a deployed version that does not get traffic, unless it was accessed via a different URL. A dark URL follows this pattern https://VERSION_ID-dot-SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com
. Akvo Flow uses only 1 service (default
).
More info at: Google App Engine Overview
Our CI pipeline follows the reaction to changes pushed to our git repository:
Any commit made to a feature branch is built and tested. We deploy Akvo Flow core classes to Clojars in order to have them available for testing Flow services.
When a feature branch is merged into master branch our CI pipeline will be:
- Build and test
- Deploy core classes to Clojars
- Deploy the built version to UAT2 live, accessible via: https://uat2.akvoflow.org
This instance can be used for the developer to integration testing with all the rest of the changes
When we are happy with the code running in UAT2, we will promote the build to UAT1 and dark instances of production. Note that we just deploy whatever is running in UAT2.
For this:
- Make sure that your local git is up to date with latest master version.
- Run the
./ci/promote-test-to-prod.sh
and follow the instructions.
The CI pipeline will be:
- Skip
- Build and test
- Deployment to Clojars
- Deploy the UAT2 version to UAT1 live (accessible via: https://uat1.akvoflow.org)
- Deploy the UAT2 version to all production instances in dark
- If we want to test a particular bug-fix/feature in a production instance we must use the dark URL pattern
This allows us to do a regression testing in UAT1, and testing in dark production instances if required.
Once we are happy with UAT1, we will make the new version available to all partners.
For this:
- Make sure that your local git is up to date with latest master version.
- Run the
./ci/flip-production-traffic.sh
and follow the instructions.
You will be asked what version to flip the traffic to, defaulting to the version running in UAT1.
The CI pipeline will be:
- Skip
- Build and test
- Deployment to Clojars
- Deployment to UAT instances
- Migrate the traffic of all production instances to the UAT1 version
In order to rollback to the previous version, you need to execute the ./ci/flip-production-traffic.sh
script and pick up the version that you want to revert to.
About Akvo Flow
Akvo Flow API
Developer Guides
- Deployments
- Development tools
- Android emulator setup
- Creating New Dashboard Instances
- Disabling Dashboard Instances
- Adding Translations to Dashboards
- Setup your development environment with IntelliJ IDEA
- Setup your development environment on Windows OS
Technical Specification
Regression Tests