为您的 Ruby on Rails 应用程序配置 CI/CD

先决条件

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

概述

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

  1. 在 GitHub 上创建一个新的存储库。
  2. 定义 GitHub Actions 工作流。
  3. 运行工作流。

第一步:创建存储库

创建 GitHub 存储库,配置 Docker Hub 凭据,并推送您的源代码。

  1. 在 GitHub 上创建一个新的存储库

  2. 打开存储库的“**设置**”,然后转到“**密钥和变量**”>“**操作**”。

  3. 创建一个名为“`DOCKER_USERNAME`”的新“**存储库变量**”,并将您的 Docker ID 作为值。

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

  5. 将 PAT 作为 **存储库密钥** 添加到您的 GitHub 存储库中,名称为“`DOCKERHUB_TOKEN`”。

  6. 在您机器上的本地存储库中,运行以下命令将 origin 更改为您刚刚创建的存储库。确保将“`your-username`”更改为您的 GitHub 用户名,并将“`your-repository`”更改为您创建的存储库的名称。

    $ git remote set-url origin https://github.com/your-username/your-repository.git
    
  7. 运行以下命令暂存、提交并将您的本地存储库推送到 GitHub。

    $ git add -A
    $ git commit -m "my commit"
    $ git push -u origin main
    

第二步:设置工作流

设置您的 GitHub Actions 工作流,用于构建、测试和将镜像推送到 Docker Hub。

  1. 转到 GitHub 上的存储库,然后选择“**操作**”选项卡。

  2. 选择“**自行设置工作流**”。

    这将带您到一个页面,用于在您的存储库中创建一个新的 GitHub 操作工作流文件,默认情况下位于“`.github/workflows/main.yml`”下。

  3. 在编辑器窗口中,复制并粘贴以下 YAML 配置。

    name: ci
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        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

    如需详细了解 docker/build-push-action 的 YAML 语法,请参阅 GitHub Action 自述文件

第三步:运行工作流

保存工作流文件并运行作业。

  1. 选择提交更改... 并将更改推送到 main 分支。

    推送提交后,工作流将自动启动。

  2. 转到“操作”选项卡。它会显示工作流。

    选择工作流将显示所有步骤的细分。

  3. 工作流完成后,转到 Docker Hub 上的仓库

    如果您在该列表中看到新的仓库,则表示 GitHub Actions 已成功将镜像推送到 Docker Hub。

总结

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

相关信息

后续步骤

接下来,了解如何在部署之前在 Kubernetes 上本地测试和调试您的工作负载。