發佈至 GitHub Packages 和 GitHub Container Registry
在此,您將了解使用工作流程發佈至 GitHub Packages 的基本概念,以及組建、驗證、標記 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 可讓您使用細部權限,設定能夠管理及存取套件的人員。
使用容器登錄,您可以:
- 將容器映像儲存在您的組織和使用者帳戶中,而不是存放庫。
- 為容器映像設定細部權限。
- 匿名存取公用容器映像。
在您組建映像、驗證並於 ghcr.io
登入 GitHub Container 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
的容器登錄。