目錄
在 GitHub 操作 的倉庫中自動化、自定義和執行軟件開發工作流程。 您可以發現、創建和共享操作以執行您喜歡的任何作業(包括 CI/CD),並將操作合並到完全自定義的工作流程中。
公共倉庫免費使用 GitHub 操作
創建工作流程文件
簡言之,添加工作流程文件的步驟如下。
- 在倉庫的根目錄,創建名為
.github/workflows
的目錄以存儲工作流程文件。 - 在
.github/workflows
中,為您的工作流程添加.yml
或.yaml
文件。 例如.github/workflows/continuous-integration-workflow.yml
。 - 使用“GitHub 操作 的工作流程語法”參考文檔選擇可觸發操作的事件、添加操作以及自定義工作流程。
- 將您在工作流程文件中的更改提交到您希望其中運行工作流程的分支。
以發布一個python包為例
這個例子模板來自官方,是我的一個python包(gotwo)。
# This workflows will upload a Python Package using Twine when a release is created
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
# action的名稱
name: Upload Python Package gotwo
on:
# 當master分支有push時,觸發action
#push:
# branches:
# - master
# 當一個pr被合並到master時,觸發action
pull_request:
branches:
- master
# 當發布時,觸發action
#release:
# types: [created]
jobs:
deploy:
name: publish python package to PYPI
# 此作業在 Linux 上運行
runs-on: ubuntu-latest
steps:
# 此步驟使用 GitHub 的 https://github.com/actions/checkout
- uses: actions/checkout@v2
# 設置python環境
# 此步驟使用 GitHub 的 https://github.com/actions/setup-python
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
# 安裝依賴
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine
# 構建和發布
- name: Build and publish
env:
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
python setup.py sdist bdist_wheel
twine upload dist/*
action工作流文件解讀
通過事件觸發工作流程
GitHub 上的事件發生,例如有人推送提交到倉庫或者創建議題或拉取請求時
name: descriptive-workflow-name
on: push
安排的事件開始
例子是每小時觸發一次
on:
schedule:
- cron: '0 * * * *'
外部事件發生
過濾特定分支、標記和路徑
例如,在 master
分支上進行包含 test
目錄中文件的推送或推送到 v1
標記時,此工作流程運行。
on:
push:
branches:
- master
tags:
- v1
# 事件中要考慮的文件路徑。 Optional; defaults to all.
paths:
- 'test/*'
選擇運行器
例如,您可以使用 ubuntu-later
指定 Ubuntu GitHub 托管的運行器的最新版本。
runs-on: ubuntu-latest
將工作流程狀態徽章添加到您的倉庫
如果您的工作流程使用 name
關鍵詞,則必須按名稱引用工作流程。 如果工作流程名稱包含空格,您需要將空格替換為 URL 編碼字符串 %20
。
https://github.com/<OWNER>/<REPOSITORY>/workflows/<WORKFLOW_NAME>/badge.svg
關於工作流程管理
這里比較簡單,直接參考官方文檔