如何从bitbucket-pipelines.yml进行git push?

时间:2017-06-30 07:16:52

标签: node.js git continuous-integration package.json bitbucket-pipelines

我有一个节点项目。我想要做的是开发人员签入(提交和推送),我想运行bitbucket管道,内部执行以下操作

  1. npm install和npm test
  2. npm版本补丁(增加package.json中的版本)
  3. git push origin master --follow-tags
  4. npm publish
  5. 到位桶-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的推荐方法是什么?

    干杯, 罗希特夏尔

2 个答案:

答案 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