我的管道在 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
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)。
以下是一个例子:
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/**
注意: 我对存储库有以下秘密/变量:
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