7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Actions のワークフローを静的解析する actionlint を使ってみたよ

Posted at

はじめに

GitHub CI/CD実践ガイドにも紹介されている actionlint を実装して使ってみました。

actionlintについて

actionlint は ドッグ さんという方が作った GitHub Actions のワークフローファイルを静的解析してくれるツールです。YAMLを書いているとあるあるな、しょーもないミスを早期検知してくれるものになります。

実装

  • 弊チームでは、YAMLの拡張子は .yml で統一しているので .yaml は対象にしていません
  • シェルチェックの一部を SHELLCHECK_OPTS キーワードで対象外にしています
.github/workflows/actionlint.yml
name: actionlint

on:
  pull_request:
    paths: '.github/workflows/*.yml'
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  actionlint:
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v4
        with:
          sparse-checkout: .github/workflows

      - name: Run actionlint
        env:
          SHELLCHECK_OPTS: --exclude=SC2129,SC2086 
        run: |
          bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
          ./actionlint -color
        shell: bash
  • デフォルトでは Self-Hosted Runner のラベル名がバリデーションに引っ掛かるので、対象外にしています
  • この設定ファイルは $ actionlint -init-config で生成できます
.github/actionlint.yml
self-hosted-runner:
  # Labels of self-hosted runner in array of strings.
  labels: [label1, label2, label3]
# Configuration variables in array of strings defined in your repository or
# organization. `null` means disabling configuration variables check.
# Empty array means no configuration variable is allowed.
config-variables: null

使ってみて

  • CI上で一瞬で静的解析してくれる(めっちゃはやい)
  • go をインストールすればローカルでも実行可能なので、ミスの早期発見ができる(ubuntu_latest のタイポとか)
  • ワークフローの実行を待たずとも早い段階でミスに気が付けるので、無駄な待ち時間が減った(今までは手動実行してエラーログ見てやっとミスに気が付いていたのでかなりありがたい)
  • 既存のワークフローファイルにもフィードバックが返ってきたので、あんまりよくない書き方に気が付くことができた

おわりに

総じてめっちゃ便利なのでおすすめです。繰り返すしょーもないミスにイライラしなくなる!はず!!

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?