如何优化GitHub Actions工作流:合并冗余任务并设置动态变量
GitHub Actions工作流优化:移除冗余代码统一任务逻辑
你可以通过GitHub Actions的条件表达式直接设置环境变量,把两个重复的Job合并成一个,彻底去掉冗余代码和if判断。以下是具体的优化方案:
原工作流代码
name: my-workflow run-name: my-workflow on: issues: types: [opened, edited, closed] pull_request: types: [opened, edited, closed] jobs: issue-push: if: github.event_name == 'issues' runs-on: "ubuntu-latest" steps: - run: | # Do something here with ${{ github.event.issue.html_url }} pull-request-push: if: github.event_name == 'pull_request' runs-on: "ubuntu-latest" steps: - run: | # Do something here with ${{ github.event.pull_request.html_url }}
优化后的工作流代码
name: my-workflow run-name: my-workflow on: issues: types: [opened, edited, closed] pull_request: types: [opened, edited, closed] jobs: event-push: runs-on: "ubuntu-latest" steps: - name: 设置触发类型环境变量 env: TRIGGER_TYPE: ${{ github.event_name == 'issues' && 'issue' || 'pull_request' }} run: | # 动态获取对应事件的链接并处理 echo "当前处理链接: ${{ github.event[env.TRIGGER_TYPE].html_url }}" # 在这里编写你的业务逻辑
关键说明
- 环境变量动态赋值:用GitHub Actions原生逻辑表达式
${{ github.event_name == 'issues' && 'issue' || 'pull_request' }}直接给TRIGGER_TYPE赋值,自动根据触发事件类型切换取值 - 动态访问事件数据:通过
${{ github.event[env.TRIGGER_TYPE].html_url }}的方括号语法,动态访问github.event下的对应属性,实现一套逻辑兼容Issue和Pull Request两种场景 - 彻底移除冗余:合并了原有的两个Job,去掉所有
if判断,用统一逻辑处理所有触发事件
内容的提问来源于stack exchange,提问作者A. Gardner
相关产品推荐
相关产品推荐

