可重用工作流中的输出被错误地识别为秘密(Github Actions)



我在可重用的工作流中使用秘密,并且也有输出。我的输出是一个路径,其中包含部分AWS机密,所以我得到一个错误Skip output 'file-url' since it may contain secret.

aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION  }}
aws-bucket: ${{ secrets.S3_BUCKET }}
bucket-root: ${{ secrets.S3_KEY }}
file-path: ${{ steps.apk-file-path.outputs.file-path }} 
output-file-url: 'true'
output-qr-url: 'true'

我试图改变它,而不是秘密,这些将是输入,然后在调用者工作流中有秘密,但然后我得到错误Unrecognized named-value: 'secrets'.

aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ inputs.aws_region  }}
aws-bucket: ${{ inputs.s3_bucket }}
bucket-root: ${{ inputs.s3_key }}

调用工作流:

uses: ./.github/workflows/reusable-test.yml
secrets: inherit
with:
aws_region: ${{ secrets.AWS_REGION }}
s3_bucket: ${{ secrets.S3_BUCKET }}
s3_key: ${{ secrets.S3_KEY }}

有办法绕过它吗?需要帮助

可能是由Github检查url并注意到与秘密中相同的值引起的。你可能需要使用mask-aws-account-id: no

解决这个问题的一个更通用的方法是使用一个秘密作为密码加密输出,然后在需要的作业中解密它。

下面是gpg如何使用的例子:

加密:

encrypted_value=$(gpg --symmetric --batch --passphrase ${{ secrets.GPG_SECRET }} --output - <(echo "my-secret-string") | base64 -w0)

解密:

decrypted_value=$(gpg --decrypt --quiet --batch --passphrase ${{ secrets.GPG_SECRET }} --output - <(echo "$encrypted_value" | base64 --decode))

这是基于https://nitratine.net/blog/post/how-to-pass-secrets-between-runners-in-github-actions/

最新更新