我们宣布可以使用官方的 Windows agent Docker 镜像了,这些镜像允许在 Docker 和 Kubernetes 上使用 Windows 操作系统配置 Jenkins agent。
1 新镜像 ?
2 使用 Windows Docker镜像
jenkins/agent 镜像是 JDK 和 agent.jar(Jenkins Remoting 库)的简单 agent。
该镜像有两个主要用途:
要针对第二个用途运行 agent,请在设置 Remote root directory 为 C:\Users\jenkins\agent 后,在 Jenkins 主服务器上指定以下命令:
docker run -i --rm --name agent --init jenkins/agent:jdk8-windowsservercore-1809 java -jar C:/ProgramData/Jenkins/agent.jar
示例:
docker run jenkins/inbound-agent:windowsservercore-1809 `
-Url http://jenkins-server:port `
-WorkDir=C:/Users/jenkins/Agent `
-Secret <SECRET> `
-Name <AGENTNAME>
使用环境变量的示例:
docker run -e "JENKINS_URL=http://jenkins-server:port" -e "JENKINS_AGENT_NAME=AGENTNAME" `
jenkins/inbound-agent:windowsservercore-1809 `
-WorkDir=C:/Users/jenkins/Agent `
-Secret <SECRET> `
-Name <AGENTNAME>
注意:-Url、-Name 和 -Secret 是必选参数,但可以将其指定为命令行参数或环境变量。
如上所述,jenkins/ssh-agent docker 镜像基于与主机的 SSH 通信,而不是基于远程 TCP 或 WebSocket 协议。该镜像设置了一个 jenkins 用户和 OpenSSH 服务器,以便主服务器可以通过 SSH 连接到 agent。该镜像需要 SSH 公钥作为参数,并将该密钥放入 jenkins 用户的 authorized_keys 文件中,应在主服务器上的 agent 配置中指定私钥,以允许主服务器连接。
示例:
docker run jenkins/ssh-agent:jdk8-windowsservercore-1809 "<public key>"
使用 docker run 时,还可以将公钥作为环境变量传递。
示例:
docker run -e "JENKINS_AGENT_SSH_PUBKEY=<public key>" jenkins/ssh-agent:jdk8-windowsservercore-1809
然后,将能够作为 “jenkins” 使用 SSH Build Agents Plugin与匹配的私钥连接该 agent。
3 下一步计划
我们还正在研究提供多体系结构清单,以使 Windows 镜像成为 latest 标签的一部分。
还有一个开放的 pull-request,用于为 Jenkins 主服务器创建基于 Windows 的 Docker 镜像。对此没有很多要求,但是为了使 Windows 用户的产品完善,创建了这个 pull request。
对于与 Windows 不相关的计划,请参阅 agent 的 Docker镜像:新名称和下一步博客文章。