我想在推送到Github时自动触发Jenkins构建。此外,基于分支和修改过的文件,我想向SaltStack API发送不同的函数args,并在不同的目标虚拟机上运行。
这是“构建环境”中的代码 - “为构建过程注入环境变量”步骤:
def map = [:]
println "env:"
def env = System.getenv()
env.each{
println it
}
println "envVarsMap:"
def thr = Thread.currentThread()
def build = thr?.executable
def envVarsMap = build.parent.builds[0].properties.get("envVars")
envVarsMap.each{
println it
}
def envlist = [];
env.each() { k,v -> envlist.push( "$k=$v" ) }
envVarsMap.each { k,v -> envlist.push( "$k=$v" ) }
switch (envVarsMap['GIT_BRANCH']) {
case "origin/development":
map['DEPLOY_SERVER'] = "admin-dev-1,admin-staging-2"
break
case "origin/master":
map['DEPLOY_SERVER'] = "admin-prod-1"
break
}
println "GIT_COMMIT: ${envVarsMap['GIT_COMMIT']}"
println "WORKSPACE: ${envVarsMap['WORKSPACE']}"
def sout = new StringBuilder()
def serr = new StringBuilder()
proc1 = "git diff-tree --no-commit-id --name-only -r ${envVarsMap['GIT_COMMIT']}".execute(envlist, new File("${envVarsMap['WORKSPACE']}"))
proc1.waitForProcessOutput(sout, serr)
println "sout: $sout"
println "serr: $serr"
println "proc1: ${proc1.text}"
和错误:
GIT_COMMIT: c56ba02156bcf23598db09b9a02407316bf554dc
WORKSPACE: /var/lib/jenkins/workspace/deploy-admin-app
sout:
serr: fatal: bad object c56ba02156bcf23598db09b9a02407316bf554dc
在CI服务器上以jenkins
用户手动运行此命令正常工作:
su - jenkins -s /bin/bash -c 'cd /var/lib/jenkins/workspace/deploy-admin-app; git diff-tree --no-commit-id --name-only -r c56ba02156bcf23598db09b9a02407316bf554dc'
package.json
所以,我的问题是:为什么我会收到此错误?如何在手动运行时重现这一点?
如果修订版不存在,我们应该收到“未知版本”错误:
fatal: ambiguous argument 'c56ba02156bcf23598db09b9a02407316bf554dx': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
答案 0 :(得分:0)
对不起。
我们有一个主节点和一些从节点。 通过不检查&#34;限制可运行此项目的位置&#34; ,可以在任何节点上运行构建。问题是构建是在奴隶上运行的:
[EnvInject] - 加载节点环境变量。
在工作区/ var / lib / jenkins / workspace / deploy-admin-app中远程建立jenkins-slave-go-1(golang)
但随后在主人身上检查了git diff-tree
。我通过运行git log -1
来发现这一点。
因此,我必须检查&#34;限制此项目可以运行的位置&#34; 并填充 master 作为标签。