Bitbucket管道中的触发步骤

时间:2018-04-14 15:19:36

标签: bitbucket bitbucket-pipelines

我在Bitbucket中有一个CI管道,它正在构建,测试和部署应用程序。 问题是在部署之后我想运行selenium测试。 Selenium测试位于Bitbucket的另一个存储库中,他们有自己的管道。

Bitbucket管道中是否有触发步骤在前一个管道完成时触发管道?

我不想对测试存储库进行虚假推送以触发这些测试。

4 个答案:

答案 0 :(得分:3)

我想到的最“正确”的方法是在部署完成后,使用Bitbucket REST API手动触发另一个存储库上的管道。

这里有一些如何创建管道的示例:https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/pipelines/#post

复制+粘贴第一个示例。如何为主服务器上的最新提交触发管道:

$ curl -X POST -is -u username:password \
  -H 'Content-Type: application/json' \
 https://api.bitbucket.org/2.0/repositories/jeroendr/meat-demo2/pipelines/ \
  -d '
  {
    "target": {
      "ref_type": "branch", 
      "type": "pipeline_ref_target", 
      "ref_name": "master"
    }
  }'

答案 1 :(得分:1)

根据他们的官方文档,没有“简单的方法”可以做到这一点,因为工作被隔离在一个存储库的范围内,但您可以通过以下方式完成任务:

  1. 使用最少的必要设置创建docker镜像,以便在
  2. 中执行测试
  3. 上传到docker hub(或其他一些repo,如果有的话)
  4. 在部署后执行测试的管道的最后一步中使用docker镜像

答案 2 :(得分:0)

@BigGinDaHouse我做的事情或多或少就像你说的那样。

我的步骤是建立在docker图像之上,带有无头chrome,npm和git。

我确实按照以下步骤操作:

  1. 我在原始仓库中为远程仓库设置了私钥。编码基地64. documentation。公钥正在bitbucket菜单中的SSH Access选项中设置为远程仓库。
  2. 在管道步骤中,我正在对其进行解码并将其设置为文件。我也将其许可改为400。
  3. 我在docker镜像中添加了这个Key。 SSH-添加

  4. 然后我可以进行git clone,接着是 npm install npm test

  5. 注意: entry.sh是因为我正在启动无头浏览器。

      - step:
                image: kimy82/headless-selenium-npm-git
                script:
                  - echo $key_in_env_variable_in_bitbucket | base64 --decode > priv_key
                  - chmod 400 ./priv_key
                  - eval `ssh-agent -s`
                  - ssh-agent $(ssh-add priv_key; git clone git@bitbucket.org:project.git)
                  - cd project
                  - nohup bash /usr/bin/entry.sh >> out.log &
                  - npm install
                  - npm test
    

答案 3 :(得分:0)

尝试使用官方组件的Bitbucket管道触发器:https://bitbucket.org/product/features/pipelines/integrations?p=atlassian/trigger-pipeline

您可以在部署步骤后运行

script:
  - pipe: atlassian/trigger-pipeline:4.1.7
    variables:
      BITBUCKET_USERNAME: $BITBUCKET_USERNAME
      BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD
      REPOSITORY: 'your-awesome-repo'
      ACCOUNT: 'teams-in-space'