使用 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 工作流。

相關資訊

後續步驟

在下一節中,您將學習如何使用容器開發您的應用程式。