在 bitbucket 管道中生成 json

generate a json within bitbucket pipeline

运行 此 dbt docs generate 命令会在目标文件夹中生成一个 catalog.json 文件。该过程在本地运行良好。

    feature/dbt-docs:
      - step:
          name: 'setup dbt and generate docs'
          image: fishtownanalytics/dbt:1.0.0
          script:
            - cd dbt_folder
            - dbt docs generate 
            - cp target/catalog.json ../catalog.json

生成catalog.json文件后,下一步想上传到s3。我将它从目标文件夹复制到根文件夹,然后像这样上传它:

      - step:
          name: 'Upload to S3'
          image: python:3.7.2
          script:
            - aws s3 cp catalog.json s3://testunzipping/ 

但是,我得到一个错误:

+ aws s3 cp catalog.json s3://testunzipping/
The user-provided path catalog.json does not exist.

虽然复制命令在本地运行良好,但似乎无法在 bitbucket 管道中正确生成文件。有没有其他方法可以在第一步中将 catalog.json 的内容保存在某个变量中,然后再将其上传到 S3?

在 bitbucket 管道中,每个步骤都有自己的构建环境。为了能够在步骤之间共享内容,您应该使用 artifacts.

您可能想尝试以下步骤。

feature/dbt-docs:
      - step:
          name: 'setup dbt and generate docs'
          image: fishtownanalytics/dbt:1.0.0
          script:
            - cd dbt_folder
            - dbt docs generate 
            - cp target/catalog.json ../catalog.json
          artifacts:
            - catalog.json
      - step:
          name: 'Upload to S3'
          image: python:3.7.2
          script:
            - aws s3 cp catalog.json s3://testunzipping/ 

参考:https://support.atlassian.com/bitbucket-cloud/docs/use-artifacts-in-steps/