Continuous Integration
Before reading this page it's recommended to understand the Git Flow, please read that page first.
Based on the Git Flow a CI has been setup to automatically perform certain tasks at certain moments during the development cycle. On this page you can see which workflows are currently defined, when they're triggered and what the actions are that it will take upon being triggered.
Test on PR
Trigger
This flow is triggered on two occasions:
- PR to all
Action
It runs a simulation using the configuration file found at
config/configuration.yaml
. Only when that simulation runs successfully will
the CI be successfull, otherwise it will fail. This is a good indicator to see
if the changes to the simulation repository have affected the simulator to the
point of it not being able to run. Do pay attention though since it can still
pass without performing actions, that is something that can be improved in the
future. (checking if the simulation actually performed steps and printed a
result other than 0)
Publish docs
Trigger
This flow is triggered on:
- Push to
dev
, only when changes happened todocs/**
Action
Git checkout the almanak-co/docs-internal
repository and perform a git tree
pull that will overwrite all the existing files of this repository to the
correct folder in that project. After which it will push those changes back to
the docs-internal
Github repository. Once that is done the docs-internal
repository will have a CI triggered to publish the docs.
Build on Dev
Trigger
This flow is triggered on:
- Push to
dev
Action
Rebuild the docker container that contains the simulator and publish it to the
Google Artifact registry. Right now it tags it to latest
automatically. Later
on we need to versionise this properly.
And republish the simulation service to Firebase Functions
Build on Main
Trigger
This flow is triggered on:
- Push to
main
Action
- Rebuild the docker container that contains the simulator and publish it with
the tag
dev
to the Google Artifact registry on the Production GCP project. - Republish the simulation service to Firebase Functions on the Production GCP project.
- Publish the latest docs through a workflow call to the "Publish docs" CI.
Release
Trigger
This flow is triggered on:
- Tag
Action
- Rebuild the docker container that contains the simulator and publish it with
the tag
latest
to the Google Artifact registry on the Production GCP project. - Republish the simulation service to Firebase Functions on the Production GCP project.
- Publish the SDK to the Google Artifact Registry on the Production GCP project.
- Publish the CLI to the Google Artifact registry on the Production GCP project.
- Tag the version of the docs to the version name of the tag.