是否可以编写一个在脚本中间执行“git clone”的 Windows .bat 脚本,以便脚本继续运行?它总是为我退出。
我在 Windows 7 Enterprise SP1 上使用来自“The Git Development Community”的 64 位 Git 版本 2.8.3。git.exe 在我的路径中 (c:\program files\git\cmd\git.exe) - 它不是通过 git.cmd 或类似文件间接执行的。
我能够运行一系列命令,例如
git init
git add --all
git commit -m "commit message"
Run Code Online (Sandbox Code Playgroud)
使用这些命令,批处理脚本会继续正常执行每个命令。和
git clone {url}
Run Code Online (Sandbox Code Playgroud)
脚本立即退出,通常带有双重提示,提示某种异常退出(即使 %ERRORLEVEL% 为 0):
git clone {url} new
Cloning into 'new'...
remote: Counting objects: 26, done
remote: Compressing objects: 100% (23/23) done.
remote: Total 26 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (26/26) done.
Checking connectivity... done. …Run Code Online (Sandbox Code Playgroud) 在Windows Server 2012从属服务器上运行Jenkins时,作业已成功从Bitbucket本地(在防火墙内)提供服务的Git中获取数据;它的最后一项任务是对刚签出的更改执行“ git rev-list”。此命令大约需要8分钟才能完成。这是可重复的;这是一个相对较新的环境,我没有历史来看看这是否刚刚开始。
在我们的生产环境中,Jenkins本身在没有从属设备的Windows上运行(长达2年),此相同的rev-list命令只需3秒钟即可完成。
我看到过多次提到“ git fetch挂起”的内容,但对我而言,并不是挂起了-鉴于项目的规模,它会在合理的时间内完成。
带时间戳的日志如下。
00:00:00.001 Started by user #####
00:00:00.002 Building remotely on JS-W-01 (msvs ishield win) in workspace c:\jenkins\workspace\MyProject\2.7.11_nightly@2
00:00:00.015 [TemplateProject] Using SCM from: MyProject � 2.7.11_Template
00:00:00.044 Cloning the remote Git repository
00:00:00.049 Cloning repository ssh://vdn-bitbucket:7999/myprojectcore.git
00:00:00.052 > git init c:\jenkins\workspace\MyProject\2.7.11_nightly@2 # timeout=10
00:00:00.153 Fetching upstream changes from ssh://vdn-bitbucket:7999/myprojectcore.git
00:00:00.154 > git --version # timeout=10
00:00:00.200 using GIT_SSH to set credentials Jenkins Builder vdnbuild-bb SSH access key
00:00:00.210 > git fetch --tags …Run Code Online (Sandbox Code Playgroud) 我在尝试在Jenkins管道脚本中执行代码时遇到了一些令人困惑的行为.闭包内的值带有一些意外的值.我已经看到了对局部变量技巧的引用,据说可以解决这个问题,但它对我不起作用.
简化示例:创建3个作业'a','b','c'打印其参数 - 传入和复制到本地.首先并行执行作业; 然后执行外部并行以比较结果.定义因为println在我的Jenkins中提供访问异常(我不是管理员).
def say(s) {println(s)} // println gives exception inside create_jobs
def create_jobs() {
def map = [:] // needed for parallel
def jobrunfn = { jobid -> // return a closure that prints hello from job
def pid = "$jobid"
return {
def xsay = { s -> say("[$pid] $s") }
xsay "HELLO from $pid"
}
}
map['a'] = jobrunfn('a')
map['b'] = jobrunfn('b')
map['c'] = jobrunfn('c')
return map
}
def jobs = create_jobs()
parallel(jobs) // for …Run Code Online (Sandbox Code Playgroud) 我正在运行一个 Jenkins 实例(我拥有所有权限),并尝试创建和添加 Groovy Pipeline 代码的共享库。似乎有一种方法可以通过 UI 执行此操作,方法是单击根 Jenkins 页面左侧的“全局配置”。(这不是“管理 Jenkins”链接 - 该链接工作正常。)
当我点击“全局配置”时,似乎可以配置各种各样的东西,但似乎每个项目都被禁用了。当我在描述框中键入时,没有字符出现。当我选中一个复选框时,它不会更改为选中。“全局管道库”中的“添加”按钮(实际上是所有按钮)已禁用且无法按下。
我确定我遗漏了一些非常明显的东西,但我就是找不到。任何想法为什么全局配置页面对于 Jenkins 管理员来说是只读的?