🐈
Ansible-lintとyamllintをJenkinsで動かしてreviewdogで通知する
reviewdog と連携させて、 PR で lint 結果が見えると PR レビューが捗って便利ですよね。
この記事について
Jenkinsを CI として使っている環境での Ansible Lint x reviewdog の連携方法について記載します。
ハマりポイント
Ansible Lint には、 -p
という pep8 フォーマットで出力するオプションがあります。
また reviewdog には、 pre-defined なフォーマットとして -f pep8
があるので、何も問題なく使えそうにみえます。
しかし、 Ansible Lint 側の出力が厳密に pep8 ではないようで、カスタムフォーマットとして -efm="%f:%l: %m"
を設定する必要がありました。
Shellscript on jenkins
GitHub Pull Request Builder プラグインと連携させるときの Jenkins shellscript 。
#!/bin/sh
# reviewdogのダウンロード
curl -sfL https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh | sh -s
# Ansible-lintの実行
ansible-lint -p site.yml > ansible-lint_result.txt
# yamllintの実行
yamllint -f parsable site.yml > yamllint_result.txt
# reviewdogの実行
export CI_PULL_REQUEST=${ghprbPullId}
export CI_REPO_OWNER=YOUR_ORG_NAME # 適切に変更してください
export CI_REPO_NAME=YOUR_REPOSITORY_NAME # 適切に変更してください
export CI_COMMIT=${ghprbActualCommit}
export REVIEWDOG_GITHUB_API_TOKEN=${NHN_NAVER_DEV_ADMIN_GITHUB_TOKEN}
export GITHUB_API=YOUR_GITHUB_API_URL # 適切に変更してください
cat ansible-lint_result.txt | ./bin/reviewdog -name=ansible-lint -efm="%f:%l: %m" -reporter=github-pr-review
cat yamllint_result.txt | ./bin/reviewdog -name=yamllint -f=pep8 -reporter=github-pr-review
Discussion