- Template based or plain K8s manifests is stored in the neco-apps repository.
- CI runs tests on a fully virtualized data center called
dctest
. - CI creates a pull request to merge
main
intostage
branch after all tests have passed. - Argo CD watches changes of this repository, then synchronize(deploy) automatically when new commit detected.
- After the deployment process finished, Argo CD sends alert to the Alertmanager where is running on the same cluster. Then it notifies to Slack channel and/or Email address.
This repository uses Google Compute Engine instance for GitOps testing. The instances are automatically created and deleted by CircleCI depending on the job contents.
The GCP instance name is neco-apps-<CircleCI Build Number>
. If the job succeeds, the corresponding GCP instance will be deleted immediately. When the job failed, the GCP instance remains for a while.
This repository has 6 CircleCI workflows: main
, ceph
, daily
, manual-dctest-with-neco-feature-branch
, release-tag
and production-release
.
main
workflow is used for testing feature branch of neco-apps
. This consists of the following jobs.
job name | description | target branch |
---|---|---|
test |
Go unit tests | all branches |
bootstrap |
Bootstrap test on GCP instances | all branches except for stage , release |
upgrade-stage |
Upgrade test for stage branch (staging env) |
all branches except for stage , release |
upgrade-release |
Upgrade test for release branch (production env) |
all branches except for release |
create-pull-request-stage |
Create PR to stage, then trigger create-pull-request-stage job. |
main |
create-pull-request-stage
is executed only if other jobs succeeded.
ceph
workflow is used for testing feature branch of neco-apps
especially in regard to Ceph and Rook. This consists of the following job.
job name | description | target branch |
---|---|---|
ceph |
Test for Ceph and Rook | all branches except for stage , release |
daily
workflow is executed daily to maintain GCP environment.
job name | description | target branch |
---|---|---|
clean-dns |
Clean DNS entries for dev-ne.co domain |
main |
reboot |
Reboot test during bootstrap job |
main |
manual-dctest-with-neco-feature-branch
workflow is not executed automatically. This can be triggered from Web UI.
This consists of the following job.
job name | description | target branch |
---|---|---|
bootstrap-with-neco-branch |
Bootstrap test with neco 's feature branch |
all branches except main , stage , release , op-release-* and op-stage-* |
bootstrap-with-neco-branch
is tested with neco
's feature branch which is the same name as neco-apps
's target branch name.
For example, when foo-bar
branch of neco-apps
, it's tested with foo-bar
branch of neco
.
release-tag
workflow is used for pushing release tag to stage HEAD.
This workflow is executed only when a PR is merged to stage branch.
production-release
workflow is used for releasing neco-apps
to a production environment.
This workflow is executed only when a release-*
tag is created. And it creates a pull request for the release.
See details of the deployment step in deploy.md.
- stage: watch
argocd-config/overlays/stage<num>
in stage HEAD branch. All changes ofstage
are always deployed to staging cluster. - prod (tokyo0, osaka0, ...): watch
argocd-config/overlays/{tokyo<num>,osaka<num>}
in release HEAD branch. To deploy changes for a production cluster.