メモ
GitHub Enterprise Server ホステッド ランナーは、現在 GitHub ではサポートされていません。
GitHub Actions 上の GitHub Enterprise Server は、インターネット アクセスのない環境で動作するように設計されています。 既定では、ワークフローは GitHub.com と GitHub Marketplace からのアクションを使用できません。
GitHub ConnectとGitHub Enterprise Serverを統合するには、GitHub Enterprise Cloudを使用してパブリック アクションへの自動アクセスを有効にすることをお勧めします。 「GitHub Connect を使用した GitHub.com アクションへの自動アクセスの有効化」を参照してください。
企業で許可されるアクションをより厳密に制御する場合は、このガイドに従って、オープンソース actions-sync ツールを使用して、GitHub.comから企業に個々のアクション リポジトリを同期できます。
GitHub Enterprise Serverアップグレードすると、バンドルされたアクションはアップグレード パッケージの既定のバージョンに自動的に置き換えられます。 これらは、利用可能な最新バージョンではない可能性があります。 ベスト プラクティスとして、actions-syncを使用してアクションを更新する場合は、actions-syncアップグレード (メジャーまたはマイナー) の後に常にGitHub Enterprise Serverを再実行して、アクションを最新の状態に保つ必要があります。
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 ツールは、GitHub Connectが有効になっていないシステムで使用することを目的としています。 GitHub Connectが有効になっているシステムでツールを実行すると、エラー The repository <repo_name> has been retired and cannot be reusedが表示されることがあります。 これは、ワークフローが GitHub.com で直接そのアクションを使用しており、名前空間が お使いの GitHub Enterprise Server インスタンスで廃止されたことを示します。 「GitHub Connect を使用した GitHub.com アクションへの自動アクセスの有効化」を参照してください。
前提条件
-
actions-syncツールを使用する前に、すべての同期先組織が既にエンタープライズに存在していることを確認する必要があります。 次の例は、アクションをsynced-actionsという名前の組織に同期する方法を示しています。 「新しい Organization をゼロから作成」を参照してください。 -
移行先組織のリポジトリを作成して書き込むことができる personal access token を企業に作成する必要があります。 「個人用アクセス トークンを管理する」を参照してください。
-
actionsにお使いの GitHub Enterprise Server インスタンス組織のバンドルされたアクションを同期する場合は、actions組織の所有者である必要があります。メモ
既定では、サイト管理者であっても、バンドルされた
actionsorganization の所有者ではありません。サイト管理者は、管理シェルの
ghe-org-admin-promoteコマンドを使用して、バンドルされたactions組織の所有者にユーザーを昇格させることができます。 「管理シェル (SSH) にアクセスする」と「コマンド ライン ユーティリティ」を参照してください。ghe-org-admin-promote -u USERNAME -o actions
例: actions-sync ツールの使用
この例では、 actions-sync ツールを使用して、 GitHub.com からエンタープライズ インスタンスに個々のアクションを同期する方法を示します。
メモ
この例では、 actions-sync sync コマンドを使用します。これには、コンピューターから GitHub.com API とエンタープライズ インスタンスの API の両方への同時アクセスが必要です。 一度に 1 つのシステムにのみアクセスできる場合は、actions-sync pull と push コマンドを使用できます。 「actions-sync README」をご覧ください。
-
マシンのオペレーティング システム用の最新の
actions-syncリリースをダウンロードして展開します。 -
ツールのキャッシュ ファイルを保存するディレクトリを作成します。
-
ターミナルで、先ほど抽出したリリース ディレクトリ内の
binディレクトリに移動します。 次に例を示します。cd PATH/TO/gh_DATETIME_OS_ARCHITECTURE/bin -
actions-sync syncコマンドを実行します。./actions-sync sync \ --cache-dir "cache" \ --destination-token "aabbccddeeffgg" \ --destination-url "https://my-ghes-instance" \ --repo-name "actions/stale:synced-actions/actions-stale"上記のコマンドでは、次の引数を使用しています。
-
--cache-dir: コマンドを実行しているコンピューター上のキャッシュ ディレクトリ。 -
--destination-token: 移行先のエンタープライズ インスタンス用の personal access token。 -
--destination-url: 同期先のエンタープライズ インスタンスの URL。 -
--repo-name: 同期するアクション リポジトリ。これはowner/repository:destination_owner/destination_repository形式になります。- 上記の例では
actions/staleリポジトリを、同期先のエンタープライズ インスタンス上のsynced-actions/actions-staleリポジトリに同期します。 上記のコマンドを実行する前に、エンタープライズにsynced-actionsという名前の組織を作成する必要があります。 :destination_owner/destination_repositoryを省略した場合、ツールではエンタープライズの元の所有者とリポジトリ名を使用します。 コマンドを実行する前に、アクションの所有者名と一致する新しい Organization を Enterprise に作成する必要があります。 同期されたアクションを Enterprise に保存するために中枢の Organization を使用することを検討してください。これは、異なる所有者からのアクションを同期する場合、複数の新しい Organization を作成する必要がないということです。--repo-nameパラメーターを--repo-name-listまたは--repo-name-list-fileに置き換えることで、複数のアクションを同期できます。 「actions-syncREADME」をご覧ください。
- 上記の例では
-
-
Enterprise でアクションリポジトリが作成された後、Enterprise 内のユーザは、宛先リポジトリを使用してワークフロー内のアクションを参照できます。 上記のアクション例の場合:
# このワークフローはGitHubによって認定されていないアクションを使用します。 # それらはサードパーティによって提供され、 # 別個の利用規約、プライバシーポリシー、 # ドキュメントを参照してください。 uses: synced-actions/actions-stale@v1「GitHub Actions のワークフロー構文」を参照してください。