GitHub Workflow中版本升级无法修改代码问题求助
问题排查与解决方案
你的判断完全正确:GitHub Workflow执行时会在runner环境中创建仓库的本地副本,poetry version确实修改了副本里的pyproject.toml(以及可能的poetry.lock),但这些修改没有被提交并推回原仓库,所以你看不到版本变化。
要解决这个问题,需要在Workflow中添加提交修改和推回仓库的步骤,同时确保Git配置和权限正确。以下是修正后的完整Workflow配置:
name: Bump version on: workflow_dispatch: inputs: version: description: 'Semver type of new version (major / minor / patch)' required: true type: choice options: - patch - minor - major jobs: bump-version: runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v2.4.0 with: persist-credentials: true # 保留Git凭据,方便后续push - name: Setup Python uses: actions/setup-python@v2 with: python-version: '3.x' architecture: 'x64' - name: Setup Poetry run: | python -m pip install -U pip pip install poetry - name: Setup Git run: | git config user.name "${GITHUB_ACTOR}" git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" # 推荐用GitHub官方noreply邮箱 - name: Bump version run: poetry version ${{ github.event.inputs.version }} - name: Stage version changes run: git add pyproject.toml poetry.lock # 提交Poetry修改的核心文件 - name: Commit version bump run: git commit -m "Bump version to $(poetry version --short)" - name: Push changes back to repo run: git push
关键修改说明:
- 文件暂存:
git add pyproject.toml poetry.lock——poetry version会修改这两个文件,必须将它们加入Git暂存区才能提交。 - 版本提交:用
poetry version --short自动获取新版本号,生成标准化的提交信息,避免手动输入错误。 - 推回仓库:
git push是让版本变更在原仓库生效的核心步骤,将本地副本的修改同步回远程仓库。 - Git邮箱优化:改用GitHub官方推荐的noreply邮箱格式,避免权限验证或提交记录显示异常。
额外注意事项:
- 确保触发Workflow的账号对目标仓库有写入权限。
- 默认的
GITHUB_TOKEN已包含push权限,无需额外配置密钥,除非仓库有特殊权限限制。 - 如果仓库启用了分支保护规则(比如要求PR合并),需确保Workflow运行的分支允许直接push,或调整规则让
GITHUB_TOKEN有权限绕过限制。
内容的提问来源于stack exchange,提问作者SLN
相关产品推荐
相关产品推荐

