Sign inSign up

jamnine/jenkins

By jamnine

•Updated 9 months ago

Jenkins 依赖包:NET3.1-9.0 + Jenkins + npm + cnpm + yarn + nvm

Image
Integration & delivery
0

1.2K

jamnine/jenkins repository overview

⁠变更记录

记录每次修订的内容,方便追溯。

最近更新时间: 2026-02-05

  • jenkins 2.549需要jdk21 升级JDK版本,采用FROM jenkins/jenkins:lts-jdk21作为底包
  • 没有加入net 10 ,net10 官方支持 debain12 13,试了几次都失败了
  • 原本的jdk17的latest版本更改名字为“v2.0.1-net-3-5-6-7-8-9” “ jdk17-old” 这两个tag

构建文件

# 基础镜像
FROM jenkins/jenkins:lts-jdk21

LABEL maintainer="nine <[email protected]>"

# 切换到root用户(全程用root安装,避免权限问题)
USER root

# 显示系统信息
RUN uname -a && cat /etc/*release

# 安装基础依赖
RUN echo "deb [trusted=yes] http://archive.debian.org/debian buster main contrib non-free" > /etc/apt/sources.list.d/buster.list \
  && echo "deb [trusted=yes] http://archive.debian.org/debian bullseye main contrib non-free" > /etc/apt/sources.list.d/bullseye.list \
  && echo "deb [trusted=yes] http://archive.debian.org/debian-security buster/updates main" >> /etc/apt/sources.list.d/buster.list \
  && curl -fsSL https://ftp-master.debian.org/keys/archive-key-10.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/buster.gpg \
  && curl -fsSL https://ftp-master.debian.org/keys/archive-key-11.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/bullseye.gpg \
  && apt-get -o Acquire::Check-Valid-Until=false update \
  && apt-get install -y \
  curl \
  libunwind8 \
  gettext \
  apt-transport-https \
  software-properties-common \
  openjdk-11-jdk \
  libssl1.1 \
  libicu67 \
  git \
  bash \
  && rm -rf /var/lib/apt/lists/*

# 配置.NET源并安装
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg \
  && mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg \
  && sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-buster-prod buster main" > /etc/apt/sources.list.d/dotnetdev.list' \
  && apt-get update && apt-get install -y dotnet-sdk-3.1 dotnet-sdk-5.0 \
  && rm -rf /var/lib/apt/lists/* \
  && sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-bullseye-prod bullseye main" > /etc/apt/sources.list.d/dotnetdev.list' \
  && apt-get update && apt-get install -y dotnet-sdk-6.0 dotnet-sdk-7.0 dotnet-sdk-8.0 dotnet-sdk-9.0 \
  && rm -rf /var/lib/apt/lists/*

# 定义NVM路径(用root安装,路径设为全局可访问)
ENV NVM_DIR="/usr/local/nvm"
ENV NODE_VERSION="20.10.0"

# 用root安装NVM,确保文件持久化
RUN echo "用root安装NVM到全局路径: $NVM_DIR" \
  && mkdir -p "$NVM_DIR" \
  && chmod 777 "$NVM_DIR" \  
  && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | NVM_DIR="$NVM_DIR" bash \
  && echo "验证nvm.sh是否存在" \
  && test -f "$NVM_DIR/nvm.sh" || (echo "NVM安装失败:$NVM_DIR/nvm.sh不存在" && exit 1) \
  && echo "加载NVM并安装Node" \
  && . "$NVM_DIR/nvm.sh" \
  && nvm install "$NODE_VERSION" \
  && nvm alias default "$NODE_VERSION" \
  && nvm use default \
  && echo "Node安装完成: $(node -v)" \
  && chmod -R 777 "$NVM_DIR"  # 递归授权,确保jenkins用户可访问

# 配置环境变量(全局可见)
ENV NODE_PATH="$NVM_DIR/versions/node/v$NODE_VERSION/lib/node_modules"
ENV PATH="$NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH"

# 切换回jenkins用户
USER jenkins

# 安装前端工具(此时nvm.sh已在全局路径,权限开放)
RUN echo "加载NVM环境(全局路径)" \
  && . "$NVM_DIR/nvm.sh" \
  && echo "当前Node版本: $(node -v)" \
  && npm install -g cnpm yarn \
  && yarn config set registry https://registry.npm.taobao.org

# 验证所有工具
RUN . "$NVM_DIR/nvm.sh" \
  && dotnet --list-sdks \
  && echo "Node: $(node -v)" \
  && echo "npm: $(npm -v)" \
  && echo "cnpm: $(cnpm -v)" \
  && echo "yarn: $(yarn --version)"

WORKDIR /var/jenkins_home

最近更新时间: 2025-07-29 重构更新:包含了net 3.1 5 6 7 8 9 yarn npm nvm cnpm

Step 14/15 : RUN . "$NVM_DIR/nvm.sh"   && dotnet --list-sdks   && echo "Node: $(node -v)"   && echo "npm: $(npm -v)"   && echo "cnpm: $(cnpm -v)"   && echo "yarn: $(yarn --version)"
 ---> Running in c22f02d41b3b
3.1.426 [/usr/share/dotnet/sdk]
5.0.408 [/usr/share/dotnet/sdk]
6.0.428 [/usr/share/dotnet/sdk]
7.0.410 [/usr/share/dotnet/sdk]
8.0.405 [/usr/share/dotnet/sdk]
9.0.102 [/usr/share/dotnet/sdk]
Node: v20.10.0
npm: 10.2.3
cnpm: [email protected] (/usr/local/nvm/versions/node/v20.10.0/lib/node_modules/cnpm/lib/parse_argv.js)
[email protected] (/usr/local/nvm/versions/node/v20.10.0/lib/node_modules/cnpm/node_modules/npm/index.js)
[email protected] (/usr/local/nvm/versions/node/v20.10.0/bin/node)
[email protected] (/usr/local/nvm/versions/node/v20.10.0/lib/node_modules/cnpm/node_modules/npminstall/lib/index.js)
prefix=/usr/local/nvm/versions/node/v20.10.0 
linux x64 6.1.27 
registry=https://registry.npmmirror.com
yarn: 1.22.22
 ---> Removed intermediate container c22f02d41b3b
 ---> bb5e9cf3fefb
Step 15/15 : WORKDIR /var/jenkins_home
 ---> Running in 92b0a27ae23b
 ---> Removed intermediate container 92b0a27ae23b
 ---> e8c9b45234ad
Successfully built e8c9b45234ad
Successfully tagged jamnine/jenkins:latest
# 基础镜像
FROM jenkins/jenkins:lts-jdk11

LABEL maintainer="nine <[email protected]>"

# 切换到root用户(全程用root安装,避免权限问题)
USER root

# 显示系统信息
RUN uname -a && cat /etc/*release

# 安装基础依赖
RUN echo "deb [trusted=yes] http://archive.debian.org/debian buster main contrib non-free" > /etc/apt/sources.list.d/buster.list \
  && echo "deb [trusted=yes] http://archive.debian.org/debian bullseye main contrib non-free" > /etc/apt/sources.list.d/bullseye.list \
  && echo "deb [trusted=yes] http://archive.debian.org/debian-security buster/updates main" >> /etc/apt/sources.list.d/buster.list \
  && curl -fsSL https://ftp-master.debian.org/keys/archive-key-10.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/buster.gpg \
  && curl -fsSL https://ftp-master.debian.org/keys/archive-key-11.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/bullseye.gpg \
  && apt-get -o Acquire::Check-Valid-Until=false update \
  && apt-get install -y \
  curl \
  libunwind8 \
  gettext \
  apt-transport-https \
  software-properties-common \
  openjdk-11-jdk \
  libssl1.1 \
  libicu67 \
  git \
  bash \
  && rm -rf /var/lib/apt/lists/*

# 配置.NET源并安装
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg \
  && mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg \
  && sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-buster-prod buster main" > /etc/apt/sources.list.d/dotnetdev.list' \
  && apt-get update && apt-get install -y dotnet-sdk-3.1 dotnet-sdk-5.0 \
  && rm -rf /var/lib/apt/lists/* \
  && sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-bullseye-prod bullseye main" > /etc/apt/sources.list.d/dotnetdev.list' \
  && apt-get update && apt-get install -y dotnet-sdk-6.0 dotnet-sdk-7.0 dotnet-sdk-8.0 dotnet-sdk-9.0 \
  && rm -rf /var/lib/apt/lists/*

# 定义NVM路径(用root安装,路径设为全局可访问)
ENV NVM_DIR="/usr/local/nvm"
ENV NODE_VERSION="20.10.0"

# 用root安装NVM,确保文件持久化
RUN echo "用root安装NVM到全局路径: $NVM_DIR" \
  && mkdir -p "$NVM_DIR" \
  && chmod 777 "$NVM_DIR" \  
  && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | NVM_DIR="$NVM_DIR" bash \
  && echo "验证nvm.sh是否存在" \
  && test -f "$NVM_DIR/nvm.sh" || (echo "NVM安装失败:$NVM_DIR/nvm.sh不存在" && exit 1) \
  && echo "加载NVM并安装Node" \
  && . "$NVM_DIR/nvm.sh" \
  && nvm install "$NODE_VERSION" \
  && nvm alias default "$NODE_VERSION" \
  && nvm use default \
  && echo "Node安装完成: $(node -v)" \
  && chmod -R 777 "$NVM_DIR"  # 递归授权,确保jenkins用户可访问

# 配置环境变量(全局可见)
ENV NODE_PATH="$NVM_DIR/versions/node/v$NODE_VERSION/lib/node_modules"
ENV PATH="$NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH"

# 切换回jenkins用户
USER jenkins

# 安装前端工具(此时nvm.sh已在全局路径,权限开放)
RUN echo "加载NVM环境(全局路径)" \
  && . "$NVM_DIR/nvm.sh" \
  && echo "当前Node版本: $(node -v)" \
  && npm install -g cnpm yarn \
  && yarn config set registry https://registry.npm.taobao.org

# 验证所有工具
RUN . "$NVM_DIR/nvm.sh" \
  && dotnet --list-sdks \
  && echo "Node: $(node -v)" \
  && echo "npm: $(npm -v)" \
  && echo "cnpm: $(cnpm -v)" \
  && echo "yarn: $(yarn --version)"

WORKDIR /var/jenkins_home

最近更新时间: 2024-07-23

  • 增加Net 7.0/8.0 SDK 编译Web API项目
  • 重新编排生成,最新的jenkins 2.468,JDK17.x版本,解决旧版本升级最新jenkins导致无法启动
  • 由于使用了debain 12 ,不包含了3.1和5.0的sdk,个人试了一下没解决,应该需要手动安装,就没继续尝试了
  • 里面现在包含了net 6、7、8
  • docker exec jenkinsnine cat /var/jenkins_home/secrets/initialAdminPassword

最近更新时间: 2022-03-22

⁠2022-03
  • 增加Net 6.0 SDK 编译Web API项目

  • 其他组件常规升级

  • 根据SDK不同划分几个标签 | 版本号 | 标签 | 作者 | 不同组件 | 发布日期 | | --- | --- | --- | --- | --- | | 1.2.0 | latest⁠ | Jamnine(何拾玖) | Core SKD 3.1/5/6 | 2022-03-23 | | 1.2.0 | v1.2.0-net-3.1-5-6⁠ | Jamnine(何拾玖) | Core SKD 3.1/5/6 | 2022-03-23 | | 1.2.0 | v1.2.0-net-6.0⁠ | Jamnine(何拾玖) | Core SKD 6 | 2022-03-23 | | 1.2.0 | v1.2.0-net-5.0⁠ | Jamnine(何拾玖) | Core SKD 5 | 2022-03-23 | | 1.2.0 | v1.2.0-net-core-3.1⁠ | Jamnine(何拾玖) | Core SKD 3.1 | 2022-03-22 |

  • 注:latest⁠等同 tag:v1.2.0-net-3.1-5-6⁠

  • 共同组件 | 1.2.0共同组件 | Jenkins 2.339 | Core SKD 3.1/5/6 | NodeJs 14.19.1 | Git 2.30.2
    npm 8.5.5 | cnpm 7.1.1 | yarn 1.22.18 | linux x64 3.10.0-957.21.3.el7.x86_64 | | --- | --- |

⁠2021-05
  • 增加yarn 编译前端项目使用

  • 添加Git 拉取代码

  • 增加Net 5.0 SDK 编译Web API项目

  • 其他组件常规升级 | 版本号 | 标签 | 作者 | 不同组件 | 发布日期 | | --- | --- | --- | --- | --- | | 1.1.0 | v1.1.0-net-3.1-5⁠ | Jamnine(何拾玖) | Core SKD 3.1/5 | 2021-05-05 | | 1.1 | v1.1.0-net-5 | Jamnine(何拾玖) | Core SKD 5 | 2021-05-05 | | 1.1 | v1.1.0-net-3.1 | Jamnine(何拾玖) | Core SKD 3.1 | 2021-05-05 |

  • 共同组件 | 1.1共同组件 | Jenkins 2.257 | Core SKD 3.1/5 | NodeJs 14.16.1 | Git 2.11.0
    npm 7.11.1 | cnpm 6.2.0 | yarn 1.22.10 | linux x64 3.10.0-1127.19.1.el7.x86_64 | | --- | --- |

⁠2020-11
  • 制作第一个容器

  • 包含Jenkins 2.266 Core SKD 3.1 NodeJs 14.15.0 Git 2.11.0 npm 6.14.8 cnpm 6.1.1 linux linux x64 3.10.0-957.21.3.el7.x86_64

  • CICD初体验,编译Web API Core版本,Vue 2.x 项目 | 版本号 | 标签 | 作者 | 不同组件 | 发布日期 | | --- | --- | --- | --- | --- | | 1.0.0 | v1.0.0-net-core-3.1⁠ | Jamnine(何拾玖) | Core SKD 3.1 | 2020-11-11 |

  • 共同组件 | 1.0.0共同组件 | Jenkins 2.266 | Core SKD 3.1 | NodeJs 14.15.0 | Git 2.11.0
    npm 6.14.8 | cnpm 6.1.1 | yarn 1.22.10 | linux x64 3.10.0-957.21.3.el7.x86_64 | | --- | --- |


⁠创建Jenkins 容器

⁠创建Dockerfile

FROM jenkins/jenkins

# 说明该镜像的制作者和联系方式
MAINTAINER nine [email protected]

# Switch to root to install .NET Core SDK
USER root

# Show distro information!
RUN uname -a && cat /etc/*release

# Based on instructiions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current
# Install dependency for .NET Core 3.1 / 5 / 6
RUN apt-get update
RUN apt-get install -y curl libunwind8 gettext apt-transport-https

# Based on instructions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current
# Install microsoft.qpg
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
RUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list'

# Install the .NET Core framework Choose one Because I need several versions here, I installed three SDKs
RUN apt-get update
RUN apt-get install -y dotnet-sdk-3.1
RUN apt-get install -y dotnet-sdk-5.0 
RUN apt-get install -y dotnet-sdk-6.0 

# Install the npm 
RUN apt-get install -y curl \
  && curl -sL https://deb.nodesource.com/setup_14.x | bash - \
  && apt-get install -y nodejs \
  && curl -L https://www.npmjs.com/install.sh | sh
    
# Install cnpm
RUN npm install cnpm -g

# Install yarn
RUN npm install -g yarn

RUN npm -v
RUN cnpm -v
RUN yarn --version

# Switch back to the jenkins user.
USER jenkins

⁠打包创建容器

# 进入home目录(假设home目录为空)
  $ cd /home
# 创建一个dockerfile文件,用于创建自己的Jenkins容器
  $ touch Dockerfile
# 编辑文件,vi、vim熟练的或者linux数量的直接进行操作,
# 本人不才,我用finalshell直接粘贴过去的,反正实现把上面的命令复制过去就行
  $ vi Dockerfile 
# 在jenkinsdockerfile目录下进行,确认是否在此目录,enter 创建容器
  # 不指定文件构建镜像,此时规定Dockerfile的名称一定是Dockerfile,其他名字无法构建容器,或者使用指定文件构建镜像
  $ docker build -t jenkinsdockerfile .
   # 指定文件构建镜像 -t 镜像名称 jamnine/jenkins	-f 指定文件生成镜像
  $ docker build  -t jamnine/jenkins -f /home/JenkinsDockerfile .
----------漫长等待.....大概十五分钟吧,以下这段为实例示例----------
  [root@nine home]# docker build -t jenkinsdockerfile .
  Sending build context to Docker daemon   16.9kB
  Step 1/20 : FROM jenkins/jenkins
  latest: Pulling from jenkins/jenkins
  e4d61adff207: Pull complete 
  eacef06daf30: Pull complete 
  ca581b0141a3: Pull complete 
  d872c65909bb: Pull complete 
  bcce550e05a9: Pull complete 
  3461f061a833: Pull complete 
  3b6f8a58a68d: Pull complete 
  6d47f55855ba: Pull complete 
  baa80a92c8e4: Pull complete 
  39889d888af7: Pull complete 
  18b5e0e36b4c: Pull complete 
  a53e22d026ad: Pull complete 
  a281963da5b5: Pull complete 
  2366689c95a7: Pull complete 
  27cbe8a0f233: Pull complete 
  fffccee1c284: Pull complete 
  a6afec98241f: Pull complete 
  Digest: sha256:a5215b81a7f6e111ed6625b342521145e24c232891615be29ce3a251a631feac
  Status: Downloaded newer image for jenkins/jenkins:latest
   ---> f7d565ddb272
  Step 2/20 : MAINTAINER nine [email protected]
   ---> [Warning] IPv4 forwarding is disabled. Networking will not work.
   ---> Running in 47cecef5c92c
  Removing intermediate container 47cecef5c92c
   ---> 13dd258b38bc
  Step 3/20 : USER root
  ..........后续省略..........
----------容器创建---结束------------------------------
# 查看创建好的镜像
docker images

⁠推送到DockerHub

Tag summary

Content type

Image

Digest

sha256:e3a8fd37e…

Size

1.7 GB

Last updated

9 months ago

docker pull jamnine/jenkins