如何从 bitbucket-pipelines.yml 执行 git push?
Posted
技术标签:
【中文标题】如何从 bitbucket-pipelines.yml 执行 git push?【英文标题】:How to do git push from bitbucket-pipelines.yml? 【发布时间】:2017-12-04 01:49:42 【问题描述】:我有一个节点项目。我想做的是在开发人员签入(提交和推送)时,我想运行 bitbucket 管道,该管道将在内部执行以下操作
-
npm install 和 npm test
npm 版本补丁(增加 package.json 中的版本)
git push origin master --follow-tags
npm 发布
bitbucket-pipelines.yml
image: node:8
pipelines:
default:
- step:
caches:
- node
script:
- npm version patch
- git push origin develop --follow-tags
- npm publish
我在“git push origin master --follow-tags”上遇到问题。如何授予管道推送回存储库的权限?
我还想知道这是否会触发一个循环,因为我增加了 package.json 版本并进行了签入(提交和推送),我的 bitbucket 管道再次执行?
使用 bitbucket-pipelines 在 nodejs 项目上使用版本号递增执行 CI/CD 的推荐方法是什么?
干杯, 罗希特
【问题讨论】:
要添加@crazko 答案,您可以在提交消息中的任何位置添加“[skip ci]”或“[ci skip]”,构建将不会运行 【参考方案1】:我遇到了类似的问题,虽然与 nodejs 开发无关。
在 git push
上构建失败的原因是您能够在 Pipelines > SSH 密钥 设置下生成的 ssh 密钥对没有写入权限。
删除生成的配对并使用与您的帐户相关联的您自己的配对。您还必须在推送之前创建提交。添加到您的 bitbucket-pipelines.yml:
- git config user.email <your@email>
- git add package.json
- git commit -m "updated version"
第二个问题的答案是:是的,它会触发另一个构建,因为默认情况下每次提交都会触发它们。
就我而言,后续构建产生了完全相同的输出,这使得整个构建在git commit
上失败。它与 origin 是最新的,因此停止了重复触发。
每次更改都有两个构建,其中一个总是失败,这并不好。解决此问题的方法可能是 running builds by hand,方法是将 custom 部分添加到配置中。
最终,由于缺乏自动化,我放弃了用管道推回某些东西的整个想法。
更新
现在,schedule builds 也有可能。有了这个功能,也可以避免重复触发。
【讨论】:
如果您在提交消息中的任何位置包含 [skip ci] 或 [ci skip],则不应重新触发构建 (confluence.atlassian.com/bitbucket/…) @crazko 如何配对连接到我的帐户的自己的 SSH 密钥? @AlejandroCotilla - 我的意思是在 SSH 密钥 下 bitbucket.org/account 的帐户设置中添加的任何 SSH 密钥 @crazko - 是的,我知道你的意思,你的回答是我遇到的问题的解决方案,但我问我如何将我自己的帐户私有 ssh 密钥添加到 Docker 容器,但我想通了,我将它添加到 Docker 映像中,并且我的 Dockerfile 中有一个脚本,用于在管道运行时将 ssh 密钥复制到容器中。【参考方案2】:遇到了同样的问题,并希望对此进行扩展,以包括面临 NPM 以外的私有仓库的场景。它看起来很乱,如果有人有更好的方法,请随时纠正。您需要自定义 .npmrc
才能添加自定义 npm 注册表。然后,您需要在添加新版本后清理所有内容。
下面的场景是将 Node 应用程序放在 VSTS 包中。
script:
- mv .npmrc_config .npmrc
- git config --global push.default simple
- git remote set-url origin https://$AUTH_STRING@bitbucket.org/$COMPANY/$REPO.git
- git config --global user.email "<YOUR EMAIL>"
- git config --global user.name "<YOUR USERNAME>"
- git add .npmrc
- git rm .npmrc_config
- git commit -m "[skip CI]"
- git push origin master
- npm install
- npm version patch
- git push origin master --follow-tags
- npm publish
- mv .npmrc .npmrc_config
- git add .npmrc_config
- git rm .npmrc
- git commit -m "[skip CI]"
- git push origin master
【讨论】:
以上是关于如何从 bitbucket-pipelines.yml 执行 git push?的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据从回收器适配器发送到片段 |如何从 recyclerview 适配器调用片段函数
如何从服务器获取和设置 android 中的 API(从服务器获取 int 值)?如何绑定和实现这个