ロゴ
clock2020.01.06

GitHub ActionsでDanger+SwiftLint

DEV

GitHub ActionsでDanger + SwiftLintで自動コードレビューできるようにしたので記事にしました。

Dangerとはなんぞやという人はこちらをどうぞ

Motivation

そもそもなぜCircleCIとかBitriseではなく、GitHub ActionsでDangerを動かすのが良いのかというとアカウントを用意しなくていいというところ。 今まで外部CIを使うと、Bot用のアカウントを用意するか自分のGitHubアカウントを使ってBotにコメントさせるかで全然イケてなかった。

その点GitHub Actionsはアカウントを用意せずにコメントを残すことができるのでよい。

Workflow

ワークフローは以下のような感じ

.github/workflows/danger_swift.yml
name: Danger Swift

on: [pull_request]

jobs:
  danger:
    name: Danger
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@master
      - name: Setup Ruby
        uses: actions/setup-ruby@v1
        with:
            ruby-version: '2.x'
            architecture: 'x64'
      - name: Setup Danger
        run: |
          gem install danger danger-swiftlint
      - name: Run Danger
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: danger

GitHub Actionsのドキュメントにも書いてありますが${{ secrets.GITHUB_TOKEN }}は自動的に生成されます。

DangerはGitHub Actionsに対応しているのでdangerのgemをインストールしてコマンドをrunさせるだけで完成です。

Dangerfile

Dangerfileは今回あまり関係ないので説明は省きますが、Rubyで書けるので以下のように設定して使ってみました。

Dangerfile
# Warn when there is a big PR
warn("Big PR, try to keep changes smaller if you can :cry:") if git.lines_of_code > 1000

# Notify important file changes
important_files = %w(Podfile.lock Gemfile.lock Cartfile.resolved project.yml)

git.modified_files.map do |file|
  if important_files.include?(file)
    message "#{file} has changed. If you agree, ignore this comment."
  end
end

# Swiftlint
github.dismiss_out_of_range_messages
swiftlint.config_file = '.swiftlint.yml'
swiftlint.lint_files inline_mode: true

おわりに

Danger Swiftを使いたい場合はGitHubのMarketplaceにdanger/swiftのActionsが用意されているので使うとラクっぽい

\ SHARE /

プロフィール画像
くま

フロントエンドエンジニア👨‍💻サーバサイドもちょっと書けるよ

イケてるエンジニア目指してるよ


最近は昆布と旅行雑誌🏄‍♀️に絶賛ハマり中