使用github action發布python包到Pypi


github action 官方中文文檔

在 GitHub 操作 的倉庫中自動化、自定義和執行軟件開發工作流程。 您可以發現、創建和共享操作以執行您喜歡的任何作業(包括 CI/CD),並將操作合並到完全自定義的工作流程中。

公共倉庫免費使用 GitHub 操作

創建工作流程文件

簡言之,添加工作流程文件的步驟如下。

  1. 在倉庫的根目錄,創建名為 .github/workflows 的目錄以存儲工作流程文件。
  2. .github/workflows 中,為您的工作流程添加 .yml.yaml 文件。 例如 .github/workflows/continuous-integration-workflow.yml
  3. 使用“GitHub 操作 的工作流程語法”參考文檔選擇可觸發操作的事件、添加操作以及自定義工作流程。
  4. 將您在工作流程文件中的更改提交到您希望其中運行工作流程的分支。

以發布一個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

關於工作流程管理

這里比較簡單,直接參考官方文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM