1
1

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備忘録:Goファイルに変更があった場合のみジョブを実行するように設定を修正してみた

Posted at

はじめに

GitHub Actions を利用した CI/CD パイプラインの設定では、効率的なジョブトリガーの設計が重要です。

特に、main ブランチへのすべてのプッシュでワークフローをトリガーする設定では、不要なジョブが実行され、リソースの浪費や実行時間の増加につながることがあります。

本記事では、特定のファイルやディレクトリに変更があった場合のみワークフローをトリガーする方法を中心に、無駄を省き、効率的な運用を実現するための設定方法について解説します。

少し困っていたこと

以下の設定では、main ブランチに対するすべての変更(ファイルの種類や内容に関係なく)でワークフローがトリガーされます。

on:
  push:
    branches:
      - main

そのため、不要なトリガーが発生し、この先、ちょっとした変更を加えただけで、全てが実行されて少しだけストレスでした

問題点:全ての変更でトリガーされる

この設定では、main ブランチに対するすべての変更(ファイルの種類や内容に関係なく)でワークフローがトリガーされます。その結果、以下の問題が発生する可能性があります:

問題点

  1. 非効率なリソース消費

    • 不必要なジョブ実行により、GitHub Actions の実行時間や料金が浪費されます。
  2. 無関係な変更でも実行される

    • 例えば、ドキュメントやREADMEファイルの変更でもジョブが実行され、効率が低下します。
  3. ジョブの実行が遅くなる

    • 不要な実行が増え、並列実行数の制限に達することで、重要なジョブの実行が遅れる可能性があります。
  4. ビルド・デプロイの無駄

    • アプリケーションに関係のない変更(例: ドキュメント更新など)でもDockerイメージのビルドやECRへのプッシュが行われ、無駄なリソース利用が発生します。

変更前の.github/workflows/main.ymlのファイルについて

name: Push to ECR

on:
  push:
    branches:
      - main

jobs:
  build-and-push:
    runs-on: ubuntu-latest

    steps:
      # リポジトリのクローン
      - name: Checkout code
        uses: actions/checkout@v3

・・・(省略)
  • 設定内容
    main ブランチへのすべてのプッシュイベントでワークフローがトリガーされる設定。

  • 動作
    ファイルの種類や内容に関係なく、すべての変更でジョブが実行される。

変更後の.github/workflows/main.ymlのファイルについて

name: Push to ECR

on:
  push:
    branches:
      - main
    paths:
      - '**/*.go' # Goファイルに変更があった場合のみ実行

jobs:
  build-and-push:
    runs-on: ubuntu-latest

    steps:
      # リポジトリのクローン
      - name: Checkout code
        uses: actions/checkout@v3

・・・(省略)
  • paths オプションの追加
    特定のファイルパターン(**/*.go)が指定されました。

  • 動作の変更
    main ブランチへのプッシュ時に Goファイル(.go に変更がある場合のみワークフローがトリガーされるようになりました。

変更後の設定について

上記のように変更する前は、テスト用のHTMLファイルを作成すると、すべての場合でGitHub Actionsがトリガーされていました。

Screenshot 2025-01-24 at 9.14.58.png

しかし、今回の設定変更によって、main.go ファイルの変更時のみGitHub Actionsがトリガーされるようになり、正しく設定が反映されていることを確認できました。

まとめ

ここまでお読みいただき、ありがとうございました!今回の実装は簡単でしたが、このような細かい配慮が非常に重要であると改めて実感しました。

インフラのコード化に向けた第一歩として、非常に重要なポイントです。この内容をまとめることで、より深い理解を得ることができました。

この記事が、誰かの技術的な支えになれば嬉しいです!

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?