概要
このモジュールでは、 GitHub 内の完全に統合されたパッケージ ホスティング サービスである GitHub Packages について説明しました。 セキュリティで保護されたパッケージ管理のアクセス許可と可視性を制御しながら、パッケージを発行、インストール、削除、復元する方法について学習しました。
学習した内容
また、次の機能の利点と使い方を説明する方法も学習しました。
パッケージを公開する
- サポートされているレジストリ: npm、NuGet、Maven、Gradle、RubyGems、Docker、Container のレジストリ。
- 認証: 適切なスコープを持つ個人用アクセス トークン (AT) の作成と使用。
- 発行ワークフロー: ネイティブ ツールを使用して、認証、パッケージ メタデータの構成、発行を行います。
- NuGet の発行: 認証に dotnet CLI と nuget.config ファイルを使用する。
- npm 発行: .npmrc ファイルを構成し、認証に npm ログインを使用する。
- オートメーション: GitHub Actions ワークフローを使用してパッケージを自動的に発行する。
- ベスト プラクティス: バージョン管理、ドキュメント、セキュリティ アドバイザリ、メタデータの完全性。
パッケージのインストール
- パッケージの検出: グローバル、組織内、またはリポジトリでの検索。
- インストール ワークフロー: GitHub パッケージに対して認証し、ネイティブ パッケージ マネージャーを使用してインストールします。
- NuGet のインストール: Visual Studio、dotnet CLI、または .csproj の直接編集を使用する。
- npm のインストール: .npmrc ファイル、package.json 依存関係、および複数組織のサポートの構成。
- CI/CD 統合: GITHUB_TOKENを使用して GitHub Actions にパッケージをインストールする。
- トラブルシューティング: 認証、アクセス許可、およびバージョンの問題の解決。
パッケージの削除と復元
- 削除規則: パブリック パッケージの制限について (5,000 ダウンロード制限)。
- アクセス許可の要件: リポジトリ スコープ パッケージの管理者アクセス。
- バージョンの削除: 他のバージョンを使用できるようにしたまま、特定のバージョンを削除する。
- パッケージ全体の削除: GitHub パッケージからすべてのバージョンを削除します。
- 復元条件: 30 日間のウィンドウ、名前空間の可用性、およびアクセス許可の保持。
- API 管理: プログラムによるパッケージ操作に REST API を使用する。
- ベストプラクティス: コミュニケーション、非推奨、猶予期間、監査ログ。
アクセス制御と可視性の構成
- アクセス許可モデル: リポジトリ継承のアクセス許可と詳細なアクセス許可 (コンテナー レジストリ)。
- 表示オプション: パブリック、プライベート、および内部 (エンタープライズのみ) のパッケージ。
- コンテナー イメージのアクセス許可: 読み取り、書き込み、管理者の役割があり、独立したアクセス制御を使用します。
- ユーザーとチームのアクセス: 個人とチームにアクセス許可を付与する。
- セキュリティのベスト プラクティス: 最小限の特権、定期的な監査、チームベースのアクセス、ドキュメント。
- 組織の戦略: 標準化された可視性、アクセス要求プロセス、コンプライアンスの調整。
主な概念の概要
GitHub Packages の統合
- 統合プラットフォーム: パッケージは GitHub のソース コードと共に提供されます。
- 同じ認証: 個別のレジストリ アカウントの代わりに GitHub 資格情報を使用します。
- ワークフローの自動化: GitHub Actions を使用してパッケージを自動的に発行します。
- 複数のレジストリ: npm、NuGet、Maven、Docker などの 1 つのプラットフォームでのサポート。
セキュリティとアクセス制御
- 詳細なアクセス許可: コンテナー レジストリは、独立したアクセス制御をサポートします。
- リポジトリ継承アクセス許可: ほとんどのパッケージの種類は、リポジトリへのアクセスに従います。
- PAT 認証: 個人用アクセス トークンを使用して認証をセキュリティで保護する。
- パブリックとプライベート: セキュリティとコラボレーションのニーズに基づいて可視性を選択します。
パッケージライフサイクル管理
- 出版: ネイティブ パッケージ ツールを使用した自動発行または手動発行。
- バージョン管理: 明確な変更通信のためのセマンティック バージョン管理。
- 削除: 安全性の制限がある古いバージョンまたは脆弱なバージョンを削除します。
- 復旧: 30 日以内に削除されたパッケージを回復します。
自動化の利点
- CI/CD 統合: GitHub Actions とのシームレスな統合。
- GITHUB_TOKEN: AT を使用しないワークフローでの自動認証。
- 一貫性のある発行: すべてのリリースでは、パッケージが自動的に作成されます。
- 品質ゲート: パッケージを発行する前にテストを実行します。
次のステップ
学習を続行する
GitHub Packages のスキルを強化します。
- 高度な認証: 組織全体の認証戦略を実装する。
- パッケージの推進: 品質管理段階を通じてパッケージを促進するためのワークフローを開発します。
- Monorepo の発行: 1 つのリポジトリから複数のパッケージを発行します。
- セキュリティ スキャン: 発行されたパッケージの脆弱性スキャンを統合します。
高度なシナリオを調べる:
- マルチレジストリのサポート: 複数のパッケージ レジストリを使用するようにプロジェクトを構成します。
- パッケージ ミラーリング: GitHub パッケージで外部パッケージをキャッシュします。
- カスタム自動化: GitHub Actions を使用して高度な発行ワークフローを構築します。
- パッケージ分析: パッケージの使用状況と導入を追跡します。
実用化
実装を開始します。
- 認証を設定します。 チームに適したスコープを持つ AT を作成します。
- 最初のパッケージを発行する: レジストリを選択し、テスト パッケージを発行します。
- コンシューマーを構成します。 GitHub Packages からパッケージをインストールするようにプロジェクトを設定します。
- 発行を自動化する: 自動発行用の GitHub Actions ワークフローを作成します。
- アクセス制御を構成します。 セキュリティのニーズに基づいて可視性とアクセス許可を設定します。
- ドキュメントの手順: パッケージ管理のチーム ガイドラインを作成します。
DevOps プラクティスとの統合
DevOps ワークフローの GitHub パッケージ:
- 継続的インテグレーション: コミット時にパッケージを自動的にビルドして発行します。
- 継続的デリバリー: デプロイ パイプラインで成果物としてパッケージを使用します。
- 依存関係の管理: GitHub パッケージで内部依存関係を一元化します。
- バージョン 管理: コード バージョンと共にパッケージ バージョンを追跡します。
- セキュリティ コンプライアンス: 組織のポリシーに合わせてアクセス制御を実装します。
詳細情報
公式ドキュメント
- GitHub パッケージのクイックスタート - GitHub パッケージをすばやく始めましょう。
- GitHub パッケージを学ぶ - GitHub パッケージの概念に関する包括的なガイドです。
- GitHub Packages レジストリの操作 - サポートされているすべてのパッケージの種類に関するレジストリ固有のガイド。
- GitHub パッケージのアクセス許可について - アクセス許可モデルとアクセス制御について。
レジストリ固有のガイド
- npm レジストリの操作 - npm パッケージ管理ガイドを完了します。
- NuGet レジストリの操作 - 完全な NuGet パッケージ管理ガイド。
- コンテナー レジストリの操作 - Docker と OCI イメージの管理。
- Apache Maven レジストリの操作 - Maven パッケージ管理。
- Gradle レジストリの操作 - Gradle パッケージ管理。
セキュリティとベスト プラクティス
- パッケージのアクセス制御と可視性の構成 - パッケージのセキュリティの管理。
- パッケージの削除と復元 - パッケージ のライフサイクル管理。
- パッケージの発行 - パッケージ の発行に関するベスト プラクティス。
- パッケージのインストール - パッケージ の使用に関するベスト プラクティス。
API と自動化
- GitHub Packages API - プログラムによるパッケージ管理のための REST API。
- GitHub Actions を使用したパッケージの発行 - CI/CD 統合の例。
- GitHub Actions での GitHub パッケージの使用 - 高度なワークフロー パターン。
コミュニティとサポート
- GitHub のドキュメント: 包括的なガイドとチュートリアルについて説明します。
- GitHub コミュニティ: 質問をしたり、コミュニティから回答を得ることができます。
- GitHub ブログ: 最新の機能とお知らせで最新情報を入手できます。
- GitHub スキル: GitHub 機能の対話型ラーニング パス。