jenkins - 完成后自行删除 Jenkins 构建
问题描述
tl; dr:我想从它们的执行中删除构建,或者更确切地说,在 post 语句中(尽管细节不重要)。
背景:在我正在从事的一个项目中,只要某些其他工作仍在运行,就有一种“网关”工作可以将所有新工作触发器聚合到一次启动中。为此,该作业会自行中止,以便只运行一个实例(通常不是最新版本)。
不幸的是,这意味着在作业预览中,作业通常显示为中止,这是不可取的(以“成功”或其他状态结束作业不会改善任何事情)。因此,我有两个选择:
- 更改中止逻辑,以使最新的构建继续存在,而旧的构建被中止。这在技术上是可行的,但由于某些内部逻辑而具有其他缺点,这就是我想避免使用此解决方案的原因。
- 完成后删除中止的构建
但是,这显然不像在作业中调用“doDelete”REST API 那样简单,并且构建丢弃器不能设置为存储 0 个构建(它需要是一个正整数)。这是我在代码方面尝试过的(MWE):
steps {
script {
currentBuild.result = 'ABORTED'
error("abort")
}
}
post {
always {
withCredentials([string(credentialsId: 'x', variable: 'TOKEN')]) {
sh "curl -X POST \"https://jenkins.example.com/etc/job/jobname/${env.BUILD_NUMBER}/doDelete\" -i -H 'Authorization: Bearer $TOKEN'"
}
}
}
此代码删除了一些作业信息(例如,控制台日志为空),但不删除构建本身。因此,我的问题仍然存在:
如何让作业自行删除?
解决方案
推荐阅读
- javascript - 导出和导入模块 - Nodejs
- typescript - 错误:错误:“NOT”类型或附近的语法错误
- c++ - 旋转向量中的元素以及如何返回向量
- php - 是否可以在文档块中注释通用容器类
- python - 你如何用字符串列表作为值来洗牌字典,这样没有键是相邻的?
- php - 无法通过 PHP 设置 MS SQL 服务器访问
- google-calendar-api - 谷歌日历在托管服务器上失败,但在本地主机上工作
- azure-web-app-service - 如何从容器访问 Azure Web App 证书
- reactjs - 警告:道具 `data-rbd-draggable-id` 不匹配。服务器:“苹果”客户端:“香蕉”
- xpath - XPath 选择第 n 个直到最后一个孩子?