導入

完了

このモジュールでは、 GitHub 内の完全に統合されたパッケージ ホスティング サービスである GitHub Packages について説明します。 セキュリティで保護されたパッケージ管理のアクセス許可と可視性を制御しながら、パッケージを発行、インストール、削除、復元する方法について説明します。

GitHub Packages とは

GitHub Packages は、パッケージ、コンテナー、およびその他の依存関係を GitHub 内で直接ホストできるソフトウェア パッケージ ホスティング サービスです。 統合されたアクセス許可の管理と課金のための 中心的なプラットフォーム を提供し、ソフトウェア開発ワークフローを合理化します。

主な利点

  • GitHub と統合: パッケージはリポジトリ内のソース コードと共に使用されます。
  • 統合認証: リポジトリと同じ資格情報とアクセス許可を使用します。
  • 複数のレジストリ: 1 つのプラットフォームでさまざまなパッケージ エコシステムをサポートします。
  • 自動化されたワークフロー: GitHub Actions を使用してパッケージを自動的に発行します。
  • アクセス制御: パブリック パッケージ、プライベート パッケージ、および内部パッケージに対するきめ細かいアクセス許可。
  • 費用 対 効果: GitHub プランに含まれる使用量を含む、パブリック パッケージの無料ストレージと転送。

サポートされているパッケージ レジストリ

GitHub パッケージ では、複数のエコシステムのパッケージをホストできます。

  • npm: JavaScript と Node.js パッケージ
  • RubyGems: Ruby パッケージ
  • Apache Maven: Maven を使用した Java パッケージ
  • Gradle: Gradle を使用した Java パッケージ
  • Docker: Docker コンテナ イメージ
  • NuGet: .NET パッケージ
  • コンテナー レジストリ: コンテナー用に最適化され、Docker イメージと OCI イメージをサポート

GitHub Packages レジストリとサポートのスクリーンショット。

パッケージのアクセス許可と可視性

GitHub Packages を使用すると、パッケージのアクセス許可と可視性を 柔軟 に制御できます。

  • パブリック パッケージ: 認証なしでインターネット上のすべてのユーザーがアクセスできます。
  • プライベート パッケージ: 明示的なアクセス許可を持つユーザーとチームのみがアクセスできます。
  • 内部パッケージ: 組織のすべてのメンバーが使用できます (GitHub Enterprise のみ)。
  • リポジトリ スコープのアクセス許可: パッケージはリポジトリからアクセス許可を継承します。
  • 詳細なアクセス許可: コンテナー レジストリ パッケージは、独立したアクセス制御をサポートします。

アクセス許可の継承: ほとんどのパッケージの種類では、アクセス許可はパッケージが発行されるリポジトリから継承されます。 コンテナー イメージの場合は、特定のユーザーまたは組織アカウントに対して個別にアクセス許可を定義できます。

統合機能

GitHub パッケージは、他の GitHub 機能と統合できます。

  • GitHub API: REST API と GraphQL API を使用してパッケージをプログラムで管理します。
  • GitHub Actions: CI/CD ワークフローでのパッケージの発行を自動化します。
  • Webhook: パッケージ イベントが発生したときに外部ワークフローをトリガーします。
  • セキュリティ アドバイザリ: パッケージの脆弱性に関するセキュリティ アドバイザリを公開します。

活用事例

GitHub パッケージ は次の場合に最適です。

  • プライベート パッケージの配布: 組織内の内部ライブラリを共有します。
  • パブリック パッケージのホスティング: オープンソース パッケージをコミュニティに配布します。
  • コンテナー イメージの管理: アプリケーション用の Docker イメージを格納してデプロイします。
  • 依存関係の管理: マイクロサービスのホストとバージョンの依存関係。
  • CI/CD 統合: ビルド パイプラインからパッケージを自動的に発行します。

シナリオ: パッケージ管理の最新化

複数の内部ライブラリとアプリケーションを管理するソフトウェア開発会社で働いているとします。 現在、チームは異なるエコシステム (npm、NuGet、Maven) に対して個別のパッケージ レジストリを使用しており、それぞれに異なる資格情報、課金、管理が必要です。 これにより、開発ワークフローの複雑さと摩擦が生まれます。

GitHub パッケージを採用することで、次のことができます。

  • パッケージホスティングを一元化する: すべてのパッケージは、GitHub のソース コードと共に使用されます。
  • 認証を簡略化する: 複数のレジストリ アカウントを管理する代わりに、GitHub 資格情報を使用します。
  • 発行を自動化する: コードがマージまたはタグ付けされたときに、パッケージを自動的に発行します。
  • アクセスの制御: パッケージを表示、ダウンロード、発行できるユーザーを管理します。
  • コストを削減する: パブリック パッケージには無料ストレージを利用し、プライベート パッケージには含まれています。

このモジュールでは、 GitHub Packages を利用してパッケージ管理ワークフローを合理化する方法について説明します。

学習の目的

このモジュールを完了すると、受講者と担当者は次のことができるようになります。

  • リポジトリと CI/CD ワークフローから GitHub パッケージにパッケージを発行します。
  • 開発環境と運用環境に GitHub パッケージからパッケージをインストールします。
  • GitHub Web インターフェイスと API を使用してパッケージを削除および復元します。
  • パブリック パッケージ、プライベート パッケージ、および内部パッケージのアクセス制御と可視性を構成します。
  • 個人用アクセス トークン (AT) を使用して GitHub Packages に対して認証します。
  • サポートされているパッケージ レジストリとその機能について説明します。

前提条件

  • DevOps の概念の理解: CI/CD パイプラインと自動化に関する知識。
  • バージョン管理の知識: Git および GitHub リポジトリの経験。
  • パッケージ管理エクスペリエンス: パッケージ マネージャー (npm、NuGet、Maven、または Docker) の理解。
  • GitHub アカウント: 実践的な演習用のアクティブな GitHub アカウント。 お持ちでない場合は、 GitHub への参加を参照してください。
  • GitHub リポジトリ: パッケージ操作をテストするためのリポジトリ。 新しいリポジトリの作成を参照してください。