跳转至

Github Package and Releases

Publish a Package

还是在.github/workflows下面,创建一个publish.yml文件

这次我们的workflow包含:创建一个可直接拉取使用的package (docker image).

Text Only
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
name: Publish to Docker
on:
  push:
    branches:
      - main
permissions:
  packages: write
  contents: read
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Docker meta # 定义了Docker镜像的名称和标签,将存储在GitHub Container Registry (ghcr.io)中
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: ghcr.io/YOURNAME/publish-packages/game
          tags: type=sha
      - name: Login to GHCR # 完成对GitHub Container Registry的认证
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Build container # 根据Dockerfile构建Docker镜像
        uses: docker/build-push-action@v5
        with:
          context: .
          push: true # 镜像会被推送到ghcr.io,这就创建了一个包
          tags: ${{ steps.meta.outputs.tags }}

构建完成后,你可以在以下位置找到创建的包:

  • 在你的GitHub仓库页面的"Packages"标签页
  • 通过URL访问:ghcr.io/YOURNAME/publish-packages/game

在仓库的右边菜单栏,寻找package并点击:

alt text

随后你可以在package中看见详细内容,包括安装方式和版本信息(Recent tagged image versions)。

alt text

最后达成的效果是:这个package是docker image,已经上传到docker hub上面了,可以直接拉取使用。

Release

每当我们的项目取得重大进展/达到某一个里程碑时,我们都会发布一个新版本,这种行为叫做release

Draft a Release

在仓库的右边菜单栏,寻找Release并点击:

alt text

这里我们可以新建一个release,并且可以添加一些描述信息,也可以上传一些文件,比如我们的docker image。

值得注意的是:tag的命名规范,我们应该遵循Semantics Versioning,即MAJOR.MINOR.PATCH,其中MAJOR表示主版本号,MINOR表示次版本号,PATCH表示补丁号。

Download a Release

待版本发布后,我们可以看见release的信息:

  • What's Changed: 这个版本的新变化是什么
  • New Contributors: 这个新版本的contributors有哪些
  • Assets: 这个版本的资源有哪些,比如我们的docker image / src code / ...

alt text

最终我们可以得到类似于上面的版本发布信息(release note)

每当一个release发布后,会自动通知follower,并且在仓库的主页面上面显示出来🤩