Skip to content

Latest commit

 

History

History
91 lines (60 loc) · 5.72 KB

cicd.md

File metadata and controls

91 lines (60 loc) · 5.72 KB

CI/CD

Overview

overview

  • 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 into stage 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.

GCP instance

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.

CircleCI Workflow

This repository has 6 CircleCI workflows: main, ceph, daily, manual-dctest-with-neco-feature-branch, release-tag and production-release.

main workflow

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

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

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

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

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

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.

CD of each cluster

See details of the deployment step in deploy.md.

  • stage: watch argocd-config/overlays/stage<num> in stage HEAD branch. All changes of stage 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.