GitHubでforkしたリポジトリはデフォルトでActionsがdisableです

はじめに

この記事はGitHubでforkしたリポジトリにて、GitHub Actionsを動かす方法を記録、共有するためのものです。

先に結論だけ

  • GitHubでActionsを設定したリポジトリをforkした場合、デフォルト設定ではアクションは不許可になっています。
  • Actionsを動かす場合、forkしたユーザーが許可しなければなりません。
  • これは悪意のあるアクションを防ぐためです。

GitHub Actionsとは

GitHub Actionsとは、GitHubが提供する仮想環境サービスです。

ユーザーはYAML形式で実行環境とアクションを記述し、一連のワークフローを作成します。特定のブランチにpushがあった、PullRequestが作成されたなどのイベントを引き金に、このワークフローが稼働します。

  • プルリクエストが作成されるとテストを実行する
  • mainブランチへのマージがあるたびにnpmへリリースする
  • 静的ファイルの更新のたびにS3へファイルをアップロードする

といった、CI/CDのための自動化処理が可能になります。

ワークフローはリポジトリ内で他のソースコードと同様に管理されます。そのため、チームメンバーで共有、改善ができます。

forkしたリポジトリのActions設定

公開リポジトリをフォークすると、デフォルトではActionsの実行が不許可になっています。fork元のリポジトリとおなじアクションを実行したい場合、ユーザーが許可しなければなりません。

Settingタブ → Actions → Actions Permissionsを表示し

  • Allow all actions
  • Allow select actions

のいずれかを選択しSaveします。

Allow select actionsにはチェックボックスがあります。このチェックボックスは

の実行をそれぞれ許可します。

なぜデフォルトが不許可なのか

Actionsは汎用的な仮想環境サービスです。そのためCI/CD以外の処理もワークフローとして記述できてしまいます。GitHubは目的外でのActionsの利用を規約で禁止しています。

ワークフローは様々なトリガーで実行され、時刻もトリガーになります。デフォルトで実行が許可されていたら、forkしただけでワークフローが実行されます。

悪意のあるユーザーがリポジトリに規約違反のワークフローを混入した場合、デフォルトで実行許可があるとforkしたユーザーも利用規約違反となります。こうした問題を回避するために、Actionsはデフォルトで不許可になっています。ユーザーは実行許可を出す前に、ワークフローの目的と内容をチェックしなくてはいけません。

以上、ありがとうございました。