There are some pipliens to make sure everything work fine, here is an idea about them:
1 - Build
On Pull Request, and Push to development branch: It will do a clean install of node dependencies, cache/restore them to make the process faster, and build the source code using yarn build:app
.
2 - CICD Docker
On Push to development branch, and on Release published: It will build and push a new docker image based on project release tag.
We are using VERSION, and NETWORK arguments in this workflow that will be propagated into the builds config, The values of those arguments could be as follows:
NETWORK = "dev" | "qa" | "test" | "main" (default: dev)
VERSION = "release tag or the first 7 chars of commit hash"
NOTE: In case of release, the NETWORK value follows the tag type by default, e.g. if the release tag contains qa so the NETWORK will be
"qa"
as well, also"dev"
only works with PUSH to the development branch. Check Releasing section for more details about tag types
3 - CICD
On Push to development branch: It will do a clean install of node dependencies, cache/restore themas in Build workflow, build the source code and deploy to staging server by Copying the artifacts using ssh to play.dev.grid.tf
.
4 - Lint
On Pull Request, and Push to development branch: It will check if the code formatted well using Eslint and Prettier