如何将bash命令的输出保存到github操作中的output参数

如何将bash命令的输出保存到github操作中的output参数,github,github-actions,Github,Github Actions,这与所询问的内容类似,但有更多的解释,并希望得到最新的答案(答案使用set env,现在已弃用) 假设我有以下github操作yaml: name: pull-request-pipeline on: [pull_request] jobs: deploy-to-dev-and-test: runs-on: ubuntu-latest steps: - name: Checkout action uses: actions/checkout@v2

这与所询问的内容类似,但有更多的解释,并希望得到最新的答案(答案使用set env,现在已弃用)

假设我有以下github操作yaml:

name: pull-request-pipeline
on: [pull_request]
jobs:
  deploy-to-dev-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout action
        uses: actions/checkout@v2

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-west-2

      - name: Update API gateway definitions
        run: |
          aws apigateway put-rest-api --rest-api-id xxxxxxxx --mode merge --body 'file://SummitApi.yaml'

      - name: Get and store current deploymentId
        run: |
          OLD_DEPLOYMENT_ID=$(aws apigateway get-stage --rest-api-id xxxxxxxx --stage-name dev --query deploymentId --output text)
          echo '::set-output name=OLD_DEPLOYMENT_ID::$OLD_DEPLOYMENT_ID'
        id: old-deployment-id

      - name: Echo old deployment before deploy
        run: |
          echo ${{ steps.old-deployment-id.outputs.OLD_DEPLOYMENT_ID }}

      - name: Deploy to dev stage
        run: |
          aws apigateway create-deployment --rest-api xxxxxxxx --stage-name dev

      - name: Echo old deployment id after deploy
        run: |
          echo ${{ steps.old-deployment-id.outputs.OLD_DEPLOYMENT_ID }} 
运行时,会产生以下结果:

当采用另一种方法时,具体地将
获取并存储当前部署ID
步骤更改为:

      - name: Get and store current deploymentId
        run: |
          OLD_DEPLOYMENT_ID=$(aws apigateway get-stage --rest-api-id xxxxxxxx --stage-name dev --query deploymentId --output text)
          echo '::set-output name=OLD_DEPLOYMENT_ID::$OLD_DEPLOYMENT_ID'
        id: old-deployment-id
我得到以下信息:

它似乎将操作的输出值设置为
$OLD\u DEPLOYMENT
$(aws apigateway get stage--rest api id xxxxxxxx--stage name dev--query deploymentId--output text)
的未计算定义。我希望能够存储经过计算的定义的值,或者在本例中存储cmd
$(aws apigateway get stage--rest api id xxxxxxxx--stage name dev--query deploymentId--output text)中的实际部署id
。关于如何使用github操作实现这一点,有什么想法吗

参考资料:


echo
的参数周围使用双引号,而不是单引号。@BenjaminW。太好了,谢谢。关于单引号/双引号,我缺少什么概念?它是bash原则还是github操作?它是bash原则,请参见示例。@BenjaminW。谢谢你的帮助。@w33b它解决了你的问题吗?如果是B3njamin,您能否创建一个回复,以便它可以被接受为答案。在
echo
的参数周围使用双引号,而不是单引号。@BenjaminW。太好了,谢谢。关于单引号/双引号,我缺少什么概念?它是bash原则还是github操作?它是bash原则,请参见示例。@BenjaminW。谢谢你的帮助。@w33b它解决了你的问题吗?如果是,您能否创建一个回复,以便它可以被接受为答案。