升级到 Jenkins LTS 2.73.x
每个部分都涵盖了从之前LTS版本的升级,2.73.1的部分涵盖了从2.60.3升级。
升级到 Jenkins LTS 2.73.3
更改用户记录的磁盘存储布局
SECURITY-499的修复程序重命名包含`JENKINS_HOME/users/中的用户记录的目录 : 具有不安全名称的目录(例如`NUL
(Windows)等保留名称或使用`\`等不安全字符)将被重命名为这些用户名的文件系统安全表示,其中有问题的字符或序列会被转义。
将Jenkins降级到高于2.73.3的版本会导致广泛用于引用Jenkins中用户的名称(例如分配的权限)与用户的元数据(Jenkins用户数据库的密码记录, SSH公钥和各种首选项) - 因为后者可能会更改为预期用户名的文件系统安全表示 - 因此不鼓励。
升级到 Jenkins LTS 2.73.2
低特权用户可能无法再重新配置某些代理
启动方法_Launch agent via execution of command on master_未正确检查配置用户的命令运行权限。 这个问题已经解决了,现在这个启动方法只能由Jenkins管理员配置(或者更具体地说,具有_Run Scripts_权限的用户)。
此修补程序的一个已知限制是,即使启动方法和脚本保持不变,没有 Run Scripts 权限的用户(通常不是管理员的每个人)都不能再使用此启动方法配置代理程序。
对远程API输出的限制
SECURITY-514, SECURITY-611, SECURITY-617, SECURITY-618
多个远程API端点具有限制的内容。 更详细的信息可以在上面链接的安全建议中找到。
所有 user properties 已经从
/user/(username)/api/
其他返回用户的API中删除,除非由管理员或用户自己访问。现在,返回队列项目和任务(构建)的API只有在具有读取权限的用户请求时才会返回它们。
/queue/item/(ID)/api/
现在只能由具有指定项目的读取权限的用户访问。
修复了2.73.1中的回归
下面列出的2.73.1中的回归在2.73.2中已经确定。
升级到 Jenkins LTS 2.73.1
已知问题:代理连接失败,涉及Jenkins掌握未定义或不可写主目录
涉及代理连接的回归已经被确定。 如果Jenkins主服务器上的用户主目录(HOME
,而不是`JENKINS_HOME`)未定义或不可写,则不能建立远程连接。
已知下列功能会受到影响:
代理连接
基于远程处理的CLI连接(自2.46.2起弃用)
构建Maven项目(Maven 集成插件)
显示的错误将包括主目录内的目录`.jenkins/cache/jars`的路径,其堆栈跟踪将引用`hudson.remoting.FileSystemJarCache`。
Jenkins Docker镜像已更改为Jenkins用户定义的,可写的主目录。 典型的Web应用程序容器(例如Tomcat)设置可能没有可运行容器的用户的可写主目录,并且可能需要适应这个问题。
可能的解决方法:
使指定的主目录可写入Jenkins用户。
定义Jenkins运行的用户可写的主目录。 .
已知问题:使用密码保护的ed25519 SSH密钥随机出现连接失败
涉及使用密码保护的ed25519 SSH密钥进行认证的回归已在2.73中确定。 它随机导致使用这些键的功能出现故障,例如:
SSH Slaves插件连接
使用JGit实现访问Git存储库
访问Subversion版本库(未确认)
解决此问题的方法:
在Jenkins中不要使用ed25519作为SSH密钥
不要使用密码来保护Jenkins中的ed25519 SSH密钥
在Git插件的情况下,切换到Git CLI实现
Groovy Script, 当在”Script Console”(位于`/script`处)执行时,可以用来确定实例是否包含任何密码保护的ed25519 SSH密钥,然后再升级。
Groovy 2.4.11 升级
Groovy从2.4.8更新为2.4.11。 这可能会解决与Groovy相关的现有内存问题,因为2.4.9包含对 GROOVY-8067的修复。 可能不再需要应用 `groovy.use.classvalue`解决方法。
Winstone 4.1 升级
嵌入式Jetty容器已从版本9.2.15更新到版本9.4.5。 有关更改的详细列表,请参阅 Jetty 更新日志。
在这次更新中,支持可选的`—spdy`参数已被删除。 如果指定了`—spdy`参数,Jenkins现在将拒绝启动。 它需要从任何Jenkins初始化脚本中删除。
此外,对1.2之前的所有TLS版本的支持已被删除。 如果您使用嵌入式Jetty容器的HTTPS功能,它将不再接受TLS 1.0或1.1连接。
构建授权
此更改仅影响授权项目插件的用户。
当授权项目插件未指定全局默认配置时,以前版本的Jenkins实施了特殊权限回退: 出于*Build other projects* and *Build after other projects are built*的目的,如果授权项目配置没有为有问题的作业指定构建授权,它将回退到使用 anonymous 用户的权限进行操作。 这确保了安全的默认值,但仅限于这些与触发器相关的权限检查。
这种行为已经改变了,Jenkins现在将执行权限检查作为SYSTEM(即具有完全权限)以确定是否应构建项目。
要恢复先前的行为,请配置全局*Project default Build Authorization* ,将默认授权设置为匿名用户的授权。 此功能已在授权项目插件1.2.0版中实施。
远程工作目录
嵌入式 Jenkins Remoting版本已经从3.7更新为3.10。 它引入了对工作目录的支持,Remoting可以使用它来存储缓存,日志和其他元数据。
一旦启用工作目录模式,Jenkins代理开始将日志写入磁盘并更改文件系统JAR缓存的默认目标。 在远程处理中,可以使用命令行选项启用该选择性功能,但Jenkins为某些代理程序启动器定义了自定义行为:
Java Web Start启动器 (又名 JNLP agent)
旧代理:工作目录需要手动启用
从Web UI创建的新代理:工作目录默认启用,工作目录指向代理的 Remote root directory 。
从CLI / API创建的新代理:行为取决于传递的配置文件,默认情况下禁用工作目录
命令启动器
- 如果需要,应该在启动设置中手动启用工作目录
其他启动器类型(例如SSH启动器)
该行为在插件中定义,它具有独立的发布周期
跟随门票的更新链接到 JENKINS-44108
您可以在 Jenkins Remoting 文档中找到更多信息,示例和升级指南。