簡體   English   中英

Python 在 github 操作中運行時不會發生自動版本控制

[英]Python automatic versioning not happening while running in github actions

成功構建后,我試圖將 package 從 CI 直接推送到 pypi。 我已經嘗試了幾個工具,比如“setuptools-scm”,一切正常,我可以根據我在本地package-0.0.2.post11-py3-none-any.whl等標簽自動更改版本。

當我推送與 github 操作(命令Run python3 setup.py sdist bdist_wheel )相同的代碼時,我沒有看到版本得到更新,我總是得到package-0.0.0-py3-none-any.whl

下面是 setup.py 的片段

setuptools.setup(
    name="package",
    use_scm_version=True,
    setup_requires=['setuptools_scm']

yml 文件:

 publish:
    name: Build and publish Python 🐍 distributions 📦 to PyPI and TestPyPI
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@v2
    - name: Set up Python 3.8
      uses: actions/setup-python@v2
      with:
        python-version: 3.8
    - name: Install scm version
      run: >-
        python -m
        pip install
        setuptools-scm==4.1.2        
    - name: Install wheel
      run: >-
        python -m
        pip install
        wheel==0.34.2
    - name: Build a binary wheel and a source tarball
      run: >-
        python3 setup.py sdist bdist_wheel
    - name: Publish distribution 📦 to Test PyPI
      uses: pypa/gh-action-pypi-publish@master
      with:
        password: ${{ secrets.test_pypi_password }}
        repository_url: https://test.pypi.org/legacy/
    - name: Publish distribution 📦 to PyPI
      if: startsWith(github.ref, 'refs/tags')
      uses: pypa/gh-action-pypi-publish@master
      with:
        password: ${{ secrets.pypi_password }}

pyproject.toml

# pyproject.toml
[build-system]
requires = ["setuptools>=42", "wheel", "setuptools_scm[toml]>=3.4"]
[tool.setuptools_scm]
write_to = "pkg/version.py"

我不清楚我在這里做錯了什么,任何人都可以幫助解決這個問題嗎?

謝謝

動作- uses: actions/checkout@v2在結賬時不獲取標簽。 必須另外添加以下行以從 git 獲取標簽

publish:
    name: Build and publish Python 🐍 distributions 📦 to PyPI and TestPyPI
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@v2
    - name: Fetch all history for all tags and branches
      run: git fetch --prune --unshallow
    - name: Set up Python 3.8
      uses: actions/setup-python@v2
      with:
        python-version: 3.8
    - name: Install scm version
      run: >-
        python -m
        pip install
        versiontag      
    - name: Install wheel
      run: >-
        python -m
        pip install
        wheel==0.34.2

正如kbk所說,默認情況下會簽出 repo 的淺拷貝(一次提交)。 除非最后一次提交有標簽,否則基於標簽的自動版本控制工具無法使用。

由於actions/checkout合並了 Pull Request #258 Fetch all history for all tags and branches when fetch-depth=0 ,您可以使用fetch-depth: 0選項和actions/checkout@v2來獲取完整的歷史記錄(包括標簽)和啟用 setuptools-scm 以正確推斷版本名稱。

  steps:
  - uses: actions/checkout@v2
    with:
      fetch-depth: 0
  - name: Set up Python 3.8
    uses: actions/setup-python@v2
      with:
        python-version: 3.8

不幸的是,對於大型存儲庫來說,這可能會很慢,並且actions/checkout #249存在一個未解決的問題來解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM