我在Bitbucket中有一个CI管道,它正在构建,测试和部署应用程序。 问题是在部署之后我想运行selenium测试。 Selenium测试位于Bitbucket的另一个存储库中,他们有自己的管道。
Bitbucket管道中是否有触发步骤在前一个管道完成时触发管道?
我不想对测试存储库进行虚假推送以触发这些测试。
答案 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)
根据他们的官方文档,没有“简单的方法”可以做到这一点,因为工作被隔离在一个存储库的范围内,但您可以通过以下方式完成任务:
答案 2 :(得分:0)
@BigGinDaHouse我做的事情或多或少就像你说的那样。
我的步骤是建立在docker图像之上,带有无头chrome,npm和git。
我确实按照以下步骤操作:
我在docker镜像中添加了这个Key。 SSH-添加
然后我可以进行git clone,接着是 npm install 和 npm test
注意: 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'