如何在Bitbucket-Pipelines中保存工件

时间:2017-10-11 04:57:22

标签: bamboo bitbucket-pipelines

我是竹子新手。我尝试做的是收集在构建过程中创建的所有.dacpac个文件。

image: microsoft/dotnet:latest
pipelines:
 default: 
 - step: 
 script: # Modify the commands below to build your repository. 
 - cd BackgroundCode 
 - dotnet restore 
 - dotnet run 
 artifacts: 
 - '../**/*.dacpac'

目录结构将是

  

'剂/建造/项目/ [项目] / [项目] .dacpac'。

管道的输出说

  

成功生成zip存档   的/ opt / Atlassian的/管道/剂/建造/项目/ [项目] / [项目] .dacpac

这意味着在构建过程中确实生成了文件。 我做错了什么吗?如果不是,我会在哪里找到这些文物。

3 个答案:

答案 0 :(得分:3)

不幸的是,根据文档,在管道运行后删除了所有工件:

https://confluence.atlassian.com/bitbucket/using-artifacts-in-steps-935389074.html

  

"一旦管道完成,无论是成功还是失败,都是   工件被删除。"

但是,您可以将工件部署到Bitbucket下载部分或其他任何位置:

https://confluence.atlassian.com/bitbucket/deploy-build-artifacts-to-bitbucket-downloads-872124574.html

- step:
    name: Archive
    script:
      - curl -X POST --user "${BB_AUTH_STRING}" "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"something/**"

答案 1 :(得分:0)

在bitbucket-pipelines.yml中,每当您前进到其他“ step:”时,它将重置几乎所有内容并独立执行上一步。这并不总是很明显,并且可能会造成混淆。

在上一步中,您使用cd BackgroundCode进入了一个子文件夹。 脚本执行到“ artifacts:”步骤时,当前工作目录将重置为原始$BITBUCKET_CLONE_DIR 。因此,您需要在每个步骤中再次cd BackgroundCode,或使用relative to the $BITBUCKET_CLONE_DIR的路径,如下所示:

artifacts:
 - BackgroundCode/**/*.dacpac

step2:
 - cd BackgroundCode
 # List the files relative to the 'BackgroundCode' directory
 - find . -iname '*.dacpac'

这现在将自动保存工件(7天),您可以在顶部的“工件”标签中看到它。

答案 2 :(得分:0)

我认为一个不错的选择是使用如前所述的bitbuckets下载部分,但是您可以使用其专用工具来代替curl,并且跳跃API不会改变并中断您的管道。

https://support.atlassian.com/bitbucket-cloud/docs/deploy-build-artifacts-to-bitbucket-downloads/

与卷曲相比,我认为它更安全,更易于设置且更易于维护。例如,链接的文档显示了该工具的0.1.2版本,而最新的是0.3.2,它仅需要我更新该版本号,而无需其他任何更新。我必须使用对存储库的写访问权限来设置应用程序权限密钥,将其设置为管道变量,将我的帐户名设置为管道变量(链接的文档对此进行了很好的描述),然后向管道yaml文件添加了一个简单的步骤。我可以想到的一个缺点是,对于较大的文件,卷曲可能会更好。因此,将其作为另一种做事方式,而不是将其作为做事的最终方式。

我的示例yaml,您使用一些容器来构建源,定义了Makefile构建步骤,然后重命名输出工件文件并后缀了一个构建ID(这样,我的下载文件中将包含多个输出文件)部分,而不仅仅是最新的)。然后,我将通过在构建步骤中添加工件来确保下一步可以访问这些工件:

工件:

  • build / output-*。zip

然后最后一个部署步骤将访问zip并将其上传给您,他们的工具不需要任何其他操作,只需设置三个变量,用户名,应用密钥和要上传的文件即可。

为完成示例管道yaml:

image: <SOMETHING>

pipelines:
  default:
    - step:
        name: 'Build'
        script:
          - make all
          - mv build/output.zip build/output-$BITBUCKET_BUILD_NUMBER.zip
        artifacts:
          - build/output-*.zip

    - step:
        name: 'Deploy the output into the download section'
        script:
          - pipe: atlassian/bitbucket-upload-file:0.3.2
            variables:
              BITBUCKET_USERNAME: $BITBUCKET_USERNAME
              BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD
              FILENAME: "build/output-$BITBUCKET_BUILD_NUMBER.zip"