設定 Ruby on Rails 應用程式的 CI/CD

先決條件

完成本指南先前所有章節,從 將 Ruby on Rails 應用程式容器化 開始。您必須擁有 GitHubDocker概觀

在本節中,您將學習如何設定和使用 GitHub Actions 來建置和測試 Docker 映像,以及將其推送至 Docker Hub。您將完成以下步驟

  1. 在 GitHub 上建立新的儲存庫。
  2. 定義 GitHub Actions 工作流程。
  3. 執行工作流程。

步驟一:建立儲存庫

建立 GitHub 儲存庫、設定 Docker Hub 憑證,並推送您的原始碼。

  1. 在 GitHub 上建立新的儲存庫個人存取權杖 (PAT)。您可以將此權杖命名為 `docker-tutorial`。請確定存取權限包含讀取和寫入。

  2. 將 PAT 作為**儲存庫密鑰**新增至您的 GitHub 儲存庫,名稱為 `DOCKERHUB_TOKEN`。

  3. 在您機器上的本地儲存庫中,執行以下命令將來源變更為您剛才建立的儲存庫。請確定您將 `your-username` 更改為您的 GitHub 使用者名稱,並將 `your-repository` 更改為您建立的儲存庫名稱。

    $ git remote set-url origin https://github.com/your-username/your-repository.git
    
  4. 執行以下命令來暫存、提交和推送您的本地儲存庫至 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 README步驟三:執行工作流程

    儲存工作流程檔案並執行作業。

    1. 選擇提交變更... 並將變更推送至 main 分支。

      推送提交後,工作流程會自動啟動。

    2. 前往動作索引標籤。它會顯示工作流程。

      選擇工作流程會顯示所有步驟的細目。

    3. 工作流程完成後,前往您在 Docker Hub 上的儲存庫

      如果您在該列表中看到新的儲存庫,則表示 GitHub Actions 已成功將映像推送至 Docker Hub。

    摘要

    在本節中,您學習了如何為您的 Ruby on Rails 應用程式設定 GitHub Actions 工作流程。

    相關資訊

    後續步驟

    接下來,了解如何在部署之前在 Kubernetes 上本地測試和除錯您的工作負載。