GitHub Action多标签推送时未触发scyllax-cli-*规则的问题
GitHub Action多标签提交时无法触发CLI发布工作流问题
问题背景
配置了GitHub Action工作流,预期提交带有scyllax-cli-*格式的标签时触发CLI发布流程,但仅单个标签提交时工作流正常运行,多标签提交时完全无法触发。目前只能通过空提交删除重建标签来触发,这不是合理方案。
当前工作流配置
name: (CLI) Release on: push: tags: - 'scyllax-cli-*' jobs: publish_cli:
疑问
是否误解了on.push.tags的逻辑?它是否要求提交上的所有标签都匹配scyllax-cli-*?如果是,有什么替代方案?
解答
关于on.push.tags的逻辑
没错,on.push.tags的规则是:只有当推送的所有标签都完全匹配指定模式时,工作流才会触发。如果推送的标签里有任意一个不匹配scyllax-cli-*,整个工作流就不会启动,这就是多标签提交失败的核心原因。
替代方案
方案1:全局推送事件+条件判断
将触发逻辑改为监听所有推送事件,在工作流中通过条件判断检查是否存在符合规则的标签,是最灵活的解决方式:
name: (CLI) Release on: [push] jobs: publish_cli: # 检查当前推送的引用是否是符合格式的标签 if: startsWith(github.ref, 'refs/tags/scyllax-cli-') runs-on: ubuntu-latest steps: # 此处添加你的CLI发布步骤
方案2:结合手动触发(可选)
如果需要更灵活的触发方式,可以添加手动触发选项,同时保留标签自动触发逻辑:
name: (CLI) Release on: push: workflow_dispatch: inputs: target_tag: description: '指定要发布的scyllax-cli标签' required: true jobs: publish_cli: if: > (startsWith(github.ref, 'refs/tags/scyllax-cli-')) || (github.event_name == 'workflow_dispatch' && startsWith(github.event.inputs.target_tag, 'scyllax-cli-')) runs-on: ubuntu-latest steps: # 此处添加你的CLI发布步骤
方案3:标签排除规则(限特定场景)
如果能明确列出不需要触发的标签模式,可以用tags-ignore配合原规则,但灵活性不如方案1:
name: (CLI) Release on: push: tags: - 'scyllax-cli-*' tags-ignore: - 'scyllax-core-*' # 示例:排除其他项目的标签
内容的提问来源于stack exchange,提问作者Carter
相关产品推荐
相关产品推荐

