如何在GitHub Actions中正确拼接分支名与矩阵变量?
解决方案
首先,你需要正确获取tj-actions/branch-names的分支名输出,并且GitHub Actions中字符串拼接不需要使用join函数(该函数用于数组拼接)。以下是正确的实现方式:
完整示例工作流
jobs: build-and-deploy: runs-on: ubuntu-latest strategy: matrix: appname: [web, api] steps: - name: Checkout code uses: actions/checkout@v4 # 第一步:获取分支名,必须给该步骤设置id以便后续引用 - name: Fetch branch name id: branch_info uses: tj-actions/branch-names@v8 # 第二步:部署镜像,直接拼接分支名与matrix.appname - name: Deploy image run: | # 直接拼接两个变量生成目标app名称 TARGET_APP="${{ steps.branch_info.outputs.current }}${{ matrix.appname }}" echo "Starting deployment for: $TARGET_APP" # 这里添加你的实际部署命令,例如推送镜像到仓库、部署到服务器等
问题原因与修复说明
id未被识别:
你需要先给tj-actions/branch-names步骤设置一个明确的id(示例中为branch_info),然后通过steps.步骤id.outputs.current来获取当前分支名,而不是直接使用${{ id }}。tj-actions/branch-names的默认输出字段current对应当前分支名称。join方法无效:
GitHub Actions中的join函数用于拼接数组元素(比如join(', ', ['a', 'b'])会得到a, b),不适合字符串直接拼接。字符串拼接只需将两个变量表达式直接相邻放置即可,或者使用format函数(比如${{ format('{0}{1}', steps.branch_info.outputs.current, matrix.appname) }}),效果一致。
内容的提问来源于stack exchange,提问作者pcace
相关产品推荐
相关产品推荐

