如何将json输出存储在变量中,并在Github操作的另一个步骤中使用它

hgqdbh6s  于 2023-10-21  发布在  Git
关注(0)|答案(1)|浏览(118)

我在github中有一个从sqs队列获取消息的步骤。响应是一个带有消息数组的对象。receive_message_sqs但是我尝试从数组中的对象获取ReceivtHandle,但我一直遇到这个错误。
下面是接收消息的步骤

- name: Receive Message from SQS Queue
        id: receive_message
        run: |
          RESPONSE=$(aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/my-queue.fifo \
          --attribute-names All \
          --message-attribute-names All --max-number-of-messages 10 --output json)
          echo "::set-output name=receipt_handle::$RESPONSE"

下面是使用上一步中的Response的下一步。我想从RESPONSE中提取receipt_handle并将其放入一个变量中,然后检查它是否工作。我需要数组中的第一个对象

- name: Check ReceiptHandle
        id: check_receipt_handle
        run: |
          RECEIPT_HANDLE=$(echo "${{ steps.receive_message.outputs.receipt_handle }}" | jq -r '.Messages[0].ReceiptHandle')
          if [ -z "$RECEIPT_HANDLE" ]; then
            echo "ReceiptHandle is empty. Failing the workflow."
            exit 1
          else
            echo "ReceiptHandle: $RECEIPT_HANDLE"
          fi
          echo "::set-output name=receipt_handle::$RECEIPT_HANDLE"

下面是对象外观的屏幕截图

这是我在检查ReceivtHandle步骤时返回的错误。看起来像是和json解析有关的东西。

有办法解决吗?

t2a7ltrp

t2a7ltrp1#

@Azeem的评论解决了我的问题。

RESPONSE=$(aws sqs ... --output json | jq -c)

我相信有些读者可能会忽略这条评论,我把它贴在这里。请一定要投赞成票@Azeem的意见,为有用的解决方案!

相关问题