The Geode Native Concourse pipeline is actually two Concourse pipelines. The primary release pipeline builds the release artifacts for a given branch, like develop, release or support branch. The secondary pull request (pr) pipeline builds the same artifacts as the release pipeline but for pull requests and without actually releasing or publishing anything.
The pipeline is fully self updating and can easily be bootstrapped into a properly configured Concourse deployment. Concourse configuration requires TBD. Changes to the ci
source directory will results in auto updates to the pipelines.
Because Concourse workers aren't available on all platforms and have issues with resource sharing this pipeline utilizes external builders. These builders are currently Google Compute VMs that are launched on demand for each build.
The pipeline can be installed or reconfigured via the set-pipelin.sh
shell script.
./set-pipeline.sh --help
Given the local repository looks like the following:
$ git remote get-url origin git@github.com:some-user/geode-native.git $ git branch --show-current wip/some-branch
The most typical usage should require nothing more than the Concourse target, unless that happens to be named “default”. Everything else has reasonable defaults based on the currently checked out branch.
$ ./set-pipeline.sh --target=some-concourse
Executes fly
from the path setting pipeline to target some-concourse
for GitHub owner some-user
repository geode-native.git
. Pipeline names will be some-user-wip-something
and some-user-wip-something-pr
.
Sometimes you will have to support multiple versions of Concourse fly
or need to fetch sources via https.
$ ./set-pipeline.sh \ --fly=/path/to/fly \ --target=some-concourse \ --github-owner=other-user
Executes fly at /path/to/fly
setting pipeline to target some-concourse
for GitHub owner other-user
repository geode-native.git
. Pipelines name will be some-user-wip-something
and some-user-wip-something-pr
.
This Concourse pipeline YAML is rendered using ytt
. Depends on output from git
and gcloud
.
ytt
v0.28.0+git
v2.25.2+yq
v4.6.0+ (optional for set-pipeline script)gcloud
SDKhelm install concourse concourse/concourse
helm upgrade concourse concourse/concourse --set web.service.api.type=LoadBalancer,concourse.web.externalUrl=http://1.2.3.4:8080
kubectl create secret generic gcr-json-key --from-literal "value=$(cat XXX.json)" --namespace=concourse-main
kubectl create secret generic github-access-token --from-literal "value=XXX" --namespace=concourse-main
kubectl create secret generic github-private-key --from-literal "value=$(cat XXX)" --namespace=concourse-main
gcloud
, ytt
, and fly
version issues.