如何在合并到master或VERSION含b时触发GitHub Action发布任务
解决GitHub Actions中添加分支或VERSION文件内容的发布条件
要实现合并到master分支或者仓库根目录VERSION文件包含字母b时发布包的需求,你需要在现有Workflow中添加两个关键修改:
- 添加读取VERSION文件内容的步骤,将内容存入环境变量
- 修改上传步骤的
if条件,使用逻辑或(||)同时判断两个条件
以下是修改后的完整Workflow代码:
publish: needs: [build] runs-on: [self-hosted, generic-linux] container: python:3 steps: - name: Checkout repository uses: actions/checkout@v4 # 新增:需要检出代码才能读取VERSION文件 with: fetch-depth: 1 - name: Read VERSION file content id: get_version run: echo "VERSION_CONTENT=$(cat VERSION)" >> $GITHUB_ENV # 读取VERSION内容存入环境变量 - name: Download artifacts uses: actions/download-artifact@v2 with: name: package path: ./dist - name: Install requirements run: | pip install --upgrade pip pip install --upgrade --prefer-binary twine - name: Upload to artifactory # 修改if条件:master分支 或者 VERSION包含字母b if: ${{ github.ref == 'refs/heads/master' || contains(env.VERSION_CONTENT, 'b') }} env: TWINE_REPOSITORY_URL: https://artifactory.example.com/artifactory/api/pypi/pypi-all TWINE_REPOSITORY: pypi-all TWINE_USERNAME: "${{ secrets.PUBLISH_USERNAME }}" TWINE_PASSWORD: "${{ secrets.PUBLISH_BEARER_TOKEN }}" run: | twine upload --skip-existing --verbose dist/*
关键说明:
- 新增
Checkout repository步骤:因为需要访问仓库里的VERSION文件,必须先检出代码到runner环境中 Read VERSION file content步骤:通过cat VERSION读取文件内容,写入GITHUB_ENV环境变量,后续条件判断可以直接调用env.VERSION_CONTENT- 上传步骤的
if条件:使用||实现逻辑或,只要满足其中一个条件就会执行上传操作
内容的提问来源于stack exchange,提问作者WZH
相关产品推荐
相关产品推荐

