在本文中,我们将详细介绍jenkins批量删除buildhistory的各个方面,并为您提供关于jenkins删除任务的相关解答,同时,我们也将为您带来关于Accesstobuildenvironme
在本文中,我们将详细介绍jenkins 批量删除 build history的各个方面,并为您提供关于jenkins删除任务的相关解答,同时,我们也将为您带来关于Access to build environment variables from a groovy script in a Jenkins build step (Windows)、Android-Jenkins:在Jenkins Build Server上找不到Build Tools修订版17.0.0、Bitbucket 触发内网 Jenkins Build、BOM导致的Build failed in Jenkins with error MSB4025的有用知识。
本文目录一览:- jenkins 批量删除 build history(jenkins删除任务)
- Access to build environment variables from a groovy script in a Jenkins build step (Windows)
- Android-Jenkins:在Jenkins Build Server上找不到Build Tools修订版17.0.0
- Bitbucket 触发内网 Jenkins Build
- BOM导致的Build failed in Jenkins with error MSB4025
jenkins 批量删除 build history(jenkins删除任务)
(1)在 Manage Jenkins -> Script Console【执行脚本删除】:
方法一【删除一个区间】:
import jenkins.model.*;
import hudson.model.Fingerprint.RangeSet;
// The name of the job【目录名,如果没有可以不填】.
def jobName = "目录名/项目名";
// The range of build numbers to delete.
def buildRange = "1214-1221";
def j = jenkins.model.Jenkins.instance.getItemByFullName(jobName);
def r = RangeSet.fromString(buildRange, true);
j.getBuilds(r).each { it.delete() }
方法二【删除不大于 maxNumber 的记录】:
def jobName = "目录名/项目名"
def maxNumber = 1213
Jenkins.instance.getItemByFullName(jobName);
Jenkins.instance.getItemByFullName(jobName).builds.findAll {
it.number <= maxNumber
}.each {
it.delete()
}
(2)自动丢弃构建历史数据
项目目录页面—>进入要自动清除构建历史的项目—>Configure(配置)—>General(通用)
—>Discard old builds(丢弃旧的构建)—>Max # of builds to keep(保持构建的最大个数)—>修改save即可。
一次构建包含两方面的产物:构建记录和构建工件。构建记录是一种跟踪、分析和反馈的依据,具有保存价值;而已经过时的构建工件则通常可以直接丢弃。基于以上思路,Jenkins 为我们提供了 “丢弃旧的构建” 配置功能,通过进行合理配置即可达到保存构建记录丢弃构建工件的效果,配置方式如下:
在这里我们需要填写自定义的丢弃旧的构建设置,这里我们将 “保持构建的天数” 以及 “发布包保留天数” 均设置为 7 天,将 “保持构建的最大个数” 设置为 30 条,而我们每次取用 jar 包或 war 包时都只想获取最新版本,所以说我们这里只保存最新版的软件版本信息,因而在 “发布包最大保留 #个构建” 中填写 1,填写完之后,点击【保存】按钮即可使新的设置生效。
参考文献:
- Jenkins 构建历史如何批量删除,批量删除 build history
- jenkins 删除 Build History 构建历史
- https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy
- Jenkins 服务器磁盘空间爆满问题解决
Access to build environment variables from a groovy script in a Jenkins build step (Windows)
问题:
I''m using Scriptler plugin, so I can run a groovy script as a build step. 我正在使用 Scriptler 插件,因此我可以将 groovy 脚本作为构建步骤运行。 My Jenkins slaves are running on windows in service mode. 我的 Jenkins slaves 以服务模式在 Windows 上运行。 With scriptler, I don''t need to use windows batch scripts. 使用脚本程序,我不需要使用 Windows 批处理脚本。
But I have trouble to get the environment variables in a build step... This is working: 但是我很难在构建步骤中获取环境变量...... 这是有效的:
System.getenv("BASE")
Where BASE
is part of the env-vars on jenkins startup. 其中 BASE
是 jenkins 启动时 env-vars 的一部分。 However, I would like to get 但是,我想得到
%JOB_NAME%
If I''m adding an "Execute Windows batch command" build step: 如果我要添加 “执行 Windows 批处理命令” 构建步骤:
echo %JOB_NAME%
It works. 有用。 If I''m adding a scriptler script as a build step with the same settings: 如果我添加一个 scriptler 脚本作为具有相同设置的构建步骤:
println "JOB_NAME: " + System.getenv("JOB_NAME")
I''m getting: 我越来越:
JOB_NAME: null
So how can I reach the injected environment variables from a groovy script as a build step? 那么作为构建步骤,如何从 groovy 脚本中获取注入的环境变量呢?
解决方案:
参考: https://stackoom.com/en/question/1R6WSAndroid-Jenkins:在Jenkins Build Server上找不到Build Tools修订版17.0.0
我正在尝试在Jenkins上使用Android模拟器来构建和测试我的项目。但是运行gradle任务时出现以下错误;
找不到构建工具版本17.0.0
我正在运行的gradle任务是;
./gradlew clean connectedCheck
在我的gradle构建文件中,我具有以下配置
android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 17 }}
构建服务器是一个无头的Ubuntu实例(大约12个实例)。我的第一个想法是我没有安装正确的构建工具,因此我去看了android-sdk / build-
tools导演。我只能看到一个名为18.1.1的目录。因此,我认为如果更新android sdk,它将下载版本17.0.0。所以我运行了以下命令:
android update sdk --no-ui
似乎下载了很多东西,但再次查看构建工具目录,我仍然只看到版本18.1.1。
所以问题是:
1)我可以正确地假设构建失败是因为我的android sdk目录中没有正确的构建工具修订版吗?(/ android-sdk / build-tools)
2)如何更新无头服务器上的构建工具,以使版本为17.0.0?
如果您需要我提供更多信息,请告诉我。
在此先感谢您的帮助。
答案1
小编典典默认情况下,android update sdk
(或android list sdk --extended
)仅列出不被弃用的软件包。
由于Build Tools 17.0.0是一个相对较旧的版本,因此默认情况下不会显示。
使用-a
(--all
)标志运行将获得较旧的版本,例如:android update sdk -u -a -t build-tools-17.0.0
将来的某个时候,Jenkins插件应根据build.gradle文件自动为您安装正确的构建工具。
编辑(2015年11月): 此功能可能不会添加到Android Emulator插件中。
如今,我建议使用android-sdk-manager Gradle插件,该插件可自动安装Jenkins构建的所有必备组件,包括Android SDK,工具,构建工具,平台,支持库等。
这可以很容易地集成到您的项目中,而无需保持Jenkins构建机器上的Android SDK安装最新。
Bitbucket 触发内网 Jenkins Build
在 Jenkins 上添加一个用来自动构建的用户: autobuilder 如果需要,你可以调整 autobuilder 的用户权限 系统管理 -》Configure Global Security -》 授权策略 -》项目矩阵授权策略
在项目中我们需要开启 "触发远程构建", 并输入一个 "身份验证令牌",该值你可以从 https://randomkeygen.com/ 轻松的生成一个合格的身份验证令牌。 我们可以在红色方框处获得触发远程构建的 URL, 替换 TOKEN_NAME 的值为: http://192.168.0.218:8888/job/test-bitbucket/build?token=8PwPjSxOd1huEQZYpDr0qQJrCndcfxgu
我们还需要为这个 URL 添加认证信息,使用 autobuilder 用户登录 jenkins 服务器中,点击右上角 "autobuilder" -》"设置" -》“Show API Token” 获得该用户的认证信息。 获得上面的信息后后就可以拼出完整的 URL : http://autobuilder:f245bb703a1b39594d1f4f48784ddd27@192.168.0.218:8888/job/test-bitbucket/build?token=8PwPjSxOd1huEQZYpDr0qQJrCndcfxgu
可以通过使用 curl 命令来测试
curl http://autobuilder:f245bb703a1b39594d1f4f48784ddd27@192.168.0.218:8888/job/test-bitbucket/build?token=8PwPjSxOd1huEQZYpDr0qQJrCndcfxgu
公司使用的 bitbucket 是在外网上的,内部的 Jenkins 无法被 bitbucket 访问,公司内部的公网 IP,我们把公司的 IP 的 8888 端口通过路由器进行 NAT 映射到 192.168.0.218 的 8888 端口上 然后在外网的机器上使用 curl 来进行测试
curl http://autobuilder:f245bb703a1b39594d1f4f48784ddd27@替换你的公网IP:8888/job/test-bitbucket/build?token=8PwPjSxOd1huEQZYpDr0qQJrCndcfxgu
测试成功后,开始对 bitbucket 进行配置,首先添加插件,点击 "管理" -》"寻找新插件",搜索 "hook" , 安装 "HTTP-Request Hook for Bitbucket Server"
进入项目中,点击 "Settings" -》“Hooks” -》启用 "HTTP Request Post-Receive Hook", 填入信息 #### 注意:Username 填入 autobuilder,Password 填入 用户的认证信息
当你向该 Bitbucket 项目的代码库中提交代码,Bitbucket 在收到代码推送后会使用我们在 Hooks 中设置的 URL 发送 http 请求,内网中的 Jenkins 服务器收到请求后触发一个新的 Build。
BOM导致的Build failed in Jenkins with error MSB4025
昨天有个release持续build fail,报错为
error MSB4025: The project file could not be loaded. Data at the root level is invalid. Line 1, position 1.
用Notepad++临时打开查看,没有发现任何异常
在Stash上能发现文件开始处多了一些小红点
这个 "\ufeff" 就是BOM (byte order marks) [wiki]
既然代码里有这个,删除即可,jenkins build success
查看了Master上的代码,没有这个问题,所以平时也不会有问题。
在这个Release Branch上查看History, 发现红点出自去年的某次提交,然后在这个branch中便一直保留下来了。
正好昨天merge一些code ,所以带出来这个问题。
因为BOM是Windows的默认模式,所以在跨平台工作的时候,很容易出现这个问题,肉眼很难分辨出来。
在Unix下用VI做个实验:
With BOM
Without BOM
结果立现!
结论 : Windows下默认编辑器的UTF-8是with BOM的,而UTF-16因为涉及到Big-Endian/Little-Endian,也会添加BOM的标识在字节流的开头。所以建议所有源文件使用UTF-8 without BOM的 格式存储。
我们今天的关于jenkins 批量删除 build history和jenkins删除任务的分享就到这里,谢谢您的阅读,如果想了解更多关于Access to build environment variables from a groovy script in a Jenkins build step (Windows)、Android-Jenkins:在Jenkins Build Server上找不到Build Tools修订版17.0.0、Bitbucket 触发内网 Jenkins Build、BOM导致的Build failed in Jenkins with error MSB4025的相关信息,可以在本站进行搜索。
本文标签: