linux - 在 Amazon Linux 2 AMI 上使用 Jenkins Docker 从站
问题描述
我在使用 Jenkins 提供的标准 docker 镜像时遇到了一个奇怪的问题——尽管只有当 Jenkins 在 Amazon Linux 2 上运行时。Ubuntu 18.04 上的 Jenkins 运行良好。
问题是 Jenkins 无法启动这些从属容器。
Connect 方法 - “附加 Docker 容器”,因为 docker 引擎在 Jenkins 服务器上本地运行。
USER root
有趣的是,如果我在新的 DockerFile 中设置(在 Ubuntu 上不需要),我已经能够让这些容器在 Amazon Linux 上成功运行构建。但是,我需要这些以非 root 用户(如 jenkins 用户)身份运行,以便为 postgres 运行单元测试。
关于如何为 Amazon Linux 2 实现这一目标有什么想法吗?我会错过操作系统上的 docker 设置或安全设置吗?
我测试过的 Docker 镜像:
- https://hub.docker.com/r/jenkins/agent/
- https://hub.docker.com/r/jenkins/jnlp-slave
- https://hub.docker.com/r/jenkins/inbound-agent
这些错误不是很有帮助:
连接 docker 容器 4486c8f2696f40c7de32160d78d6e2438abb1ff92517c71cf66b93baf3d0877f,运行命令 java -jar /home/jenkins/remoting-4.6.jar -noReconnect -noKeepAlive -slaveLog /home/jenkins/agent.log HTTP/1.1 101 UPGRADED Content-Type: application/nd.docker.原始流连接:升级升级:tcp Api-Version:1.40 Docker-Experimental:false Ostype:linux 服务器:Docker/19.03.13-ce (Linux)
错误:启动代理时出现意外错误。这可能是 Jenkins 中的一个错误
重现的基本设置:
码头工人模板:
解决方案
我今天遇到了这个错误。
问题是这个命令:
${JAVA_EXE}
${JVM_ARGS}
-jar
${FS_DIR}/${JAR_NAME}
-noReconnect
-noKeepAlive
-slaveLog
${FS_DIR}/agent.log
这是 Jenkins master 执行的控制节点的命令。问题是slaveLog参数,现在是agentLog。我在这个 Jenkins 问题线程中发现了它(Remote.jar 不再工作,因为更改了参数 slave.jar->agent.jar)。
您可以在 Docker 模板配置中定义入口点 CMD 并更改错误的参数来解决此问题:
${JAVA_EXE}
${JVM_ARGS}
-jar
${FS_DIR}/${JAR_NAME}
-noReconnect
-noKeepAlive
-agentLog
${FS_DIR}/agent.log
在此之后,Jenkins 可以管理节点。让我知道是否也适合你。
快乐大厦。
推荐阅读
- python - 如何将所有变量从父类继承到具有 init 函数的基类?
- java - Java中fillInStackTrace()方法中的`int dummy`是什么意思?
- java - 未能解决:Landroidx/work/impl/utils/futures/AbstractFuture
- laravel - Laravel 工厂无法创建,因为已经有一个
- javascript - 如何优化循环
- reactjs - 部署后反应项目错误(最大调用堆栈)
- unicode - Free Pascal 3.2.0 中的 Unicode 编码/解码错误
- python - 禁用均值函数的舍入
- java - 在这种特定情况下,如何阻止 Eclipse 缩进额外的空格?
- python - 如何使用登录的用户名在 Python Django 帖子上添加评论?