ConcourseとGithubとの相性まとめ
ConcourseとGithubについてまとめました
はじめに
ConcourseをメインのCIツールとして利用した場合のGithubとの相性についてまとめました。 検証もしながらすこしづつ更新していきます。
Trigger
Githubのレポジトリーをモニターして、コミットをトリガーをするのは簡単にできます。
Jobs内のtrigger: true
をつけることで、Concourseがアップデートを検知したタイミングで、タスクを走らせることができます。
1resources:
2- name: upstream-source-code
3 type: git
4 source:
5 uri: https://github.com/<project>/<repo>
6 branch: <branch>
7jobs:
8- name: Code updated
9 plan:
10 - get: upstream-source-code
11 trigger: true
12 - task: something
13 // Do Something
Push
これも簡単にできます。
ポイントがoutputs
に値をいれることで、最終的にレポジトリーへのpushがされます。以下を参照。
https://github.com/concourse/git-resource#out-push-to-a-repository
Githubにpushに使うprivate_keyなどは変数化して外部のCredential管理機能に使うとよさそう。
https://concourse-ci.org/creds.html
1resources:
2- name: source-code
3 type: git
4 source:
5 uri: https://github.com/<project>/<repo>
6 branch: <branch>
7 private_key: ((sourceKey))
8 private_key_user: ((sourceUser))
9jobs:
10- name: merge-upstream
11 plan:
12 - get: source-code
13 - task: commit-push
14 config:
15 platform: linux
16 image_resource:
17 type: docker-image
18 source:
19 repository: alpine/git
20 tag: latest
21 inputs:
22 - name: source-code
23 outputs:
24 - name: source-code
25 run:
26 path: /bin/bash
27 args:
28 - -c
29 - |
30 set -x
31 cd source-code
32 git config --global user.name "concourse"
33 git config --global user.email "concourse@local"
34 // Modify Code
35 git add .
36 git commit -m "Commit and Push"
Pull Request
正式なものではないですが、以下のリソースがそれにあたるもののようです。
https://github.com/telia-oss/github-pr-resource
Status Badge
あります。
Readmeによく含まれるのですが、特定のジョブの最新のステータスを表示するもの機能です。
たとえば、Spring PetclinicのReadmeなどに含まれる、このbuild/passing
などと表示されている機能です。
さすがにこの機能はないかと思っていたところ、ちゃんとAPIが用意されていました。 以下のAPIドキュメントに紹介されていますが、パイプライン全体の状態だけでなく、各Jobのステータスも拾えるようになっています。