使用 GitHub Actions 自动化您的构建

先决条件

完成本指南的所有先前部分,从将 Ruby on Rails 应用程序容器化开始。您必须拥有一个 GitHub 账户和一个 Docker 账户才能完成此部分。

如果您尚未为项目创建 GitHub 存储库,现在是时候了。创建存储库后,不要忘记添加远程并确保您可以提交并推送您的代码到 GitHub。

  1. 在您的项目 GitHub 存储库中,打开设置,然后转到秘密和变量 > Actions

  2. 变量选项卡下,创建一个名为 DOCKER_USERNAME 的新存储库变量,并以您的 Docker ID 作为值。

  3. 为 Docker Hub 创建一个新的个人访问令牌 (PAT)。您可以将此令牌命名为 docker-tutorial。确保访问权限包括读和写。

  4. 将 PAT 作为 Repository secret 添加到您的 GitHub 仓库中,名称为 DOCKERHUB_TOKEN

概述

GitHub Actions 是内置于 GitHub 中的 CI/CD(持续集成和持续部署)自动化工具。它允许您在发生特定事件(例如,推送代码、创建拉取请求等)时为构建、测试和部署代码定义自定义工作流。工作流是一个基于 YAML 的自动化脚本,它定义了触发时要执行的一系列步骤。工作流存储在存储库的 .github/workflows/ 目录中。

在本节中,您将学习如何设置和使用 GitHub Actions 来构建您的 Docker 镜像并将其推送到 Docker Hub。您将完成以下步骤:

  1. 定义 GitHub Actions 工作流程。
  2. 运行工作流程。

1. 定义 GitHub Actions 工作流

您可以通过在存储库的 .github/workflows/ 目录中创建 YAML 文件来创建 GitHub Actions 工作流。为此,请使用您喜欢的文本编辑器或 GitHub Web 界面。以下步骤向您展示如何使用 GitHub Web 界面创建工作流文件。

如果您更喜欢使用 GitHub Web 界面,请按照以下步骤操作:

  1. 前往您在 GitHub 上的仓库,然后选择 Actions 选项卡。

  2. 选择 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 工作流包含一个或多个作业。每个作业由多个步骤组成。每个步骤可以运行一组命令,也可以使用已存在的动作。上面的动作有三个步骤:

  1. 登录 Docker Hub:此操作使用您之前创建的 Docker ID 和个人访问令牌 (PAT) 登录 Docker Hub。

  2. 设置 Docker Buildx:此操作设置 Docker Buildx,这是一个扩展 Docker CLI 功能的 CLI 插件。

  3. 构建并推送:此操作构建 Docker 镜像并将其推送到 Docker Hub。`tags` 参数指定镜像名称和标签。在此示例中使用了 `latest` 标签。

2. 运行工作流

让我们提交更改,并将它们推送到 `main` 分支。在上面的工作流中,触发器设置为 `main` 分支上的 `push` 事件。这意味着每次您将更改推送到 `main` 分支时,工作流都将运行。您可以在此处找到有关工作流触发器的更多信息。

转到您的 GitHub 存储库的Actions选项卡。它显示了工作流。选择工作流将显示所有步骤的详细信息。

当工作流完成后,前往您的Docker Hub 上的仓库。如果您在该列表中看到新的仓库,则表示 GitHub Actions 工作流已成功将镜像推送到 Docker Hub。

摘要

在本节中,您学习了如何为您的 Ruby on Rails 应用程序设置 GitHub Actions 工作流。

相关信息

后续步骤

在下一节中,您将学习如何使用容器开发您的应用程序。

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.