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 Connect を使用して、GitHub Enterprise Server と GitHub Enterprise Cloud を統合することで、すべてのアクションへの自動アクセスを有効にすることをお勧めします。 「GitHub Connect を使用して GitHub.com アクションへの自動アクセスを可能にする」をご覧ください。

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

GitHub Enterprise Server をアップグレードすると、バンドルされたアクションはアップグレード パッケージの既定のバージョンに自動的に置き換えられます。 これらは、利用可能な最新バージョンではない可能性があります。 成功事例として、actions-sync を使用してアクションを更新する場合、アクションを最新の状態に保つために、GitHub Enterprise Server アップグレード (メジャーまたはマイナー) の後に、必ず actions-sync を再実行する必要があります。

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 に対してそのアクションを直接使用し、名前空間が お使いの GitHub Enterprise Server インスタンスで廃止されたことを示します。 「GitHub Connect を使用して GitHub.com アクションへの自動アクセスを可能にする」をご覧ください。

前提条件

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

  • Enterprise に、宛先 Organization のリポジトリを作成して書き込むことができるpersonal access tokenを作成する必要があります。 「個人用アクセス トークンを管理する」をご覧ください。

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

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

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

    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. 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. In your terminal, change to the bin directory within the release directory you just extracted. For example:

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

    uses: synced-actions/actions-stale@v1
    

    GitHub Actions のワークフロー構文」をご覧ください。