首页 文章

Bitbucket管道中的触发步骤

提问于
浏览
0

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

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

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

3 回答

  • 0

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

    • 创建docker镜像,其中包含执行内部测试所需的最低设置

    • 上传到docker hub(如果你有这样的话,可以上传到其他一些repo)

    • 在部署执行测试后,在管道的最后一步使用docker镜像

  • 1

    @BigGinDaHouse我做的或多或少像你说的那样 .

    我的步骤 Build 在docker图像之上,带有无头chrome,npm和git .

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

    • 我在原始仓库中为远程仓库设置了私钥 . 编码基地64. documentation . 公钥正在bitbucket菜单中的SSH Access选项中设置为远程仓库 .

    • 在流水线步骤中,我正在对其进行解码并将其设置为文件 . 我也将其许可改为400 .

    • 我在docker镜像中添加了这个Key . SSH-ADD

    • 然后我可以做一个git clone,接着是npm install和npm test

    NOTE: 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
    
  • 0

    我能想到的最“正确”的方法是在部署完成后使用Bitbucket REST API手动触发其他存储库上的管道 .

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

    复制粘贴第一个例子 . 如何触发master上最新提交的管道:

    $ 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"
        }
      }'
    

相关问题