GitHub Actions构建Python包时版本号未正常替换问题咨询
解决GitHub Actions中版本号变量未替换的问题
问题原因
GitHub Actions的env字段中直接使用$(python setup.py --version)这类shell命令语法不会被执行,这里的VERSION只是被赋值为字符串$(python setup.py --version),而非命令执行后的实际版本号,导致最终生成的包名称保留了$VERSION占位符。
解决方案
移除顶层env中的VERSION定义,在Python环境配置完成后,添加一个步骤通过shell命令提取版本号并写入GitHub Actions的环境变量中(使用$GITHUB_ENV文件,这是官方推荐的设置环境变量的方式)。
修改后的完整脚本
name: Build cs package on: push: branches: - master pull_request: branches: - master jobs: build-and-test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.10' - name: Extract version from setup.py run: echo "VERSION=$(python setup.py --version)" >> $GITHUB_ENV - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt - name: Run tests run: python -m unittest discover -v - name: Build artifact run: | echo $VERSION python setup.py sdist bdist_wheel - name: Upload artifact uses: actions/upload-artifact@v3 with: name: cs-$VERSION path: dist
关键说明
- 新增的
Extract version from setup.py步骤会执行python setup.py --version获取版本号,然后通过echo "VERSION=xxx" >> $GITHUB_ENV将版本号写入环境变量,后续所有步骤都可以直接使用$VERSION调用实际版本号。 - 这样修改后,
Upload artifact步骤中的name: cs-$VERSION就会被替换为cs-0.0.9这类实际的包名称。
内容的提问来源于stack exchange,提问作者clattenburg cake
相关产品推荐
相关产品推荐

