我有一个包含两个分支的存储库: master 和 Dev 我希望以这样的方式配置该pipline,当我将代码推送到 Dev 分支并且代码构建成功时, Dev 被合并到 master . 不幸的是,我无法找到有关合并bitbucket piplines docs的任何信息 .
那是我的yml文件:
pipelines:
branches:
Dev:
- step:
script:
- ant deployCodeCheckOnly -Dsf.username=$SF_USERNAME -Dsf.password=$SF_PASSWORD
那个案子可以帮助我吗?如果有可能吗?
- 编辑
我尝试将脚本更改为sugest:
pipelines:
branches:
Dev:
- step:
script:
- ant deployCodeCheckOnly -Dsf.username=$SF_USERNAME -Dsf.password=$SF_PASSWORD
- git remote -v
- git fetch
- git checkout master
- git merge Dev
- git push -v --tags origin master:master
结果:
git remote -v
+ git remote -v
origin git@bitbucket.org:repository/project.git (fetch)
origin git@bitbucket.org:repository/project.git (push)
git fetch origin
+ git fetch origin
Warning: Permanently added the RSA host key for IP address ..... to the list of known hosts.
并且错误:
+ git checkout master
error: pathspec 'master' did not match any file(s) known to git.
- 解
Dev:
- step:
script:
- ant deployCodeCheckOnly -Dsf.username=$SF_USERNAME Dsf.password=$SF_PASSWORD
- git fetch
- git checkout -b master
- git merge Dev
- git push -v --tags origin master:master
2 回答
在YAML配置的“脚本”部分,您可以在shell上执行或多或少的任何操作,因此(尽管我从未尝试过),但是没有理由认为这不可能 .
换句话说,你必须:
将分支切换到
master
合并dev(可选,使用预定义的
BITBUCKET_COMMIT
环境变量,它标识您的dev
提交)承诺
master
(也可能推)由于
git
在script
中可用,您可以使用普通的git命令,不需要任何特定于Bb管道的内容,即:您只需执行类似...要确保仅在Ant作业成功时才执行此操作,您应确保在出现错误时将获得非零退出状态(我认为这是Ant的默认行为) .
我遇到了同样的问题,但是想使用pull请求而不是简单的git merge . 所以我最终为这项工作使用bitbucket API:
1.创建“应用密码”
创建“应用程序密码”,这样您就不必将自己的凭据推送到管道(bitbucket设置 - >应用程序密码)
2.设置管道的环境变量
BB_USER =您的用户名
BB_PASSWORD = app密码
3.创建bash脚本
我有一个bash脚本,它从
$BITBUCKET_BRANCH
创建拉取请求并立即合并用法:
./merge.sh DESTINATION_BRANCH
请参阅pipelines environment variables documentation以了解更好的使用变量
有关使用过的API的详细信息,请参阅bitbucket API docs
4.最后在管道中
只需调用脚本:
好处:
如果存在冲突(如果您希望失败),管道将失败
更好地控制正在发生的事情