You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Kubernetes插件:自定义Ubuntu镜像与JNLP inbound-agent整合问询

问题解答

1. 是否应使用inbound-agent作为JNLP基础镜像?

是的,必须使用jenkins/inbound-agent作为JNLP基础镜像。它是Jenkins官方专为JNLP代理场景打造的镜像,内置了:

  • 用于JNLP连接的start.sh启动脚本,负责与Jenkins主节点建立通信;
  • JNLP客户端核心依赖agent.jar;
  • 预配置的jenkins用户及权限体系,适配Jenkins运行的安全要求。
    完全满足你保留JNLP连接能力的需求,是官方推荐的标准方案。

2. 基于Ubuntu:18.04的自定义镜像如何整合JNLP功能?

通过Docker多阶段构建实现整合:先从匹配版本的jenkins/inbound-agent中提取JNLP核心组件,再复制到你的自定义镜像中,同步用户权限与启动逻辑,同时保留原有自定义配置。

修改后的Dockerfile

# 第一阶段:从官方inbound-agent提取JNLP核心文件(选择与Ubuntu18.04、JDK11匹配的版本)
FROM jenkins/inbound-agent:4.13.3-4-jdk11-ubuntu-18.04 AS jnlp-source

# 第二阶段:基于你的Ubuntu18.04镜像构建自定义代理
FROM ubuntu:18.04

ARG JFROG_CI_INT_USERNAME
ARG JFROG_CI_INT_PASSWORD
ARG JFROG_CI_INT_NPM_TOKEN
ARG GITHUB_ORANGE_USER
ARG GITHUB_ORANGE_PASSWORD
ARG PULUMI_USER
ARG PULUMI_TOKEN

ENV GITHUB_ORANGE_USER=$GITHUB_ORANGE_USER
ENV GITHUB_ORANGE_PASSWORD=$GITHUB_ORANGE_PASSWORD
ENV DEBIAN_FRONTEND=noninteractive

# 复制JNLP连接必需的核心文件
COPY --from=jnlp-source /usr/local/bin/start.sh /usr/local/bin/start.sh
COPY --from=jnlp-source /usr/share/jenkins/agent.jar /usr/share/jenkins/agent.jar
COPY --from=jnlp-source /etc/passwd /etc/passwd
COPY --from=jnlp-source /etc/group /etc/group

# 创建并配置jenkins用户工作目录权限
RUN mkdir -p /home/jenkins && chown jenkins:jenkins /home/jenkins
WORKDIR /home/jenkins

COPY requirements.txt /
COPY authorization.sh /

# 更新软件源并安装依赖(保留原有逻辑)
RUN apt-get update
RUN apt-get -qqy install software-properties-common
RUN add-apt-repository ppa:git-core/ppa
RUN add-apt-repository ppa:openjdk-r/ppa
RUN add-apt-repository ppa:deadsnakes/ppa

RUN apt-get -qqy install git

ENV PYTHON_VER="3.9"

RUN apt-get -qqy update && \
    apt-get -qqy --no-install-recommends install \
    gpg-agent \
    software-properties-common \
    openjdk-11-jdk \
    ca-certificates \
    build-essential \
    tzdata \
    zip \
    unzip

# 确保启动脚本具备可执行权限
RUN chmod +x /usr/local/bin/start.sh

# 使用官方JNLP启动脚本作为入口,保留连接逻辑
ENTRYPOINT ["/usr/local/bin/start.sh"]

关键改动说明

  • 多阶段构建:第一阶段仅用于提取文件,避免将inbound-agent的冗余内容带入最终镜像;
  • 核心文件复制:
    • start.sh:JNLP连接的启动入口,负责接收主节点指令、建立通信;
    • agent.jar:JNLP客户端核心依赖,实现与主节点的协议交互;
    • /etc/passwd//etc/group:同步jenkins用户配置,避免权限冲突;
  • 权限对齐:确保/home/jenkins目录归属与inbound-agent一致,适配Jenkins的运行要求;
  • 保留原有配置:完全保留你原有的依赖安装、环境变量配置,不影响原有构建逻辑。

内容的提问来源于stack exchange,提问作者EilonA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:22:44