GVKun编程网logo

jenkins 批量删除 build history(jenkins删除任务)

14

在本文中,我们将详细介绍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删除任务)

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,填写完之后,点击【保存】按钮即可使新的设置生效。

参考文献:

  1. Jenkins 构建历史如何批量删除,批量删除 build history
  2. jenkins 删除 Build History 构建历史
  3. https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy
  4. Jenkins 服务器磁盘空间爆满问题解决

 

Access to build environment variables from a groovy script in a Jenkins build step (Windows)

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/1R6WS

Android-Jenkins:在Jenkins Build Server上找不到Build Tools修订版17.0.0

Android-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

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

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 historyjenkins删除任务的分享就到这里,谢谢您的阅读,如果想了解更多关于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的相关信息,可以在本站进行搜索。

本文标签: