You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions作业中提取PR标签变量供后续使用

GitHub Actions 提取PR标签参数并传递给脚本

可行性说明

完全可行。GitHub Actions支持通过Shell脚本处理PR标签内容,提取指定格式中的参数并设置为变量,供后续步骤的脚本调用。

具体实现步骤

1. 修正作业触发条件

原条件无法正确匹配数组中的标签,需改用any函数判断是否存在符合格式的标签:

if: ${{ any(github.event.pull_request.labels.*.name, startsWith(., 'I18n ')) }}

注:此处大小写敏感,若标签为小写i18n,需同步修改匹配字符串。

2. 提取标签参数并设置变量

在提取步骤中,用Shell命令过滤标签、切割参数,并将结果写入GitHub Actions的输出变量:

- name: extract the parameters from the matching label
  id: extract-i18n-params
  run: |
    # 过滤出符合"I18n <product-id> <lang-tag>"格式的标签
    I18N_LABEL=$(echo "${{ github.event.pull_request.labels.*.name }}" | grep -o "I18n [^ ]* [^ ]*")
    # 切割标签内容,分别提取两个参数
    PRODUCT_ID=$(echo "$I18N_LABEL" | awk '{print $2}')
    LANG_TAG=$(echo "$I18N_LABEL" | awk '{print $3}')
    # 将参数写入输出变量,供后续步骤调用
    echo "productID=$PRODUCT_ID" >> $GITHUB_OUTPUT
    echo "langTag=$LANG_TAG" >> $GITHUB_OUTPUT

若容器环境缺少grep或awk,需先安装对应工具(如Ubuntu容器执行apt-get install -y grep awk)。

3. 在脚本步骤中使用参数

通过步骤ID引用输出变量,将参数传递给目标脚本:

- name: Check i18n tokens
  run: ./my-script-here.sh ${{ steps.extract-i18n-params.outputs.productID }} ${{ steps.extract-i18n-params.outputs.langTag }}

完整配置示例

jobs:
    checkI18NTokensJob:
        if: ${{ any(github.event.pull_request.labels.*.name, startsWith(., 'I18n ')) }}
        container: xxx
        env:
            FORCE_OUTPUT_MISSING_TRANSLATION_TO_FILE: true
        steps:
            - name: checkout
              uses: actions/checkout@v3
            - name: Install dependencies
              run: yarn
            - name: extract the parameters from the matching label
              id: extract-i18n-params
              run: |
                I18N_LABEL=$(echo "${{ github.event.pull_request.labels.*.name }}" | grep -o "I18n [^ ]* [^ ]*")
                PRODUCT_ID=$(echo "$I18N_LABEL" | awk '{print $2}')
                LANG_TAG=$(echo "$I18N_LABEL" | awk '{print $3}')
                echo "productID=$PRODUCT_ID" >> $GITHUB_OUTPUT
                echo "langTag=$LANG_TAG" >> $GITHUB_OUTPUT
            - name: Check i18n tokens
              run: ./my-script-here.sh ${{ steps.extract-i18n-params.outputs.productID }} ${{ steps.extract-i18n-params.outputs.langTag }}

注意事项

  • 确保PR标签严格遵循I18n <product-id> <lang-tag>格式,仅包含三个部分,否则参数提取会出错
  • 若存在多个符合格式的标签,脚本会提取第一个匹配的标签内容

内容的提问来源于stack exchange,提问作者Bertuz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:52:40