我的Ant build.xml脚本以
<property environment="env"/>
<echo>GIT_BRANCH = ${env.GIT_BRANCH}</echo>
<echo>PWD = ${env.PWD}</echo>
Run Code Online (Sandbox Code Playgroud)
Hudson CI设置为在任何分支更改时构建.控制台输出是......
Commencing build of Revision 90906a63929e9074035eb5b10c71ee055ad3e13c (origin/DPM-48)
GitAPI created
Checking out Revision 90906a63929e9074035eb5b10c71ee055ad3e13c (origin/DPM-48)
[workspace] $ git.exe checkout -f 90906a63929e9074035eb5b10c71ee055ad3e13c
[workspace] $ cmd.exe /C '"C:\Program Files\WinAnt\bin\ant.bat" -file build.xml ...'
[echo] GIT_BRANCH = ${env.GIT_BRANCH}
[echo] PWD = /cygdrive/d/.hudson
Run Code Online (Sandbox Code Playgroud)
从控制台输出,Hudson知道它正在构建主题分支DPM-48但是没有设置环境变量GIT_BRANCH并且'git branch'返回git处于'分离的HEAD'状态
* (no branch)
master
DPM-48
Run Code Online (Sandbox Code Playgroud)
我想知道的是我正在哈德森建立的分支.必须有办法做到这一点.
我写了一个Jenkins管道,它克隆了一个git存储库并运行了一个MSBUILD构建.
我使用GitSCM将存储库克隆到工作区中,如下所示:
stage ('Checkout SCM & Merge master to feature branch') {
checkout([$class: 'GitSCM', branches: [[name: '*/feature/*']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '99f978af-XXXX-XXXX-8147-2cf8f69ef864', url: 'http://TFS_SERVER:8080/tfs/DefaultCollection/PC_International/_git/REPO_NAME']]])
}
Run Code Online (Sandbox Code Playgroud)
在克隆步骤发生后,HEAD指向一个独立的头部,我不明白为什么.
Started by user itai ganot
[Pipeline] node
Running on master in C:\Program Files (x86)\Jenkins\workspace\bbb
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Setup)
[Pipeline] deleteDir
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Checkout SCM & Merge master to feature branch)
[Pipeline] checkout
Cloning the remote Git repository
Cloning repository http://pctfs1:8080/tfs/DefaultCollection/PC_International/_git/Ensure-pcs-intl …Run Code Online (Sandbox Code Playgroud) 詹金斯v2.19
Git插件v2.5.3
在Branches to Build我指定2个分支:
*/develop
Run Code Online (Sandbox Code Playgroud)
和
*/master
Run Code Online (Sandbox Code Playgroud)
这导致了HEAD detached at {git commit hash}.我的gradle构建脚本中有不同的操作,它们使用当前的git分支作为触发器来执行不同的操作.
我怎样才能使这个结帐开发以掌握并掌握掌握而不是分离的HEAD?
我们如何在 Jenkins 管道中实现 Git 附加行为?
其他行为
=> 结帐到特定的本地分支机构
我正在尝试在所有测试通过后进行发布lerna。jenkins我已经运行了该命令,但失败了。
我找不到任何有关如何使其发挥作用的文档。我需要这个命令才能将 lerna 标签以及更新的版本号推送到 master 分支,并且我还需要 Jenkins 不要陷入无限循环。
我的第一个问题是这样的:
> lerna publish --yes --cd-version=patch
lerna info version 3.0.0-beta.17
lerna info versioning independent
lerna ERR! ENOGIT Detached git HEAD, please checkout a branch to publish changes.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! abide@1.0.0 publish: `lerna publish --yes --cd-version=patch`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the abide@1.0.0 publish script.
npm ERR! This is probably not a problem with npm. …Run Code Online (Sandbox Code Playgroud)