Closed shekohex closed 1 year ago
I understand that the purpose here is to decrease deployment time by skipping lints and tests for dev builds. However I think thats a very bad idea, because there will inevitably be lint failures or test failures, and we wont catch them during PR review. So instead they need to be fixed when merging to main branch, and by that time it will cost much more time because another person is doing the fixes, and context from the original PR is missing. So there might be some speedup in getting new changes deployed, but at the cost of more effort to fix things later.
I also dont see the need to create release tags for development deployments. It would be enough to create a new CI action for pushes/merges to develop branch, which automatically builds and publishes it. This can use a hardcoded Docker tag like :dev
or similar, and include a version name from git describe
like v0.4.0-97-g2568a72
(latest tag + commit hash). If we run tests and other checks when merging PRs, then this deployment action doesnt need to run them, and only needs to run the build.
Closed in favor of #482
Overview
We aim to achieve a ~%100 deployment automation here, from the PR gets merged in the develop branch to the creating a new release and finally deployed on the server(s).
The Automation Flow
Development deployment flow (
develop
branch)develop
branch.Target time for all CI steps from opening a PR: ~10min. Target time for all CI steps from creating a new release tag: ~20min.
Production deployment flow (
main
branch)develop
intomain
branch.develop
main
we double-check everything and then we merge it (manually)Target time for all CI steps from opening a PR: ~1hour. Target time for all CI steps from creating a new release tag: ~20min.
Checklist Tasks
lints.yml
For Clippy & Rust formatbuild.yml
For building the relayer on (Linux, macOS)tests.yml
For Running the relayer tests on Linux.image.yml
For building and publishing the Docker image + config filespublish-rust-docs.yml
For publishing the docs.deploy.yml
for running the deployment scripts.main
branch.develop
branch.main
branch.deploy.sh
script on the relayer boxes.