如何在Bitbucket中重用先前流水线生成的制品?
如何在Bitbucket Pipelines中重用先前流水线生成的制品
Bitbucket Pipelines默认的artifacts配置确实只能在同一流水线的不同步骤间复用,要跨流水线(比如之前某次运行生成的制品)重用,得用官方的**工件存储(Artifact Storage)**功能,下面给你一步步讲怎么实现:
一、先开启仓库的工件存储
首先去你的Bitbucket仓库设置里,找到Pipelines > Artifact Storage,把这个功能打开——这是跨流水线复用制品的前提。
二、修改生成制品的流水线配置
你现在的构建步骤已经生成了docker_containers.tar,接下来要把这个文件上传到工件存储里。我们可以用Atlassian官方的artifact-upload管道来做,修改后的配置如下:
image: php:7.2.18 pipelines: branches: delete-me: - step: name: Build docker containers services: - docker script: - docker/build_containers_if_not_exists.sh - sleep 30 # wait for docker to start all containers - docker save $(docker images -q) -o ${BITBUCKET_CLONE_DIR}/docker_containers.tar # 把制品上传到工件存储,用分支名+构建号命名,方便后续识别 - pipe: atlassian/artifact-upload:0.6.0 variables: ARTIFACT_PATH: 'docker_containers.tar' ARTIFACT_NAME: 'docker-containers-${BITBUCKET_BRANCH}-${BITBUCKET_BUILD_NUMBER}' BITBUCKET_USERNAME: $BITBUCKET_USERNAME BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD - step: name: Compile styles & js caches: - composer script: - docker load --input docker_containers.tar - docker-compose up -d - composer install
三、在后续流水线中下载重用制品
当你需要在其他流水线(比如另一个分支的运行,或者同一个分支的新构建)里使用之前生成的制品时,用artifact-download管道把它拉下来就行。比如你想在main分支重用delete-me分支第123次构建的制品,配置可以这么写:
pipelines: branches: main: - step: name: Download previous docker containers script: # 替换ARTIFACT_NAME为你要重用的那个制品的名称(就是上传时指定的名字) - pipe: atlassian/artifact-download:0.6.0 variables: ARTIFACT_NAME: 'docker-containers-delete-me-123' BITBUCKET_USERNAME: $BITBUCKET_USERNAME BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD # 下载完成后就可以正常使用这个tar包了 - docker load --input docker_containers.tar - docker-compose up -d # ... 这里加你后续的步骤
关键注意事项
- Bitbucket App Password:你需要在个人设置里创建一个App Password,权限要包含
Repositories > Read和Repositories > Write,然后把这个密码和你的用户名存在仓库的环境变量里(仓库设置 -> Repository variables),这样流水线才能有权限上传下载制品。 - 制品命名:建议用
分支名+构建号的格式命名制品,这样你能清楚知道要下载的是哪一次构建的产物,避免混淆。 - 存储容量:工件存储有容量限制,根据你的Bitbucket订阅计划不同而不同,记得定期清理没用的旧制品哦。
内容的提问来源于stack exchange,提问作者FrakyDale
相关产品推荐
相关产品推荐

