Skip to main content

Enterprise Server 3.20 は、現在リリース候補として使用できます。

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

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

この記事で

メモ

GitHub ホステッド ランナーは、現在 GitHub Enterprise Server ではサポートされていません。

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

GitHub Connect を使用して GitHub Enterprise Server と GitHub Enterprise Cloud を統合することで、パブリック アクションへの自動アクセスを有効にすることをお勧めします。 「GitHub Connect を使用した GitHub.com アクションへの自動アクセスの有効化」を参照してください。

企業で許可されるアクションをより厳密に制御する場合は、このガイドに従って、open source 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 インスタンスで廃止されたことを示します。 「[AUTOTITLE](/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect#automatic-retirement-of-namespaces-for-actions-accessed-on-githubcom)」を参照してください。

前提条件

  •         `actions-sync` ツールを使用する前に、すべての同期先組織が既にエンタープライズに存在していることを確認する必要があります。 次の例は、アクションを `synced-actions` という名前の組織に同期する方法を示しています。 「[AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch)」を参照してください。
    
  • Enterprise に、宛先 Organization のリポジトリを作成して書き込むことができるpersonal access tokenを作成する必要があります。 「個人用アクセス トークンを管理する」を参照してください。

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

    メモ

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

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

    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 pullpush コマンドを使用できます。 「actions-sync README」をご覧ください。

  1. マシンのオペレーティング システム用の最新の actions-sync リリースをダウンロードして展開します。

  2. ツールのキャッシュ ファイルを保存するディレクトリを作成します。

  3. ターミナルで、先ほど抽出したリリース ディレクトリ内の bin ディレクトリに移動します。 次に例を示します。

    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`: 対象のエンタープライズ インスタンスへの 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](https://github.com/actions/actions-sync#actions-sync)」をご覧ください。
        
  5. Enterprise でアクションリポジトリが作成された後、Enterprise 内のユーザは、宛先リポジトリを使用してワークフロー内のアクションを参照できます。 上記のアクション例の場合:

    # このワークフローはGitHubによって認定されていないアクションを使用します。
    # それらはサードパーティによって提供され、
    # 別個の利用規約、プライバシーポリシー、
    # ドキュメントを参照してください。
    uses: synced-actions/actions-stale@v1
    

    GitHub Actions のワークフロー構文」を参照してください。