使用 GitHub Actions 自動化您的構建
先決條件
完成本指南的所有先前部分,從容器化 Python 應用程式開始。您必須擁有一個 GitHub 帳戶和一個 Docker 帳戶才能完成本節。
如果您尚未為您的專案建立 GitHub 儲存庫,現在是時候了。建立儲存庫後,不要忘記新增遠端並確保您可以提交併將您的程式碼推送到 GitHub。
在您專案的 GitHub 儲存庫中,開啟 Settings,然後轉到 Secrets and variables > Actions。
在 Variables 選項卡下,建立一個名為
DOCKER_USERNAME
的新 Repository variable,並將其值設定為您的 Docker ID。為 Docker Hub 建立一個新的個人訪問令牌 (PAT)。您可以將此令牌命名為
docker-tutorial
。請確保訪問許可權包括讀寫。將 PAT 作為 Repository secret 新增到您的 GitHub 倉庫中,名稱為
DOCKERHUB_TOKEN
。
概述
GitHub Actions 是內置於 GitHub 中的 CI/CD(持續整合和持續部署)自動化工具。它允許您在發生特定事件(例如,推送程式碼、建立拉取請求等)時定義用於構建、測試和部署程式碼的自定義工作流。工作流是基於 YAML 的自動化指令碼,它定義了觸發時要執行的一系列步驟。工作流儲存在儲存庫的 .github/workflows/
目錄中。
在本節中,您將學習如何設定和使用 GitHub Actions 來構建您的 Docker 映象並將其推送到 Docker Hub。您將完成以下步驟:
- 定義 GitHub Actions 工作流程。
- 執行工作流程。
1. 定義 GitHub Actions 工作流
您可以透過在儲存庫的 .github/workflows/
目錄中建立 YAML 檔案來建立 GitHub Actions 工作流。為此,請使用您喜歡的文字編輯器或 GitHub Web 介面。以下步驟向您展示如何使用 GitHub Web 介面建立工作流檔案。
如果您更喜歡使用 GitHub Web 介面,請按照以下步驟操作:
前往您在 GitHub 上的倉庫,然後選擇 Actions 選項卡。
選擇 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 工作流都包含一個或多個作業。每個作業都包含多個步驟。每個步驟都可以執行一組命令或使用已存在的動作。上述動作包含三個步驟:
登入 Docker Hub:此動作使用您之前建立的 Docker ID 和個人訪問令牌 (PAT) 登入 Docker Hub。
設定 Docker Buildx:此動作設定 Docker Buildx,這是一個擴充套件 Docker CLI 功能的 CLI 外掛。
構建並推送:此動作構建 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 進行本地開發。