Continuous Integration in Neco is served by CircleCI workflow.
neco-updater
service works as Continuous Delivery to update components in the boot server automatically.
- Check out
main
branch then merge changes intorelease
branch. - Run dctest but fewer test cases from regular dctest.
- If dctest is passed, cybozu-neco pushes changes to
release
branch to remote branch in github.com/cybozu-go/neco. - Also, cybozu-neco also applies and pushes a tag
test-YYYY.MM.DD-UNIQUE_ID
to the remote.
Regular test cases of dctest are also run in parallel.
Same workflow process but it works on release
branch. This is run as stability aspects.
- Choose a tag in release page which starts with
test-
of what you want. - Create a new tag which has
release-
prefix. Note that date and UNIQUE_ID are same as before.$ git tag release-YYYY.MM.DD-UNIQUE_ID test-YYYY.MM.DD-UNIQUE_ID $ git push origin --tags
- CI workflow builds a debian package
neco-YYYY.MM.DD-UNIQUE_ID.deb
and uploads it to GitHub Release. neco-updater
on staging starts CD flow described below.
- Choose a pre-release tag in release page which starts with
release-
of what you want. - Uncheck
This is a pre-release
, then clickPublish release
. neco-updater
on production starts CD flow described below.
- A service
neco-updater
detects a new release of GitHub Release on neco repository. - If new release exists,
neco-updater
add information to the etcd key<prefix>/current
. neco-worker
to updateneco
package, then restartneco-worker
service.neco-worker
installs/updates container images, and sabakan contents.
-
tag:
test-YYYY.MM.DD-UNIQUE_ID
It is a candidate release version which is passed dctest.
-
tag:
release-YYYY.MM.DD-UNIQUE_ID
It is an already released version with
neco
Debian package.neco-updater
on staging finds a new pre-release of them.neco-updater
on production finds a new release of them.
-
A bot GitHub Account for handling CI jobs using GitHub.