gpt4 book ai didi

terraform - 如何从 GitHub Actions 中的重定向输出中删除所有无关输出?

转载 作者:行者123 更新时间:2023-12-05 09:34:38 25 4
gpt4 key购买 nike

我有一个使用 Terraform 进行部署的 GitHub Actions 工作流程。

当 Terraform 完成后,我想获取 Terraform 输出并将其发送到工作流中的下一个作业,以便可以提取和使用各个部分。具体来说,我的 Terraform 部署了一个 Azure Function,然后输出函数应用名称。然后,这将用于告诉下一个作业在哪里部署函数代码。

但是,当我像这样重定向 terraform output 的输出时:

      - name: save tf output
run: terraform output -json > tfoutput.json
shell: bash
working-directory: terraform

然后放入工作神器

      - name: Upload output file
uses: actions/upload-artifact@v2
with:
name: terraform-output
path: terraform/tfoutput.json

生成的内容文件如下所示:

[command]/home/runner/work/_temp/fb419afc-033e-4058-b5f3-c44b90cb0bd0/terraform-bin output -json
{
"functionappname": {
"sensitive": false,
"type": "string",
"value": "telemetry-function"
}
}
::debug::Terraform exited with code 0.
::debug::stdout: {%0A "functionappname": {%0A "sensitive": false,%0A "type": "string",%0A "value": "telemetry-function"%0A }%0A}%0A
::debug::stderr:
::debug::exitcode: 0
::set-output name=stdout::{%0A "functionappname": {%0A "sensitive": false,%0A "type": "string",%0A "value": "telemetry-function"%0A }%0A}%0A
::set-output name=stderr::
::set-output name=exitcode::0

当然,这意味着它绝对不是机器可读的,因为 Terraform 的 JSON 输出应该是。

我还没有找到任何方法来删除所有无关的垃圾。值得注意的是,在 Azure DevOps 中,这一工作流程的执行完全符合预期。

我采用了将所有内容都放在一个作业中的方法(以避免重定向输出和传递工件),然后使用 terraform output | jq -r ... 将 terraform 的输出获取到我的 jq 语句中以提取值,但它仍然不起作用。出于某种原因,此命令的输出似乎确实是垃圾。

不确定这我可以解决的问题,是 terraform 操作中的错误,还是 GH 操作中的一般错误。

此外,我应该在哪里提交关于 GH 操作的错误???

最佳答案

解决方案是将 terraform_wrapper: false 添加到您的 Setup Terraform 步骤:

      - name: Setup terraform
uses: hashicorp/setup-terraform@v1
with:
terraform_version: ${{ env.TERRAFORM_VERSION }}
terraform_wrapper: false

默认情况下,Terraform Action 会将其所有输出包装在这个垃圾中。 🤷🏻‍♂️

关于terraform - 如何从 GitHub Actions 中的重定向输出中删除所有无关输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66496105/

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