🐈

Ansible-lintとyamllintをJenkinsで動かしてreviewdogで通知する

2022/01/28に公開

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