GitHub Actions のセルフホスト ランナーについて
GitHub Actions を使用すると、ソフトウェア開発ワークフローのすべてのフェーズを自動化することにより、企業のユーザーは生産性を向上させることができます。 詳しくは、「エンタープライズの GitHub Actions について」をご覧ください。
GitHub Actions を使用すると、開発者はアクションと呼ばれる個々のタスクを作成して組み合わせて、カスタム ワークフローを作成できます。 ジョブを実行する独自のランナー マシンをホストでき、このマシンはセルフホスト ランナーといいます。 セルフホステッド ランナーは、物理または仮想にでき、コンテナー内、オンプレミス、またはクラウドに配置できます。 ランナーマシンは、GitHub Actionsのセルフホストランナーアプリケーションを使ってGitHub Enterprise Cloudに接続します。 すべてのランナーで Linux、Windows、macOS を実行できます。 詳しくは、「自己ホスト ランナーの概要」を参照してください。
または、GitHub ホスト ランナー マシンを使用できます。 GitHub ホスト ランナーは、このガイドの範囲外です。 詳しくは、「GitHub ホステッド ランナーの使用」を参照してください。
このガイドでは、Enterprise 内の GitHub Actions 用のセルフホスト ランナーに一元管理アプローチを適用する方法について説明します。 このガイドでは、次のタスクを行います。
- Enterprise 内で実行できるアクションと再利用可能なワークフローを制約する制限付きポリシーを構成する
- Enterprise にセルフホスト ランナーをデプロイする
- Enterprise で使用できるランナーへのアクセスを管理するためのグループを作成する
- 必要に応じて、ランナーを使用できるリポジトリをさらに制限する
- 必要に応じて、セルフホステッド ランナーを自動的にビルドおよびスケーリングするには、Actions Runner Controller (ARC) を使用します。 詳しくは、「Actions Runner Controller について」を参照してください。
また、セルフホスト ランナーを監視およびセキュリティで保護する方法、ランナー マシン上のソフトウェアをカスタマイズする方法に関する追加情報もあります。
このガイドを完了すると、Enterprise のメンバーは、セルフホスト ランナー マシン上で GitHub Actions からワークフロー ジョブを実行できるようになります。
前提条件
-
環境内でセルフホステッド ランナーとして使用するマシンにアクセスできる必要があります。
-
Enterprise は少なくとも 1 つの Organization を所有している必要があります。 詳細については、「Organizationについて」および「新しい Organization をゼロから作成」を参照してください。
1. GitHub Actions 用のポリシーを構成する
まず、すべての organization に対して GitHub Actions を有効にし、GitHub Enterprise Cloud の Enterprise 内で実行できるアクションと再利用可能なワークフローを制限するポリシーを構成します。 必要に応じて、Organization 所有者は、各 Organization に対してこれらのポリシーをさらに制限できます。
- GitHub の右上隅にあるプロフィール写真をクリックします。
- ご自分の環境に応じて、[Your enterprise] または [Your enterprises] をクリックし、表示するエンタープライズをクリックします。
- ページの左側にある Enterprise アカウントのサイドバーで、 [ポリシー] をクリックします。
- 「 ポリシー」で、[アクション] をクリックします。
- [ポリシー] で、 [すべての Organization に対して有効にする] を選択します。
- ローカル アクションおよび再利用可能なワークフロー、および GitHub によって作成されたアクションを有効にするには、 [Allow enterprise, and select non-enterprise, actions and reusable workflows](エンタープライズを許可し、非エンタープライズ、アクション、再利用可能なワークフローを選択する) を選び、 [GitHub によって作成されたアクションを許可する] を選びます。
- [保存] をクリックします。
Enterprise メンバーが使用できるアクションを制限する追加のポリシーを構成できます。 詳しくは、「エンタープライズで GitHub Actions のポリシーを適用する」を参照してください。
2. Enterprise のセルフホスト ランナーをデプロイする
次に、セルフホスト ランナーを Enterprise に追加します。 GitHub Enterprise Cloud により、ランナー マシンに必要なソフトウェアをインストールする手順が表示されます。 ランナーを配置した後は、ランナー マシンと Enterprise の間の接続を確認できます。
セルフホスト ランナーの追加
-
GitHub の右上隅にあるプロフィール写真をクリックします。
-
ご自分の環境に応じて、[Your enterprise] または [Your enterprises] をクリックし、表示するエンタープライズをクリックします。
-
ページの左側にある Enterprise アカウントのサイドバーで、 [ポリシー] をクリックします。
-
「 ポリシー」で、[アクション] をクリックします。
-
[Runners](ランナー) タブをクリックします。
-
[新しいランナー] をクリックし、 [新しいセルフホステッド ランナー] をクリックします。 1. 使用する自己ホスト ランナー マシンのオペレーティング システム イメージとアーキテクチャを選択します。
-
ランナーアプリケーションをダウンロードして、使用する自己ホストランナーのマシンにインストールする方法が表示されます。
自己ホストランナーのマシンでシェルを開き、表示順に従ってシェルコマンドを実行してください。
Note
Windows では、自己ホスト ランナー アプリケーションをサービスとしてインストールする場合は、シェルを管理者特権で開く必要があります。 また、
C:\actions-runner
を自己ホスト ランナー アプリケーション用のディレクトリとして使用し、Windows のシステム アカウントでランナー ディレクトリにアクセスできるようにすることをお勧めします。この指示に従えば、以下のタスクが完了します。
- 自己ホストランナーアプリケーションのダウンロードと展開。
config
スクリプトを実行して自己ホスト ランナー アプリケーションを設定し、GitHub Actions に登録します。config
スクリプトには、登録先の URL と、リクエストを認証してもらうための自動的に生成された時間制限付きのトークンが必要です。 トークンは1時間後に期限切れになります。- Windows では、
config
スクリプトから自己ホスト ランナーをサービスとしてインストールするかどうかも尋ねられます。 LinuxとmacOSでは、ランナーの追加を終えた後にサービスをインストールできます。 詳しくは、「自己ホストランナーアプリケーションをサービスとして設定する」を参照してください。
- Windows では、
- 自己ホストランナーアプリケーションを実行して、マシンをGitHub Actionsに接続します。
自己ホストランナーの追加に成功したことの確認
自己ホスト ランナーを追加する手順を完了すると、ランナーとその状態が の下に表示されます。
ジョブをランナーが受け付けるためには、自己ホストランナーアプリケーションが動作していなければなりません。 ランナー アプリケーションが GitHub Enterprise Cloud に接続されており、ジョブの受信準備ができたら、以下のメッセージがコンピューターのターミナルに表示されます。
√ Connected to GitHub
2019-10-24 05:45:56Z: Listening for Jobs
3. グループを使用してセルフホスト ランナーへのアクセスを管理する
ランナー グループを作成して、Enterprise に追加したランナーへのアクセスを管理できます。 グループを使用して、どの Enterprise がランナーで GitHub Actions からジョブを実行できるかを選択します。
GitHub Enterprise Cloud では、すべての新しいランナーがグループに追加されます。 ランナーは一度に 1 つのグループに含めることができます。 GitHub Enterprise Cloud の既定では、新しいランナーは "既定" のグループに追加されます。
-
GitHub の右上隅にあるプロフィール写真をクリックします。
-
ご自分の環境に応じて、[Your enterprise] または [Your enterprises] をクリックし、表示するエンタープライズをクリックします。
-
ページの左側にある Enterprise アカウントのサイドバーで、 [ポリシー] をクリックします。
-
「 ポリシー」で、[アクション] をクリックします。
-
[ランナー グループ] タブをクリックします。
-
[New runner group](新しいランナー グループ) をクリックします。
-
[グループ名] に、ランナー グループの名前を入力します。
-
Organization のアクセスのポリシーを選択するには、[Organization のアクセス] で [Organization のアクセス] ドロップダウンを選択し、 [選択した Organization] をクリックします。
-
Organization アクセス ポリシーのドロップダウンの右側にある をクリックします。
-
ランナー グループへのアクセス権を付与する対象の Organization を選択します。
-
必要に応じて、選択した Organization のパブリック リポジトリでグループ内のランナーを使用できるようにするには、 [パブリック リポジトリの許可] を選択します。
Warning
自己ホストランナーは、プライベートリポジトリでのみ利用することをおすすめします。 これは、ワークフロー内でコードを実行する pull request を作成することで、パブリック リポジトリのフォークによって、自己ホスト ランナー マシン上で危険なコードが実行される可能性があるからです。
詳しくは、「自己ホスト ランナーの概要」を参照してください。
-
[グループの作成] をクリックしてグループを作成し、ポリシーを適用します。
-
[ランナー] タブをクリックします。
-
ランナーの一覧で、前のセクションでデプロイしたランナーをクリックします。
-
[編集] をクリックします。
-
[ランナー グループ] をクリックします。
-
ランナー グループの一覧で、前に作成したグループの名前をクリックします。
-
[保存] をクリックするとランナーがグループに移動します。
これで、指定した Organization 内の GitHub Actions からジョブを実行できるセルフホスト ランナーがデプロイされました。
4. セルフホスト ランナーへのアクセスをさらに制限する
必要に応じて、Organization の所有者と "Organization ランナーとランナー グループの管理" アクセス許可を持つユーザーは、作成したランナー グループのアクセス ポリシーをさらに制限できます。 たとえば、Organization 所有者は、組織内の特定のリポジトリにのみランナー グループの使用を許可できます。
詳しくは、「グループを使用してセルフホストランナーへのアクセスを管理する」を参照してください。
カスタム Organization の役割の詳細については、「カスタム組織の役割の情報」をご覧ください。
5. セルフホスト ランナーを自動的にスケーリングする
必要に応じて、Actions Runner Controller (ARC) を使用して、セルフホステッド ランナーを自動的にスケーリングできます。 Actions Runner Controller (ARC) は、GitHub Actions のセルフホステッド ランナーを調整およびスケーリングする Kubernetes オペレーターです。 詳細については、Kubernetes ドキュメントの「オペレーター パターン」を参照してください。
ARC を使うと、リポジトリ、組織、またはエンタープライズで実行中のワークフローの数に基づいて自動的にスケーリングされるランナー スケール セットを作成できます。 制御されたランナーは一時的でコンテナーに基づく可能性があるため、新しいランナー インスタンスを迅速かつクリーンにスケールアップまたはスケールダウンすることができます。 自動スケーリングについて詳しくは、「セルフホステッド ランナーによる自動スケーリング」をご覧ください。
次のステップ
-
セルフホスト ランナーを監視し、一般的な問題のトラブルシューティングを行うことができます。 詳しくは、「自己ホストランナーのモニタリングとトラブルシューティング」を参照してください。
-
GitHub では、セルフホスト ランナー マシンのセキュリティに関する考慮事項を確認することをお勧めします。 詳しくは、「GitHub Actions のセキュリティ強化」を参照してください。
-
GitHub Enterprise Server を使用する場合は、アクションを含む GitHub.com 上のリポジトリを GitHub Enterprise Server 上の Enterprise に手動で同期できます。 または、GitHub Connect を使用して、Enterprise のメンバーが GitHub.com からアクションに自動的にアクセスできるようにすることもできます。 詳細については、次を参照してください。
- GitHub Enterprise Server ドキュメントの「AUTOTITLE」
- GitHub Enterprise Server ドキュメントの「AUTOTITLE」
-
セルフホスト ランナー マシンで使用できるソフトウェアをカスタマイズしたり、GitHub でホストされたランナーと同様のソフトウェアを実行するようにランナーを構成したりできます。 GitHub Actions 用のランナー マシンを支えるソフトウェアは、オープンソースです。 詳細については、
actions/runner
およびactions/runner-images
リポジトリを参照してください。