發佈至 GitHub Packages 和 GitHub Container Registry
在這裡,您將瞭解使用工作流程發佈至 GitHub 套件的基本概念,以及建置、驗證、標記 Docker 映像並將 Docker 映像推送至 GitHub Container Registry 的必要步驟。
使用工作流程發佈至 GitHub Packages
GitHub Packages 可讓您安全地發佈和取用套件、將套件與程式代碼一起儲存,並與小組私下共用套件,或與開放原始碼社群公開共用您的套件。 您也可以使用 GitHub Actions 將套件自動化。
以下是在存放庫中建立新版本時執行的基本工作流程範例。 如果測試通過,則套件會發佈至 GitHub Packages。
name: Node.js Package
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 12
- run: npm ci
- run: npm test
publish-gpr:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 12
registry-url: https://npm.pkg.github.com/
- run: npm ci
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
首先,工作流程檔案必須存在於 .github/workflows 目錄中。 一般的作法是,當建立新版本時,把用於發佈新套件的工作流程命名為類似 release-package.yml,便於專案合作者不需流覽工作流程檔案就能輕鬆了解其用途。
在建立新版本之後,上述工作流程會執行一些動作:
- 名為
build的作業運行npm ci("ci" 代表持續整合),它會直接從package-lock.json檔案中安裝相依性,並執行項目測試。 build作業成功之後,名為publish-gpr的作業會發佈套件。- 工作流程會使用存取權杖進行驗證,將套件發佈至
registry-url: https://npm.pkg.github.com/。
使用 GitHub Container Registry 來裝載和管理 Docker 容器映射
GitHub Packages 支援使用容器、Kubernetes 和其他雲端原生技術來管理其整個應用程式生命週期,包括生產作業、開發、發行和部署。 GitHub Packages 也提供容器登錄,其設計目的是支援容器映射的獨特需求。 您可以使用 GitHub Container Registry,順暢地裝載和管理 GitHub 組織或個人用戶帳戶中的 Docker 容器映像。 GitHub Container Registry 可讓您設定誰可以使用更細緻的許可權來管理和存取套件。
透過容器登錄,您可以:
- 在您的組織和用戶帳戶內儲存容器映像,而不是存放庫。
- 設定容器映像的詳細權限。
- 匿名存取公用容器映像。
在建置映像並經過驗證並登入 GitHub ghcr.ioContainer Registry 服務之後,您可以使用下列命令,將映像的最新版本標記並推送至容器登錄:
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin
docker tag IMAGE_ID ghcr.io/OWNER/IMAGE_NAME:latest
docker push ghcr.io/OWNER/IMAGE_NAME:latest
備註
若要使用 GitHub Actions 工作流程進行驗證,您可以使用GITHUB_TOKEN:
- 針對位於
PACKAGE-REGISTRY.pkg.github.com的封裝登錄。 - 針對位於
ghcr.io/OWNER/IMAGE-NAME的容器登錄。