注: GitHub Packages 目前正在测试用于 GitHub Enterprise Server 2.22。 要加入 您的 GitHub Enterprise Server 实例 的测试版,请使用注册表单。
关于 GitHub Packages 与 GitHub Actions
GitHub Actions 帮助您在您存储代码的同一位置自动执行软件开发工作流程,并协作处理拉取请求和议题。 您可以写入个别任务,称为操作,并结合它们创建一个自定义的工作流程。 通过 GitHub Actions 可直接在仓库中构建端到端持续集成 (CI) 和持续部署 (CD) 功能。 更多信息请参阅“关于 GitHub Actions”。
您可以通过在工作流程中发布或安装包来扩展仓库的 CI 和 CD 功能。
向 GitHub 上的软件包注册表验证
要向 GitHub Enterprise Server 上的软件包注册表验证,我们建议使用 GitHub Enterprise Server 在您启用 GitHub Actions 时自动为您的仓库创建的 GITHUB_TOKEN
来验证,而不是使用个人访问令牌来验证。 它对工作流程运行的仓库中的包具有读取和写入权限。 对于复刻,GITHUB_TOKEN
被授予对父仓库的读取访问权限。 更多信息请参阅“使用 GITHUB_TOKEN 验证身份”。
您还可以使用 {{secrets.GITHUB_TOKEN}}
上下文在工作流程文件中引用 GITHUB_TOKEN
。 更多信息请参阅“使用 GITHUB_TOKEN 验证身份”。
关于仓库拥有的包的权限和包访问权限
注意:仓库拥有的软件包包括 RubyGems、npm、Apache Maven、Nuget、使用软件包命名空间 docker.pkg.github.com
的 Gradle 和 Docker 软件包。
启用 GitHub 操作后,GitHub 会在您的仓库中安装 GitHub 应用程序。 GITHUB_TOKEN
密码是一种 GitHub 应用程序安装访问令牌。 您可以使用安装访问令牌代表仓库中安装的 GitHub 应用程序进行身份验证。 令牌的权限仅限于包含您的工作流程的仓库。 更多信息请参阅“GITHUB_TOKEN 的权限”。
GitHub Packages 允许您通过可用于 GitHub Actions 工作流程的 GITHUB_TOKEN
推送和拉取包。
使用操作发布包
您可以使用 GitHub Actions 在持续集成 (CI) 流程中自动发布包。 如果代码符合您的质量标准,可使用这种持续部署 (CD) 方法自动创建新的包版本。 例如,您可以创建一个每当开发者向特定分支推送代码时运行 CI 测试的工作流程。 如果测试通过,则工作流程可以将新的包版本发布到 GitHub Packages。
配置步骤因包客户端而异。 有关为 GitHub Actions 配置工作流程的一般信息,请参阅“配置工作流程”。
下面的示例演示如何使用 GitHub Actions 构建和测试应用程序,然后自动创建 Docker 映像并将其发布到 GitHub Packages:
在仓库中创建新的工作流程文件(例如 .github/workflows/deploy-image.yml
),并添加以下 YAML:
name: Create and publish a Docker image
# 此工作流使用未经 GitHub 认证的操作。
# 它们由第三方提供,并受
# 单独的服务条款、隐私政策和支持
# 文档管理。
on:
push:
branches: ['release']
jobs:
run-npm-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: npm install and build webpack
run: |
npm install
npm run build
- uses: actions/upload-artifact@main
with:
name: webpack artifacts
path: public/
run-npm-test:
runs-on: ubuntu-latest
needs: run-npm-build
strategy:
matrix:
os: [ubuntu-latest]
node-version: [12.x, 14.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- uses: actions/download-artifact@main
with:
name: webpack artifacts
path: public
- name: npm install, and test
run: |
npm install
npm test
env:
CI: true
build-and-push-image:
runs-on: ubuntu-latest
needs: run-npm-test
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Log in to GitHub Docker Registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: docker.pkg.github.com
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
push: true
tags: |
docker.pkg.github.com/${{ github.repository }}/octo-image:${{ github.sha }}
下表介绍了相关设置: 有关工作流程中每个元素的完整详细信息,请参阅“GitHub Actions 的工作流程语法”。
|
配置创建并发布包 Docker 映像 工作流程,以在每次向名为 release 的分支推送更改时运行。
|
|
此作业会安装 NPM 并使用它来构建应用程序。 |
|
此作业使用 npm test 测试代码。 needs: run-npm-build 命令使此作业依赖于 run-npm-build 作业。
|
|
此作业将发布包。 needs: run-npm-test 命令使此作业依赖于 run-npm-test 作业。
|
|
创建一个名为登录到 GitHub Docker 注册表 的新步骤,以使用将发布包的帐户和密码登录到注册表。 发布后,包归此处定义的帐户所有。
|
|
创建名为构建并推送 Docker 映像 的新步骤。 此步骤在 build-and-push-image 作业中运行。
|
|
使用 Docker build-push-action 操作构建基于仓库的 Dockerfile 的映像。 如果构建成功,它会将映像推送到 GitHub Packages。
|
|
将所需参数发送到 build-push-action 操作。 这些将在后面的行中定义。
|
|
此映像如已成功构建,则推送至注册表。 |
|
使用触发工作流程的提交的 SHA 标记映像。 |
每次将更改推送至仓库中名为 release
的分支时,这个新工作流程都会自动运行。 您可以在 Actions(操作)选项卡中查看进度。
工作流程完成几分钟后,新包将在您的仓库中可见。 要查找可用的包,请参阅“查看仓库的包”。
使用操作安装包
您可以使用 GitHub Actions 将安装包作为 CI 流程的一部分。 例如,您可以配置一个工作流程:每当开发者向拉取请求推送代码时,该工作流程就会通过下载并安装 GitHub Packages 托管的包来解析依赖项。 然后,该工作流程就可以运行需要这些依赖项的 CI 测试。
使用 GITHUB_TOKEN
时,通过 GitHub Actions 安装 GitHub Packages 托管的包只需极少的配置或额外身份验证。
配置步骤因包客户端而异。 有关为 GitHub Actions 配置工作流程的一般信息,请参阅“配置工作流程”。