我在Bitbucket中有一个CI管道,它正在构建,测试和部署应用程序 . 问题是在部署之后我想运行selenium测试 . Selenium测试在Bitbucket的另一个存储库中,他们有自己的管道 .
Bitbucket管道中是否有触发步骤在前一个管道完成时触发管道?
我不想对测试存储库进行虚假推送以触发这些测试 .
根据他们的官方文档,没有“简单的方法”可以做到这一点,因为工作被隔离在一个存储库的范围内,但您可以通过以下方式完成任务:
创建docker镜像,其中包含执行内部测试所需的最低设置
上传到docker hub(如果你有这样的话,可以上传到其他一些repo)
在部署执行测试后,在管道的最后一步使用docker镜像
@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
我能想到的最“正确”的方法是在部署完成后使用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" } }'
3 回答
根据他们的官方文档,没有“简单的方法”可以做到这一点,因为工作被隔离在一个存储库的范围内,但您可以通过以下方式完成任务:
创建docker镜像,其中包含执行内部测试所需的最低设置
上传到docker hub(如果你有这样的话,可以上传到其他一些repo)
在部署执行测试后,在管道的最后一步使用docker镜像
@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是因为我正在启动无头浏览器 .
我能想到的最“正确”的方法是在部署完成后使用Bitbucket REST API手动触发其他存储库上的管道 .
这里有几个如何创建管道的例子:https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/pipelines/#post
复制粘贴第一个例子 . 如何触发master上最新提交的管道: