GitLab CIの設定ファイルを手元でLintする
プライベートレポジトリ、CIツールが無料で使い放題ということで、最近GitHubからGitLabへお引越ししました。
https://gitlab.com/sei40kr
Travis CIからGitLab CIに引っ越すにあたって travis lint
でできていた設定ファイルのLintがGitLabだとCLI上から行えなかったので、シェルスクリプトを書きました。
結論
python
, jq
がインストールされている必要があります。
#!/bin/sh
linter_api_url='https://gitlab.com/api/v4/ci/lint'
linter_dump_conf() {
python -c "import json,sys;print(json.dumps({'content':sys.stdin.read()}))" < .gitlab-ci.yml
}
curl -sH 'Content-Type: application/json' "$linter_api_url" -d "$(linter_dump_conf)" | jq
これを gitlab-ci-lint.sh
のような名前で、 .gitlab-ci.yml
と同じディレクトリに設置します。
後は実行権限を与えて動かすだけ。
chmod +x gitlab-ci-lint.sh
./gitlab-ci-lint.sh
実行結果
オマケ: Travis CIと比較したGitLab CI
- 標準機能は少ないですが、Dockerコンテナの知見やシェルの知識があれば細かくジョブを記述できます。Travis CIが grunt.js 寄りで、GitLab CIが gulp.js のようなイメージです。
- 流石にジョブの開始までが早いです。いかに並列実行でジョブを高速化させるかは腕の見せ所です。