如何在GitHub Actions中按矩阵值调用对应仓库密钥?
动态调用GitHub Actions矩阵对应的密钥
在使用GitHub Actions矩阵部署多项目时,可通过密钥的索引引用语法实现根据matrix值动态匹配对应密钥,具体修改如下:
修改后的完整工作流配置
jobs: deploy: runs-on: ubuntu-latest strategy: matrix: projects: ['Api', 'Web'] steps: - name: Download uses: actions/download-artifact@v3 with: name: ${{ matrix.projects }} path: ${{ github.workspace }} - name: Publish id: deploy-to-webapp uses: azure/webapps-deploy@v2 with: app-name: ${{ matrix.projects }} # 动态拼接密钥名称并引用 publish-profile: ${{ secrets[format('AZURE_PROFILE_{0}', matrix.projects)] }} package: ${{ github.workspace }}/${{ matrix.projects }}.nupkg
两种动态引用密钥的写法
写法1:使用format函数(可读性更强)
通过format函数将固定前缀与matrix变量拼接成完整密钥名称,再通过方括号索引引用:
publish-profile: ${{ secrets[format('AZURE_PROFILE_{0}', matrix.projects)] }}
写法2:直接字符串拼接
直接通过+运算符拼接字符串,同样用方括号索引引用:
publish-profile: ${{ secrets['AZURE_PROFILE_' + matrix.projects] }}
注意事项
- 确保仓库中已创建对应名称的密钥(
AZURE_PROFILE_Api、AZURE_PROFILE_Web),GitHub Secrets大小写敏感,需与matrix中的值完全匹配。 - 动态引用时必须使用方括号
[]语法,不能使用点.语法(如secrets.AZURE_PROFILE_${{ matrix.projects }}是无效写法)。
内容的提问来源于stack exchange,提问作者Miguel Moura
相关产品推荐
相关产品推荐

