使用 GitHub Actions 自动化您的构建
先决条件
完成本指南的所有先前部分,从将 Ruby on Rails 应用程序容器化开始。您必须拥有一个 GitHub 账户和一个 Docker 账户才能完成此部分。
如果您尚未为项目创建 GitHub 存储库,现在是时候了。创建存储库后,不要忘记添加远程并确保您可以提交并推送您的代码到 GitHub。
在您的项目 GitHub 存储库中,打开设置,然后转到秘密和变量 > Actions。
在变量选项卡下,创建一个名为
DOCKER_USERNAME的新存储库变量,并以您的 Docker ID 作为值。为 Docker Hub 创建一个新的个人访问令牌 (PAT)。您可以将此令牌命名为
docker-tutorial。确保访问权限包括读和写。将 PAT 作为 Repository secret 添加到您的 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 Web 界面。以下步骤向您展示如何使用 GitHub Web 界面创建工作流文件。
如果您更喜欢使用 GitHub Web 界面,请按照以下步骤操作:
前往您在 GitHub 上的仓库,然后选择 Actions 选项卡。
选择 set up a workflow yourself。
这会将您带到一个页面,用于在您的存储库中创建新的 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` 分支上的 `push` 事件。这意味着每次您将更改推送到 `main` 分支时,工作流都将运行。您可以在此处找到有关工作流触发器的更多信息。
转到您的 GitHub 存储库的Actions选项卡。它显示了工作流。选择工作流将显示所有步骤的详细信息。
当工作流完成后,前往您的Docker Hub 上的仓库。如果您在该列表中看到新的仓库,则表示 GitHub Actions 工作流已成功将镜像推送到 Docker Hub。
摘要
在本节中,您学习了如何为您的 Ruby on Rails 应用程序设置 GitHub Actions 工作流。
相关信息
后续步骤
在下一节中,您将学习如何使用容器开发您的应用程序。