使用 GitHub Actions 自动化构建
先决条件
完成本指南从容器化 Ruby on Rails 应用程序开始的所有先前章节。您必须拥有 GitHub 账户和经过验证的 Docker 账户才能完成本章节。
如果您尚未为您的项目创建 GitHub 仓库,现在是时候创建了。创建仓库后,不要忘记添加远程仓库,并确保您可以提交和推送代码到 GitHub。
-
在您的项目 GitHub 仓库中,打开设置,然后转到机密和变量 > 操作。
-
在变量选项卡下,创建一个名为
DOCKER_USERNAME的新仓库变量,并将您的 Docker ID 作为其值。 -
为 Docker Hub 创建一个新的 个人访问令牌 (PAT)。您可以将此令牌命名为
docker-tutorial。确保访问权限包括读取和写入。 -
将 PAT 作为仓库机密添加到您的 GitHub 仓库中,名称为
DOCKERHUB_TOKEN。
概述
GitHub Actions 是 GitHub 内置的 CI/CD(持续集成和持续部署)自动化工具。它允许您定义自定义工作流,以便在特定事件发生时(例如推送代码、创建拉取请求等)构建、测试和部署代码。工作流是基于 YAML 的自动化脚本,用于定义触发时要执行的一系列步骤。工作流存储在仓库的 .github/workflows/ 目录中。
在本节中,您将学习如何设置和使用 GitHub Actions 来构建 Docker 镜像并将其推送到 Docker Hub。您将完成以下步骤:
- 定义 GitHub Actions 工作流。
- 运行工作流。
1. 定义 GitHub Actions 工作流
您可以通过在仓库的 .github/workflows/ 目录中创建 YAML 文件来创建 GitHub Actions 工作流。为此,请使用您喜欢的文本编辑器或 GitHub 网页界面。以下步骤展示了如何使用 GitHub 网页界面创建工作流文件。
如果您更喜欢使用 GitHub 网页界面,请按照以下步骤操作:
-
转到 GitHub 上的您的仓库,然后选择操作选项卡。
-
选择自行设置工作流。
这会将您带到一个页面,用于在仓库中创建新的 GitHub Actions 工作流文件。默认情况下,文件创建在
.github/workflows/main.yml下,让我们将其名称更改为build.yml。
如果您更喜欢使用文本编辑器,请在仓库的 .github/workflows/ 目录中创建一个名为 build.yml 的新文件。
将以下内容添加到文件中:
name: Build and push Docker image
on:
push:
branches:
- main
jobs:
build_and_push:
runs-on: ubuntu-latest
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKER_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
tags: ${{ vars.DOCKER_USERNAME }}/${{ github.event.repository.name }}:latest每个 GitHub Actions 工作流包括一个或多个作业。每个作业由步骤组成。每个步骤可以运行一组命令或使用现有操作。上述操作有三个步骤:
-
登录到 Docker Hub:操作使用您之前创建的 Docker ID 和个人访问令牌 (PAT) 登录到 Docker Hub。
-
设置 Docker Buildx:操作设置 Docker Buildx,这是一个扩展 Docker CLI 功能的 CLI 插件。
-
构建并推送:操作构建 Docker 镜像并将其推送到 Docker Hub。
tags参数指定镜像名称和标签。本例中使用latest标签。
2. 运行工作流
提交更改并将其推送到 main 分支。此工作流会在您每次向 main 分支推送更改时运行。您可以在 GitHub 文档 中找到有关工作流触发器的更多信息。
转到 GitHub 仓库的操作选项卡。它会显示工作流。选择工作流可以查看其所有步骤的细分。
工作流完成后,转到 Docker Hub 上的仓库。如果您在该列表中看到新仓库,则表示 GitHub Actions 工作流已成功将镜像推送到 Docker Hub。
总结
在本节中,您学习了如何为您的 Ruby on Rails 应用程序设置 GitHub Actions 工作流。
相关信息:
后续步骤
在下一节中,您将学习如何使用容器开发应用程序。