我有一个节点项目。我想要做的是开发人员签入(提交和推送),我想运行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"上面临问题。如何为管道提供返回存储库的权限?
此外,我想知道这是否会触发一个循环,我的bitbucket管道再次执行,因为我增加了package.json版本并进行了检查(提交和推送)?
使用bitbucket-pipelines在nodejs项目中使用版本号增量进行CI / CD的推荐方法是什么?
干杯, 罗希特夏尔
答案 0 :(得分:4)
我遇到了类似的问题,但与nodejs开发无关。
git push
上构建失败的原因是您可以在管道>下生成的ssh密钥对SSH密钥设置没有写访问权限。
删除生成的对并使用您自己的帐户。您还必须在推送之前创建提交。添加到 bitbucket-pipelines.yml :
- git config user.email <your@email>
- git add package.json
- git commit -m "updated version"
你的第二个问题的答案是:是的,它会触发另一个构建,因为默认情况下它们会在每次提交时触发。
在我的例子中,后续构建产生了完全相同的输出,这使得整个构建在git commit
上失败。它与原点保持同步,因此停止了重复触发。
在每次更改中都有两个版本,其中一个版本总是失败,这并不好。通过将自定义部分添加到配置中,可能是running builds by hand的解决方案。
最后,由于缺乏自动化,我放弃了用管道推回某些东西的整个想法。
现在,schedule builds也有可能。有了这个功能,也可以避免重复触发。
答案 1 :(得分:1)
遇到了同样的问题,并希望对此进行扩展,以包括面对除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