gpt4 book ai didi

github-actions - 如何将带有空格的字符串值传递给 github 操作 env

转载 作者:行者123 更新时间:2023-12-04 10:52:23 27 4
gpt4 key购买 nike

我正在尝试创建一个 GitHub 操作以使用下面提供的脚本部署 lambda 函数。当我尝试通过 GitHub secret 传递描述时,Github 操作无法将其识别为字符串并将其视为命令。有没有办法从 GitHub secret 中传递字符串,以便 Github 操作将其视为字符串。
或者我们可以从 secret 中传递双引号字符串吗?

name: Test Lambda Actions

on:
pull_request:
paths:
- lambda/src/lambda_function.py
- .github/workflows/lambda-dev.yml

jobs:
deploy-lambda:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- run: chmod 777 *
- uses: actions/setup-python@v1
with:
python-version: 3.7
- run: pip3 install awscli
- name: Deploy Lambda Function
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-1
ROLE: ${{ secrets.ROLE }}
HANDLER: lambda_function.lambda_handler
ALIAS_NAME: ${{ secrets.TEST_ALIAS }}
DESCRIPTION: ${{ secrets.DESCRIPTION }}
run: |
cd lambda/dist
aws lambda update-function-configuration --function-name test-lambda --role ${ROLE} --description ${DESCRIPTION} --handler ${HANDLER}
version=$(aws lambda update-function-code --function-name test-lambda --zip-file fileb://lambda_function.zip --publish | jq -r .Version)
aws lambda create-alias --function-name test-lambda --name ${ALIAS_NAME} --function-version $version

如果我添加值(value) LAMBDA IS到一个 secret 的名字 说明 并运行 GitHub 操作,出现以下结果:
enter image description here

最佳答案

变量将作为环境变量存在

与任何 shell 脚本一样,您需要在使用变量时引用它们,否则您将暴露于 shell 注入(inject)(或者您遇到的更小的情况:空格将扩展为多个参数)

举个小例子,下面是 azure 管道如何设置环境变量:

export ROLE=my-iam-role
export DESCRIPTION='This is my lambda function'
export HANDLER=foo

当您运行此命令时:

# escaped newlines added so it is more readable on stack overflow
aws lambda \
update-function-configuration \
--function-name test-lambda \
--role ${ROLE} \
--description ${DESCRIPTION} \
--handler ${HANDLER}

使用您当前的变量,这将扩展为:

aws lambda \
update-function-configuration \
--function-name test-lambda \
--role my-iam-role \
--description This is my lambda function \
--handler foo

请注意描述是如何扩展为多个参数的(因为参数只是 bash 中以空格分隔的字符串)

要解决此问题,请在命令中引用您的变量:

aws lambda \
update-function-configuration \
--function-name test-lambda \
--role "${ROLE}" \
--description "${DESCRIPTION}" \
--handler "${HANDLER}"

请注意,如果您通过 shellcheck 之类的方式提供 bash 代码或 shellharden它会就报价提出类似的建议

关于github-actions - 如何将带有空格的字符串值传递给 github 操作 env,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59419302/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com