Skip to main content

リポジトリのパッケージへの接続

リポジトリを GitHub のパッケージに接続できます。

この機能を使用できるユーザーについて

GitHub Packagesは、GitHub Free、GitHub Pro、組織用GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 3.0以降で利用できます。
GitHub Packagesは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 また、従来のリポジトリごとのプランを使用しているアカウントは、詳細なアクセス許可をサポートするレジストリにアクセスできません。これらのアカウントはリポジトリによって課金されるためです。詳細なアクセス許可をサポートするレジストリの一覧については、「GitHub Packagesの権限について」を参照してください。 詳しくは、「GitHub のプラン」をご覧ください。

個人アカウントまたは Organization にスコープ指定されたパッケージを公開すると、既定では、このパッケージはリポジトリにリンクされません。 パッケージをリポジトリに接続すると、パッケージのランディング ページには、リポジトリから README などの情報やリンクが表示されるようになります。 パッケージのアクセス許可をリンク先のリポジトリから継承させることもできます。 詳しくは、「パッケージのアクセス制御と可視性の設定」を参照してください。

GitHub

でリポジトリをユーザーにスコープ指定されたパッケージに接続する

  1. GitHub で、個人アカウントのメイン ページに移動します。

  2. GitHub の右上隅で、プロフィール写真をクリックし、[あなたのプロフィール] をクリックします。

    @octocat のプロファイル写真の下にあるドロップダウン メニューのスクリーンショット。 [自分のプロファイル] が濃いオレンジ色の枠線で囲まれています。

  3. プロファイル ページのヘッダーで、 [パッケージ] タブをクリックします。

  4. 検索したら、管理するパッケージの名前をクリックします。

  5. パッケージのバージョンで、 [リポジトリの接続] をクリックします。

  6. パッケージにリンクするリポジトリを選び、 [リポジトリの接続] をクリックします。

GitHub

でリポジトリを Organization にスコープ指定されたパッケージに接続する

  1. GitHubで、Organizationのメインページにアクセスしてください。

  2. 組織名の下にある [パッケージ] タブをクリックします。

    @octo-org のプロファイル ページのスクリーンショット。 [パッケージ] タブがオレンジ色の枠線で強調表示されています。

  3. 検索したら、管理するパッケージの名前をクリックします。

  4. パッケージのバージョンで、 [リポジトリの接続] をクリックします。

  5. パッケージにリンクするリポジトリを選び、 [リポジトリの接続] をクリックします。

コマンドラインを使ってリポジトリをコンテナイメージに接続する

注: リポジトリにリンクされているパッケージを公開した場合、パッケージは自動的にリンクされたリポジトリのアクセス許可を継承し、Organization によってアクセス許可の自動継承が無効にされていない限り、リンクされたリポジトリ内の GitHub Actions ワークフローは自動的にパッケージにアクセスできるようになります。 詳しくは、「パッケージのアクセス制御と可視性の設定」を参照してください。

  1. Dockerfile で、次の行を追加します。このとき、OWNER および REPO はご自分のものに置き換えます。

    LABEL org.opencontainers.image.source=https://github.com/OWNER/REPO
    

    たとえば、ユーザー octocatmy-repo 次の行を Dockerfile に追加します。

    LABEL org.opencontainers.image.source=https://github.com/octocat/my-repo
    

    詳細については、Docker の公式ドキュメントの「LABEL」および opencontainers/image-spec リポジトリの「定義済みの注釈キー」を参照してください。

  2. あなたのコンテナイメージを構築します。 この例では、現在のディレクトリ内の Dockerfile からイメージをビルドして、イメージ名 hello_docker を割り当てます。

    docker build -t hello_docker .
    
  3. 必要に応じて、先ほど作成した Docker イメージの詳細を確認します。

    $ docker images
    > REPOSITORY          TAG         IMAGE ID       CREATED         SIZE
    > hello_docker        latest      142e665b1faa   5 seconds ago   125MB
    > redis               latest      afb5e116cac0   3 months ago    111MB
    > alpine              latest      a6215f271958   5 months ago    5.29MB
    
  4. Docker イメージに名前とホスティング先を割り当てます。

    docker tag IMAGE_NAME ghcr.io/NAMESPACE/NEW_IMAGE_NAME:TAG
    

    NAMESPACE を、パッケージのスコープ指定先にしたい個人アカウントまたは Organization の名前に置き換えます。

    次に例を示します。

    docker tag 38f737a91f39 ghcr.io/octocat/hello_docker:latest
    
  5. まだContainer registryで認証を受けていなければ、受けてください。 詳しくは、「コンテナレジストリの利用」を参照してください。

    $ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
    > Login Succeeded
    
  6. コンテナイメージをContainer registryにプッシュしてください。

    docker push ghcr.io/NAMESPACE/IMAGE-NAME:TAG
    

    次に例を示します。

    docker push ghcr.io/octocat/hello_docker:latest
    

GitHub のパッケージからリポジトリのリンクを解除する

Note

リポジトリからパッケージのリンクを解除すると、パッケージのランディング ページからリポジトリ情報が削除され、パッケージがリポジトリからアクセス許可を継承するかどうかに応じて、アクセス パターンに影響する可能性があります。 詳しくは、「パッケージのアクセス制御と可視性の設定」をご覧ください。 「GitHub Packagesの権限について」で説明されているように、このビヘイビアーは Apache Maven パッケージには適用されません。

  1. GitHub で、リンクを解除するパッケージの設定ページに移動します。

  2. パッケージの設定ページに、リポジトリのソース セクションが表示されます。 このセクションが存在しない場合、パッケージは現在リポジトリにリンクされていません。

  3. リポジトリのソース セクションの右上隅にあるごみ箱アイコンをクリックします。

リポジトリのソース セクションが存在しても、ごみ箱アイコンが存在しない場合があります。 これは、リポジトリのソースがパッケージ化されたコード (package.json ファイル、.gemspec ファイル) の一部として定義されているためですが、実際には、GitHub 上のリポジトリにリンクされていません。 パッケージをリポジトリにリンクするには、上記のセクションの手順に従う必要があります。

  1. ダイアログで、パッケージからリポジトリのリンクを解除することを確認します。

パッケージを別のリポジトリに移行する

現在、リポジトリにリンクされているパッケージがあり、それを別のリポジトリにリンクする場合は、現在のリポジトリからパッケージのリンクを解除し、新しいリポジトリにリンクすることでこれを行うことができます。

  1. 手順に従って、リンクを解除します。「GitHub のパッケージからリポジトリのリンクを解除する」を参照してください。
  2. 手順に従ってパッケージを新しいリポジトリにリンクします。「GitHub でリポジトリを Organization にスコープ指定されたパッケージに接続する」または「GitHub でリポジトリをユーザー スコープ指定されたパッケージに接続する」を参照してください。