持续 Bitbucket 管道构建工件超过 14 天

问题描述 投票:0回答:2

我的管道在 14 天后丢失了构建工件。也就是说,14 天后,如果没有 S3 或 Artifactory 集成,管道当然会失去“部署”按钮功能 - 由于构建工件被删除,它会变成灰色。我知道这是 BB/Atlassian 有意降低成本等(详细信息请参见下面的链接)。

请检查本页的最后一部分“工件下载和过期” - https://support.atlassian.com/bitbucket-cloud/docs/use-artifacts-in-steps/

如果您需要工件存储时间超过 14 天(或超过 1 GB),我们建议使用您自己的存储解决方案,例如 Amazon S3 或 托管工件存储库,例如 JFrog Artifactory。

问题: 是否有人能够提供有关如何将 BB Pipeline 与 Artifactory(或 S3)集成以保留工件的建议或示例代码。 Artifactory 通用上传/下载管道方法是唯一的方法还是上面的引用暗示了更原生的 BB“存储库设置”来提供与 S3 或 Artifactory 的集成? https://www.jfrog.com/confluence/display/RTF6X/Bitbucket+Pipelines+Artifactory+Pipes

amazon-s3 artifactory bitbucket-pipelines bitbucket-cloud
2个回答
2
投票

Bitbucket 给出了链接到其网站上的 S3 存储桶的示例。 https://support.atlassian.com/bitbucket-cloud/docs/publish-and-link-your-build-artifacts/

关键是第 4 步,将工件链接到构建。

但是,该示例实际上并没有创建链接到 S3 的工件,而是添加了一个状态代码以及链接到 S3 中上传项目的描述。要在进一步的步骤中使用这些,您必须下载工件。

这可以使用 aws cli 和安装了此工具的映像来完成,例如 amazon/aws-sam-cli-build-image-nodejs14.x(在我的情况下需要 SAM)。

以下是一个例子:

  1. 创建一个工件(txt 文件)并上传到 AWS S3 存储桶
  2. 根据 Amazon 的建议,创建一个“链接”作为针对触发管道的提交的构建状态(这只是在 14 天后添加以供参考......嗯)
  3. 执行“部署”,从 AWS S3 下载工件,在这个阶段我还将下载的 S3 工件设置为 BitBucket 工件,我的意思是为什么不......它可能会在 14 天后过期,但如果我刚刚重新部署,然后我可能需要再使用 14 天....
image: amazon/aws-sam-cli-build-image-nodejs14.x

pipelines:
  branches:
    main:
      - step:
          name: Create artefact
          script:
            - mkdir -p artefacts
            - echo "This is an artefact file..." > artefacts/buildinfo.txt
            - echo "Generating Build Number:\ ${BITBUCKET_BUILD_NUMBER}" >> artefacts/buildinfo.txt
            - echo "Git Commit Hash:\ ${BITBUCKET_COMMIT}" >> artefacts/buildinfo.txt
            - aws s3api put-object --bucket bitbucket-artefact-test --key ${BITBUCKET_BUILD_NUMBER}/buildinfo.txt --body artefacts/buildinfo.txt
      - step:
          name: Link artefact to AWS S3
          script:
            - export S3_URL="https://bitbucket-artefact-test.s3.eu-west-2.amazonaws.com/${BITBUCKET_BUILD_NUMBER}/buildinfo.txt"
            - export BUILD_STATUS="{\"key\":\"doc\", \"state\":\"SUCCESSFUL\", \"name\":\"DeployArtefact\", \"url\":\"${S3_URL}\"}"
            - curl -H "Content-Type:application/json" -X POST --user "${BB_AUTH_STRING}" -d "${BUILD_STATUS}" "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/commit/${BITBUCKET_COMMIT}/statuses/build"
      - step:
          name: Test - Deployment
          deployment: Test
          script:
            - mkdir artifacts
            - aws s3api get-object --bucket bitbucket-artefact-test --key ${BITBUCKET_BUILD_NUMBER}/buildinfo.txt artifacts/buildinfo.txt
            - cat artifacts/buildinfo.txt
          artifacts:
            - artifacts/**

注意: 我对存储库有以下秘密/变量:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • BB_AUTH_STRING

0
投票

Bitbucket 还具有无限存储(他们要求合理使用)的下载部分,但单个文件限制为 0.5-2 GiB:

curl --verbose --location --request POST -F [email protected] \
   --header 'Authorization: Bearer <token-goes-here>' \
  'https://api.bitbucket.org/2.0/repositories/<workspace-name>/<repo-name>/downloads'

或参见:

https://bitbucket.org/product/features/pipelines/integrations?p=atlassian/bitbucket-upload-file

© www.soinside.com 2019 - 2024. All rights reserved.