- 記事作成日:2022/12/10
情報
名前 | URL |
---|---|
Github | - |
公式サイト | https://docs.github.com/ja/packages/learn-github-packages/introduction-to-github-packages |
デモサイト | |
開発母体 | GitHub |
version | - |
言語 | - |
価格 | https://docs.github.com/ja/billing/managing-billing-for-github-packages/about-billing-for-github-packages |
ライセンス | | Apache-2.0 license MIT |
何ができるもの?
- GitHub へのコンテナイメージの保存(コンテナ以外の artifact も push 可能)
- Container registry
- Docker registry
- RubyGems registry
- npm registry
- Apache Maven registry
- Gradle registry
- NuGet registry
- 保存先はアカウントに紐づける or リポジトリに紐づける の2パターンがある
利用シーン
- artifact を保存しておきたい時
- CI/CDを GitHub で完結したい時
登場背景
by DeepL
GitHub Packagesは、コンテナなどの依存関係を含むパッケージのホスティングと管理を行うためのプラットフォームです。GitHub Packagesは、ソースコードとパッケージを一箇所にまとめ、統合的な権限管理と課金を提供するため、ソフトウェア開発をGitHub上で一元管理することができます。
GitHub PackagesをGitHub API、GitHub Actions、webhooksと統合することで、コード、CI、デプロイメントソリューションを含むエンドツーエンドのDevOpsワークフローを構築することが可能です。
所感
- 既存のクレデンシャルと
docker
コマンドで使えるので非常に楽だった。 - GitHub にコードもあって、コンテナイメージもあると GitHub ダウン時にとても困りそうなので、サービス規模によってはイメージの格納先を分散した方がよさそう。
使い方
今回使ったコード - framinal-new-tools/ghcr at main · lirlia/framinal-new-tools
準備
Personal Access Token(Classic) を発行する
❯ export CR_PAT=ghp_XXXXX # ログイン ❯ echo $CR_PAT | docker login ghcr.io -u lirlia --password-stdin Login Succeeded
自分のアカウントに push する
❯ export KO_DOCKER_REPO=ghcr.io/lirlia ❯ ko publish ./ 2022/12/10 09:51:39 Using base distroless.dev/static:latest@sha256:f0c505e3a47c5c7593316de0efa5ae21a491198678c2f630dbefae28c78f7d8f for github.com/test 2022/12/10 09:51:40 Building github.com/test for linux/amd64 2022/12/10 09:51:41 Publishing ghcr.io/lirlia/test-b1e961c37ef3cc8dcc1a152c78ed9434:latest 2022/12/10 09:51:43 pushed blob: sha256:3c1c293f9e54ec10151f5a05e127fae7f476a23cd4f088d3f1afa3e5a09d9ccd 2022/12/10 09:51:43 pushed blob: sha256:13b2c7c817cbd54d8cd3324259378af66ecd78772cee5a166187db0ff82fd476 2022/12/10 09:51:44 ghcr.io/lirlia/test-b1e961c37ef3cc8dcc1a152c78ed9434:sha256-31a7a38e14b10b84f64addcb57155bab94816a0d156293517e4f1005980127e2.sbom: digest: sha256:94548620e4914b7b6cdc631981524b9d67877d025bf74cfabb9d3b4473085e5c size: 368 2022/12/10 09:51:44 Published SBOM ghcr.io/lirlia/test-b1e961c37ef3cc8dcc1a152c78ed9434:sha256-31a7a38e14b10b84f64addcb57155bab94816a0d156293517e4f1005980127e2.sbom 2022/12/10 09:51:46 pushed blob: sha256:250c06f7c38e52dc77e5c7586c3e40280dc7ff9bb9007c396e06d96736cf8542 2022/12/10 09:51:46 pushed blob: sha256:ed22837caa4b0b93ed40823b0ac5ac80405299197eb0dca05020cec83f1d3dbe 2022/12/10 09:51:47 pushed blob: sha256:a2ef785fb680e30f81a20316e8944163dbd33669497aff1483c99c09617fcd82 2022/12/10 09:51:48 pushed blob: sha256:de95530883a38c1ef89a9360f87250545270b714eeb712c4292f6290289adf17 2022/12/10 09:51:48 ghcr.io/lirlia/test-b1e961c37ef3cc8dcc1a152c78ed9434:latest: digest: sha256:31a7a38e14b10b84f64addcb57155bab94816a0d156293517e4f1005980127e2 size: 1072 2022/12/10 09:51:48 Published ghcr.io/lirlia/test-b1e961c37ef3cc8dcc1a152c78ed9434@sha256:31a7a38e14b10b84f64addcb57155bab94816a0d156293517e4f1005980127e2 ghcr.io/lirlia/test-b1e961c37ef3cc8dcc1a152c78ed9434@sha256:31a7a38e14b10b84f64addcb57155bab94816a0d156293517e4f1005980127e2
こうなってる
pull の確認
❯ docker pull ghcr.io/lirlia/test-b1e961c37ef3cc8dcc1a152c78ed9434 Using default tag: latest latest: Pulling from lirlia/test-b1e961c37ef3cc8dcc1a152c78ed9434 de95530883a3: Pull complete 250c06f7c38e: Pull complete a2ef785fb680: Pull complete Digest: sha256:31a7a38e14b10b84f64addcb57155bab94816a0d156293517e4f1005980127e2 Status: Downloaded newer image for ghcr.io/lirlia/test-b1e961c37ef3cc8dcc1a152c78ed9434:latest ghcr.io/lirlia/test-b1e961c37ef3cc8dcc1a152c78ed9434:latest
GitHub リポジトリに push する
❯ ko build --local --image-label org.opencontainers.image.source=https://github.com/lirlia/framinal-new-tools 2022/12/10 10:25:17 Using base distroless.dev/static:latest@sha256:f0c505e3a47c5c7593316de0efa5ae21a491198678c2f630dbefae28c78f7d8f for github.com/test 2022/12/10 10:25:18 Building github.com/test for linux/amd64 2022/12/10 10:25:19 Loading ko.local/test-b1e961c37ef3cc8dcc1a152c78ed9434:2f81d3a8878e2bc0cdb267e598e23f746014ad24e7c1dba335fe476368d129f3 2022/12/10 10:25:19 Loaded ko.local/test-b1e961c37ef3cc8dcc1a152c78ed9434:2f81d3a8878e2bc0cdb267e598e23f746014ad24e7c1dba335fe476368d129f3 2022/12/10 10:25:19 Adding tag latest 2022/12/10 10:25:19 Added tag latest ko.local/test-b1e961c37ef3cc8dcc1a152c78ed9434:2f81d3a8878e2bc0cdb267e598e23f746014ad24e7c1dba335fe476368d129f3 ❯ docker tag ko.local/test-b1e961c37ef3cc8dcc1a152c78ed9434:2f81d3a8878e2bc0cdb267e598e23f746014ad24e7c1dba335fe476368d129f3 ghcr.io/lirlia/framinal-new-tools/go-test:latest ❯ docker push ghcr.io/lirlia/framinal-new-tools/go-test:latest The push refers to repository [ghcr.io/lirlia/framinal-new-tools/go-test] 3177056de767: Layer already exists ffe56a1c5f38: Layer already exists 918c043d16fb: Layer already exists
リポジトリ側に push されている。GitHub - lirlia/framinal-new-tools