Skip to main content

GitHub.com からアクションを手動で同期する

GitHub.com からのアクションにアクセスする必要があるユーザは、特定のアクションを Enterprise インスタンスに同期できます。

注: GitHub ホステッド ランナーは、現在 GitHub Enterprise Server でサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。

GitHub Enterprise Server上のGitHub Actionsは、完全なインターネットアクセスのない環境で動作するように設計されています。 既定では、ワークフローは GitHub.com と GitHub Marketplace からのアクションを使用できません。

GitHub.com からのアクションへのアクセスを有効化する際に推奨されるアプローチは、すべてのアクションへの自動アクセスを有効化することです。 これを行うには、GitHub Connect を使用して GitHub Enterprise Server と GitHub Enterprise Cloud を統合します。 詳細については、「GitHub Connect を使用して GitHub.com アクションへの自動アクセスを有効にする」を参照してください。

ただし、エンタープライズで許可されるアクションをより厳密に制御する場合は、ユーザーはこのガイドに従って、GitHub のオープンソース actions-sync ツールを使用して、GitHub.com からエンタープライズに個々のアクション リポジトリを同期できます。

actions-sync ツールについて

actions-sync ツールは、GitHub.com API と GitHub Enterprise Server インスタンスの API にアクセスできるコンピューターで実行する必要があります。 両方のマシンに同時に接続する必要はありません。

コンピューターが両方のシステムに同時にアクセスできる場合は、1 回の actions-sync sync コマンドで同期を実行できます。 一度に 1 つのシステムにのみアクセスできる場合は、actions-sync pullpush コマンドを使用できます。

actions-sync ツールは、パブリック リポジトリに保存されている GitHub.com からのみアクションをダウンロードできます。

注: actions-sync ツールは、GitHub Connect が有効になっていないシステムで使用することを目的としています。 GitHub Connect が有効になっているシステムでツールを実行すると、エラー The repository <repo_name> has been retired and cannot be reused が表示されることがあります。 これは、ワークフローが GitHub.com に対してそのアクションを直接使用し、名前空間が your GitHub Enterprise Server instanceで廃止されたことを示します。 詳細については、「GitHub.com でアクセスされたアクションの名前空間の自動廃止」を参照してください。

前提条件

  • actions-sync ツールを使用する前に、すべての同期先組織が既にエンタープライズに存在していることを確認する必要があります。 次の例は、アクションを synced-actions という名前の組織に同期する方法を示しています。 詳細については、「新しい Organization をゼロから作成」を参照してください。

  • Enterprise に、宛先 Organization のリポジトリを作成して書き込むことができるpersonal access tokenを作成する必要があります。 詳しくは、「personal access token の作成」をご覧ください。

  • your GitHub Enterprise Server instanceで actions Organization 内のバンドルされたアクションを同期する場合は、actions Organization の所有者である必要があります。

    注: 既定では、サイト管理者であっても、バンドルされた actions 組織の所有者ではありません。

    サイト管理者は、管理シェルの ghe-org-admin-promote コマンドを使用して、バンドルされた actions 組織の所有者にユーザーを昇格させることができます。 詳細については、「管理シェル (SSH) にアクセスする」と「ghe-org-admin-promote」を参照してください。

    ghe-org-admin-promote -u USERNAME -o actions

Example: Using the actions-sync tool

This example demonstrates using the actions-sync tool to sync an individual action from GitHub.com to an enterprise instance.

Note: This example uses the actions-sync sync command, which requires concurrent access to both the GitHub.com API and your enterprise instance's API from your machine. If you can only access one system at a time, you can use the actions-sync pull and push commands. For more information, see the actions-sync README.

  1. Download and extract the latest actions-sync release for your machine's operating system.

  2. Create a directory to store cache files for the tool.

  3. Run the actions-sync sync command:

    ./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: 同期先 Enterprise インスタンスの 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 を参照してください。
  4. Enterprise でアクションリポジトリが作成された後、Enterprise 内のユーザは、宛先リポジトリを使用してワークフロー内のアクションを参照できます。 上記のアクション例の場合:

    uses: synced-actions/actions-stale@v1
    

    詳細については、「GitHub Actions のワークフロー構文」を参照してください。