使用 GitHub Actions 自動化您的構建

先決條件

完成本指南的所有先前部分,從容器化 Python 應用程式開始。您必須擁有一個 GitHub 帳戶和一個 Docker 帳戶才能完成本節。

如果您尚未為您的專案建立 GitHub 儲存庫,現在是時候了。建立儲存庫後,不要忘記新增遠端並確保您可以提交併將您的程式碼推送到 GitHub

  1. 在您專案的 GitHub 儲存庫中,開啟 Settings,然後轉到 Secrets and variables > Actions

  2. Variables 選項卡下,建立一個名為 DOCKER_USERNAME 的新 Repository variable,並將其值設定為您的 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:
  lint-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12'

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt

      - name: Run pre-commit hooks
        run: pre-commit run --all-files

      - name: Run pyright
        run: pyright

  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。

摘要

在本節中,您學習瞭如何為您的 Python 應用程式設定 GitHub Actions 工作流,其中包括:

  • 執行預提交鉤子進行 linting 和格式化
  • 使用 Pyright 進行靜態型別檢查
  • 構建和推送 Docker 映象

相關資訊

後續步驟

在下一節中,您將學習如何使用 Kubernetes 進行本地開發。