Mic*_*hen 5 github-actions github-secret
我有一个可重用的工作流程,用于构建 Docker 映像并将其推送到 ECR。
工作流的输入之一用于指定 docker build 命令的参数。这是可重用工作流程中的命令:
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG ${{ inputs.DOCKER_BUILD_ARGS }} .
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我需要 DOCKER_BUILD_ARGS 来包含机密,例如:
secrets:
AWS_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
uses: XXXXX/.github/workflows/DockerBuildPushECR.yml@main
with:
ECR_REGISTRY: XXXXXX
ECR_REPOSITORY: XXXXX
DOCKER_BUILD_ARGS: "--build-arg PASSWORD=${{ secrets.PASSWORD }}"
Run Code Online (Sandbox Code Playgroud)
GitHub 抱怨工作流程无效:“无法识别的命名值:‘秘密’”,因为它只需要秘密部分中的秘密。
我无法将它作为秘密传递,因为可重用工作流程不需要这个秘密,我只是希望它成为字符串的一部分......
无法使用 env,因为它无法与可重用工作流程结合使用
我怎样才能让这个场景发挥作用?
我最终做的是将 2 个可选秘密添加到可重用工作流程中,将它们添加为 docker build commnd 中的构建参数。这样,如果它们通过了 - 它们是秘密,如果没有通过 - 它们只是空白,这不会影响任何事情。它解决了我的情况。
所以,秘密部分看起来像这样:
secrets:
AWS_ACCESS_KEY:
required: true
AWS_SECRET_ACCESS_KEY:
required: true
USERNAME:
required: false
PASSWORD:
required: false
Run Code Online (Sandbox Code Playgroud)
和这样的构建:
- name: Build and tag image
run: docker build -f ${{ inputs.DOCKERFILE }} -t ${{ inputs.ECR_REGISTRY }}/${{ inputs.ECR_REPOSITORY }}:${{ inputs.IMAGE_TAG }} --build-arg USERNAME=${{ secrets.USERNAME }} --build-arg PASSWORD=${{ secrets.PASSWORD }} ${{ inputs.DOCKER_BUILD_ARGS }} ${{ inputs.DOCKER_BUILD_CONTEXT }}
Run Code Online (Sandbox Code Playgroud)
当然,Dockerfile需要有相应的参数。这允许我“动态”传递最多 2 个秘密
归档时间: |
|
查看次数: |
3394 次 |
最近记录: |