okaryo.log

GitHubActionsで特定のブランチからのPRにジョブを実行しないようにする | okaryo.log

GitHubActionsで特定のブランチからのPRにジョブを実行しないようにする

    #GitHubActions#GitHub#CI/CD

はじめに

最近、依存ライブラリの自動アップデートにrenovateを使い始め、このブログのリポジトリにも適用した。

このブログはFirebaseHostingを利用しており、リポジトリにPRを作成するとプレビューチャネルがFirebaseHostingにアップロードされるようにGitHubActionsのワークフローを設定している。しかし、renovateによって作成されるPRについてもこのワークフローが実行されてしまい、FirebaseHostingのストレージがプレビューチャネルによって圧迫され、無料枠を超えることがあった。

一時的にストレージの無料枠を超えてしまうと以降の本番へのデプロイができなくなってしまうため、プレビューチャネルを削除する必要がある。この手間が面倒だったため、renovateからのPRについてはプレビューチャネルへのアップロードを実行しないようにしたかった。

設定方法

これを設定するには、特定のブランチからのPRではジョブを実行しない、または特定のブランチからのPRのみを実行するように制御すれば良い。これを実現するための構文にはif条件と式がある。

以下の例では、github.head_refでPRのソースブランチ名を取得し、それがrenovate/で始まっていればジョブを実行しないようにしている。

name: Deploy to Firebase Hosting on PR

on:
  pull_request:

jobs:
  build_and_preview:
    if: ${{ !startsWith(github.head_ref, 'renovate/') }}
    runs-on: ubuntu-latest
    steps:
      ...(略)...

今回は式の中でstartsWithを使ったが、これ以外にもendsWithcontainsなどいろんな関数がGitHubActionsでは用意されている。ユースケースに応じて使い分けてみてほしい。

おわり

これでrenovateがPRを作成してもプレビューチャネルへのアップロードジョブが実行されないようになった。

とはいえ、ライブラリをアップデートしても動作が正常かどうかを確認しなくてはならないので、ローカルで確認したりテストを書いておくなどの対応は必要だろう。


関連記事
最新記事
プロモーション

This site uses Google Analytics.