概要

完了

このモジュールでは、 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 を使用して高度な発行ワークフローを構築します。
  • パッケージ分析: パッケージの使用状況と導入を追跡します。

実用化

実装を開始します。

  1. 認証を設定します。 チームに適したスコープを持つ AT を作成します。
  2. 最初のパッケージを発行する: レジストリを選択し、テスト パッケージを発行します。
  3. コンシューマーを構成します。 GitHub Packages からパッケージをインストールするようにプロジェクトを設定します。
  4. 発行を自動化する: 自動発行用の GitHub Actions ワークフローを作成します。
  5. アクセス制御を構成します。 セキュリティのニーズに基づいて可視性とアクセス許可を設定します。
  6. ドキュメントの手順: パッケージ管理のチーム ガイドラインを作成します。

DevOps プラクティスとの統合

DevOps ワークフローの GitHub パッケージ:

  • 継続的インテグレーション: コミット時にパッケージを自動的にビルドして発行します。
  • 継続的デリバリー: デプロイ パイプラインで成果物としてパッケージを使用します。
  • 依存関係の管理: GitHub パッケージで内部依存関係を一元化します。
  • バージョン 管理: コード バージョンと共にパッケージ バージョンを追跡します。
  • セキュリティ コンプライアンス: 組織のポリシーに合わせてアクセス制御を実装します。

詳細情報

公式ドキュメント

レジストリ固有のガイド

セキュリティとベスト プラクティス

API と自動化

コミュニティとサポート

  • GitHub のドキュメント: 包括的なガイドとチュートリアルについて説明します。
  • GitHub コミュニティ: 質問をしたり、コミュニティから回答を得ることができます。
  • GitHub ブログ: 最新の機能とお知らせで最新情報を入手できます。
  • GitHub スキル: GitHub 機能の対話型ラーニング パス。