ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情報を見ることができます。
GitHub Enterprise Server上のGitHub Actionsは、完全なインターネットアクセスのない環境で動作するように設計されています。 デフォルトでは、ワークフローはGitHub.com及びGitHub Marketplaceからのアクションを使うことができません。
GitHub.com からのアクションへのアクセスを有効化する際に推奨されるアプローチは、すべてのアクションへの自動アクセスを有効化することです。 これを行うには、GitHub Connect を使用して GitHub Enterprise Server を GitHub Enterprise Cloud と統合します。 詳しい情報については、「GitHub Connect を使用した GitHub.com アクションへの自動アクセスを有効化する」を参照してください。
ただし、Enterprise で許可されるアクションをより厳密に制御する場合は、このガイドに従って、GitHub のオープンソース actions-sync
ツールを使用して、個々のアクションリポジトリを GitHub.com から Enterprise に同期できます。
actions-sync
ツールについて
actions-sync
ツールは、GitHub.com API と GitHub Enterprise Server インスタンスの API にアクセスできるマシンで実行する必要があります。 両方のマシンに同時に接続する必要はありません。
マシンが両方のシステムに同時にアクセスできる場合、1 つの actions-sync sync
コマンドで同期を実行できます。 一度に 1 つのシステムにのみアクセスできる場合は、actions-sync pull
および push
コマンドを使用できます。
actions-sync
ツールは、パブリックリポジトリに保存されている GitHub.com からのみアクションをダウンロードできます。
必要な環境
-
actions-sync
ツールを使用する前に、すべての宛先 Organization が Enterprise にすでに存在していることを確認する必要があります。 次の例は、synced-actions
という名前の Organization にアクションを同期する方法を示しています。 詳しい情報については、「新しい Organization をゼロから作成する」を参照してください。 -
Enterprise に、宛先 Organization のリポジトリを作成して書き込むことができる個人アクセストークン (PAT) を作成する必要があります。 詳しい情報については、「個人アクセストークンを作成する」を参照してください。
-
GitHub Enterprise Serverのインスタンス の
actions
の Organization でバンドルされたアクションを同期する場合は、actions
の Organization の所有者である必要があります。注釈: デフォルト設定では、サイト管理者であってもバンドルされた
actions
の Organization の所有者ではありません。サイト管理者は、管理シェルで
ghe-org-admin-promote
コマンドを使用して、ユーザをバンドルされたactions
の Organization の所有者に昇格させることができます。 詳しい情報については、「管理シェル (SSH) へのアクセス」および「ghe-org-admin-promote
」を参照してください。ghe-org-admin-promote -u USERNAME -o actions
例: actions-sync
ツールを使用する
この例は、actions-sync
ツールを使用して、個々のアクションを GitHub.com から Enterprise インスタンスに同期する方法を示しています。
注釈: この例では、actions-sync sync
コマンドを使用します。これには、マシンから GitHub.com API と Enterprise インスタンスの API の両方への同時アクセスが必要です。 一度に 1 つのシステムにのみアクセスできる場合は、actions-sync pull
および push
コマンドを使用できます。 詳しい情報については、「actions/cache
README」を参照してください。
-
マシンのオペレーティングシステムの最新の
actions-sync
リリースをダウンロードして抽出します。 -
ツールのキャッシュファイルを保存するディレクトリを作成します。
-
actions-sync sync
コマンドを実行します。./actions-sync sync \ --cache-dir "cache" \ --destination-token "aabbccddeeffgg" \ --destination-url "https://my-ghes-instance" \ --repo-name "docker/build-push-action:synced-actions/docker-build-push-action"
上記のコマンドでは、次の引数を使用しています。
-
--cache-dir
: コマンドを実行しているマシンのキャッシュディレクトリ。 -
--destination-token
: 宛先 Enterprise インスタンスの個人アクセストークン。 -
--destination-url
: 宛先 Enterprise インスタンスの URL。 -
--repo-name
: 同期するアクションリポジトリ。 これは、owner/repository:destination_owner/destination_repository
の形式を採用しています。- 上記の例では、
docker/build-push-action
リポジトリを宛先 Enterprise インスタンスのsynced-actions/docker-build-push-action
リポジトリに同期します。 上記のコマンドを実行する前に、Enterprise でsynced-actions
という名前の Organization を作成する必要があります。 :destination_owner/destination_repository
を省略すると、ツールは Enterprise の元の所有者とリポジトリ名を使用します。 コマンドを実行する前に、アクションの所有者名と一致する新しい Organization を Enterprise に作成する必要があります。 同期されたアクションを Enterprise に保存するために中枢の Organization を使用することを検討してください。これは、異なる所有者からのアクションを同期する場合、複数の新しい Organization を作成する必要がないということです。--repo-name
パラメータを--repo-name-list
または--repo-name-list-file
に置き換えることにより、複数のアクションを同期できます。 詳しい情報については、「actions/cache
README」を参照してください。
- 上記の例では、
-
-
Enterprise でアクションリポジトリが作成された後、Enterprise 内のユーザは、宛先リポジトリを使用してワークフロー内のアクションを参照できます。 上記のアクション例の場合:
uses: synced-actions/docker-build-push-action@v1
詳しい情報については、「GitHub Actionsのワークフロー構文」を参照してください。