本文发表于 731 天前,其中的信息可能已经事过境迁
文章摘要
加载中...|
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结 投诉

前期准备 ​

在使用自动部署之前,确保你对 Docker 和 GitHub Actions 有一定的了解。

Docker 是什么 ​

Docker 是一种容器化平台,允许开发者将应用程序及其依赖项打包到一个容器中,确保在不同环境中的一致性运行。

GitHub Actions 是什么 ​

GitHub Actions 是 GitHub 提供的持续集成和持续部署工具,可用于自动化软件开发工作流程。

注册账号 ​

如果你已有 GitHub 和 DockerHub 的账号,你可以跳过这一步

在 DockerHub 注册一个账号,或者使用现有的 GitHub 账号进行登录。注册后,请记录下你的 username 和 password,这将用于后续编写 GitHub Actions 工作流。

另外,除了 DockerHub,GitHub 也有一个类似的服务,叫做 GitHub Container Registry,简称 GCR。本文也将介绍如何同时推送 Docker Image 到 DockerHub 和 GCR。

准备信息 ​

现在,你已经为自动化部署的下一步做好了充分的准备。接下来,将深入介绍如何配置 GitHub Actions Workflow 文件以实现自动化部署

仓库操作 ​

新建机密 ​

在你的 GitHub 仓库中,点击 Settings,然后点击左侧导航栏的 Secrets and variables 类别下的 Actions 选项

一个填写示例一个填写示例

然后分别新增下面的内容

  • DOCKER_USERNAME: 你的 DockerHub 用户名
  • DOCKER_PASSWORD: 你的 DockerHub 密码

添加成功示例添加成功示例

创建工作流文件 ​

然后在仓库中新增一个 .github/workflows/docker.yml 文件,内容如下

yml
# 工作流名称
name: Publish Docker image
# 触发工作流的事件,这里表示发布新版本时触发
on:
  release:
    types: [published]
# 工作流程
jobs:
  push_to_registry:
    name: Push Docker image to multiple registries
    # 工作流运行的机器环境
    runs-on:
      ubuntu-latest
    # 设置工作流程的权限
    permissions:
      packages: write
      contents: read
    # 步骤
    steps:
      # 检出仓库
      - name: Check out the repo
        uses: actions/checkout@v4
      # 登录到 Docker Hub
      - name: Log in to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      # 登录到 GitHub Container Registry
      - name: Log in to the Container registry
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          # GitHub Actions 会默认提供一个特殊的 Token (GITHUB_TOKEN),用于执行工作流程中的操作,包括登录到容器注册表
          password: ${{ secrets.GITHUB_TOKEN }}
      # 提取 Docker 的元数据(标签、标签)
      - name: Extract metadata (tags, labels) for Docker
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            imsyy/splayer
            ghcr.io/${{ github.repository }}
      # 构建并推送 Docker 镜像
      - name: Build and push Docker image
        uses: docker/build-push-action@v5
        with:
          context: . # Docker 上下文路径,表示 Dockerfile 所在的目录为当前目录
          file: ./Dockerfile # Dockerfile 文件的路径
          push: true # 设置为 true 表示构建完成后推送 Docker 镜像到镜像仓库
          tags: ${{ steps.meta.outputs.tags }} # 使用 metadata-action 输出的标签作为 Docker 镜像的标签
          labels: ${{ steps.meta.outputs.labels }} # 使用 metadata-action 输出的标签作为 Docker 镜像的标签

完成 ​

大功告成!试着去发布一下新版本试试吧 🎉

赞赏博主
评论 隐私政策