使用 GitHub Actions 自动化构建
先决条件
完成本指南的所有先前章节,从容器化 Ruby on Rails 应用程序开始。你必须拥有一个GitHub账户和一个Docker账户才能完成本节。
如果你还没有为项目创建GitHub 仓库,现在是时候创建了。创建仓库后,别忘了添加远程仓库并确保你可以提交代码并推送到 GitHub。
在你的项目 GitHub 仓库中,打开设置,然后转到Secrets and variables > Actions。
在Variables选项卡下,创建一个新的Repository variable,命名为
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 网页界面来完成。以下步骤展示了如何使用 GitHub 网页界面创建工作流程文件。
如果你倾向于使用 GitHub 网页界面,请按照以下步骤操作
前往你的 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 工作流程包含一个或多个作业。每个作业由多个步骤组成。每个步骤可以运行一组命令,也可以使用已经存在的 Actions。上面的 Action 有三个步骤
登录 Docker Hub:该 Action 使用你之前创建的 Docker ID 和个人访问令牌 (PAT) 登录到 Docker Hub。
设置 Docker Buildx:该 Action 设置 Docker Buildx,这是一个扩展 Docker CLI 功能的 CLI 插件。
构建并推送:该 Action 构建 Docker 镜像并推送到 Docker Hub。
tags
参数指定镜像名称和标签。本示例中使用的是latest
标签。
2. 运行工作流程
让我们提交更改,并将它们推送到 main
分支。在上面的工作流程中,触发器设置为 main
分支上的 push
事件。这意味着每次你向 main
分支推送更改时,工作流程都会运行。你可以在这里找到更多关于工作流程触发器的信息。
前往你的 GitHub 仓库的Actions选项卡。它会显示工作流程。选择工作流程会显示所有步骤的详细信息。
工作流程完成后,前往你在Docker Hub 上的仓库。如果你在该列表中看到新的仓库,说明 GitHub Actions 工作流程已成功将镜像推送到 Docker Hub。
总结
在本节中,你学习了如何为你的 Ruby on Rails 应用程序设置 GitHub Actions 工作流程。
相关信息
后续步骤
在下一节中,你将学习如何使用容器开发你的应用程序。