调用GitHub可复用工作流传递secrets报错Unrecognized named-value如何解决?
问题原因
你触发报错的根本原因是混淆了GitHub Actions调用可复用工作流时的普通参数和密钥参数的传递规则:
with字段仅用于传递非加密的普通输入参数,无法读取仓库的secrets上下文,因此把引用了secrets的参数放到with块下会直接触发「Unrecognized named-value: 'secrets'」的报错。- 所有需要传递的加密密钥参数,必须放到单独的
secrets字段下声明。
修正后的配置
你可以按照如下方式调整你的工作流配置:
name: Tests, build and deploy on: push: branches: - master - feature/** tags: - v*.*.* pull_request: workflow_dispatch: jobs: call-workflow: uses: dhis2-sre/gha-workflows/.github/workflows/instance-manager.yaml@v0.2.0 with: # 普通非敏感参数保留在with块下 DOCKER_IMAGE_NAME: dhis2/instance-manager-api PROCESS_NAME: dhis2-instance-manager # 新增secrets块传递所有密钥类参数 secrets: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} SOPS_KMS_ARN: ${{ secrets.SOPS_KMS_ARN }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} KUBECONFIG: ${{ secrets.KUBECONFIG }}
如果你调用的目标可复用工作流已经提前声明了所有需要用到的密钥参数,也可以用继承语法简化配置,无需逐个传递密钥:
jobs: call-workflow: uses: dhis2-sre/gha-workflows/.github/workflows/instance-manager.yaml@v0.2.0 with: DOCKER_IMAGE_NAME: dhis2/instance-manager-api PROCESS_NAME: dhis2-instance-manager # 直接继承当前仓库所有可用secrets secrets: inherit
内容的提问来源于stack exchange,提问作者user672009
相关产品推荐
相关产品推荐

