一、参考教程
https://www.cnblogs.com/yuwen01/p/18067005
https://blog.csdn.net/qq_39017153/article/details/135837462
二、安装glibc-2.28
由于node v18开始 都需要GLIBC_2.27支持
# 1.下载原生镜像
docker pull kubesphere/builder-nodejs:v3.2.0
docker run -itd kubesphere/builder-nodejs:v3.2.0 /bin/bash
docker exec -it 容器id /bin/bash
# 参考 https://www.cnblogs.com/yuwen01/p/18067005 升级glibc等组件
# 2.升级gcc与make
# 升级GCC(默认为4 升级为8)</span>
yum install -y centos-release-scl
yum install -y devtoolset-8-gcc*
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
# 3.升级 make(默认为3 升级为4)
wget http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
tar -xzvf make-4.3.tar.gz && cd make-4.3/
./configure --prefix=/usr/local/make
make && make install
cd /usr/bin/ && mv make make.bak
ln -sv /usr/local/make/bin/make /usr/bin/make
# 4.安装bison
yum install -y bison
# 5.更新libstdc++.so.6.0.26
wget https://cdn.frostbelt.cn/software/libstdc%2B%2B.so.6.0.26
cp libstdc++.so.6.0.26 /usr/lib64/
cd /usr/lib64/
ln -snf ./libstdc++.so.6.0.26 libstdc++.so.6
# 6.安装glibc-2.28
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar xf glibc-2.28.tar.gz
cd glibc-2.28/ && mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make && make install
#7.设置编码
localedef -i en_US -f UTF-8 en_US.UTF-8
三、安装新的nodejs
# 安装nodejs
npm cache clean -f
npm install -g n
n 20.17.0
npm install -g yarn
四、打成镜像
#退出容器
exit
#将容器打成镜像
docker commit 容器id 172.17.100.90:80/library/nodejs20:v1.0.0
docker login 172.17.100.90:80 -u admin
docker push 172.17.100.90:80/library/nodejs20:v1.0.0
五、配置kubesphere中的agent
在配置字典中找到jekins-casc-config
在yaml中编辑,添加如下内容
- name: "nodejs20"
label: "nodejs20"
inheritFrom: "nodejs"
containers:
- name: "nodejs"
image: "172.17.100.90:80/library/nodejs20:v1.4.0"
六、在devops中查看是否已经存在nodejs20
如果不存在尝试重启下devops-jenkins的容器,也可以不重启,直接使用
pipeline {
agent {
node {
label 'nodejs20'
}
}
stages {
stage('stage-gweq5') {
agent none
steps {
container('nodejs') {
sh 'node -v'
}
}
}
}
}
评论区