1 安装gcc8.2.0、make4.3、GLIBC_2.28
- 目的:安装gcc8.2.0、make4.3、GLIBC_2.28的目的是为了配node的环境。
- 按照教程centos7安装glibc_2.28和gcc 8.2 安装就好。
1.1 说明
- 安装过程中,
make、make install都很耗时,可以使用nohup make -j4 &、nohup make install &(使用nohup &,即使我们关闭控制台,进程依旧会继续运行)进行安装(见Linux后台运行任务nohup结合&用法以及如何精准查找进程并kill后台任务实践),可以使用命令tail -f nohup.out命令观察安装的进度,如果安装失败就把build文件夹删掉再来一遍,若观察到make[1]: Leaving directory ...说明make、make intall命令执行结束了,可继续下一步了,make[1]:leaving directory。 - 如果
make、make install时间太久 阿里云的 Workbench远程连接 提醒你远程连接关闭,不要着急关闭,重新起一个ssh连接,tail -f nohup.out命令观察安装是否还在继续,若还在继续不用理会这个提醒。 - 若安装过程中遇到没法解压文件,提示要yum安装ilbzip2,而运行命令
yum -y install bzip2时,又遇到Cannot find a valid baseurl for repo: centos-sclo-sclo/x86_64问题,可参考链接解决,即更换yum源
1.2 安装过程
- 先安装make4.3。
- 目的:在安装
GLIBC_2.28的过程中,有可能会遇到These critical programs are missing or too old: make compiler的问题(centos7.9自带的make版本太低),而make4.4有问题(见Build Not completed in Arch Linux),因此选择安装make4.3的。 - 把教程中的make4.2改为make4.3进行安装。
- 安装gcc8.2.0。
- 目的:阿里云服务器centos7.9默认的gcc版本太老了,编译node时有些东西找不到,如
node: /lib64/libstdc++.so.6: version GLIBCXX_3.4.21 not found,而gcc9.2版本是不行的编译GLIBC_2.28的时候报错,因此不能安装太高版本的gcc,而太老版本的gcc又编译不了GLIBC_2.28,因此最终安装gcc8.2.0。 - 按照教程安装。
- CentOS7环境下gcc(版本10.2.0)升级详细过程的安装过程和命令也可以借鉴(但不要安装该版本,该版本有些高,编译不了GLIBC_2.28)。
- 安装
GLIBC_2.28。
- 目的:安装的gcc8.2.0中缺少
GLIBC_2.28,用于解决node: /lib64/libc.so.6: version GLIBC_2.28 not found (required by node)。 - 把教程中的glibc 2.27改成glibc 2.28即可。
2 拉取gitee代码不成功遇到的问题及解决方法(升级ssh)
- 目的:配置私钥后,拉取gitee代码不成功,遇到一些问题及其解决方法如下述。
2.1 说明
stderr: No ECDSA host key is known for gitee.com and you have requested strict checking.and Host key verification failed问题。
- 解决方案见链接。
Unsupported option “accept-new”. Could not read from remote repository。 解决意见链接,其实就是ssh版本太低,需要进行升级,可参考centOS ssh升级到9.3与降级进行升级,升级后Jenkins就不会再报错了。如果升级ssh后会发现没法root登陆,只能用创建的临时用户登陆,如果把临时用户删掉,发现还没法登陆(可使用阿里云平台的“通过VNC远程连接”,登录名root-登陆密码),可以参考OpenSSH9.3p1升级实践(不要尝试参考这个教程安装ssh,会失败的)删除临时用户。
3 安装Jenkins 2.426
-
目的:如果安装java8对应的Jenkins@2.346.1 后,打开浏览器访问Jenkins安装插件时,发现所有插件安装失败,提示是Jenkins版本太低。
-
参考jenkins和jdk安装教程(安装支持jdk8的最新版本),参考小白学习centos7部署jenkins,安装jdk11、Jenkins,我并没有没有安装Maven,也没有配置java的环境变量,也没有给Jenkins配置文件读写权限。
3.1 安装过程
- 安装java11。
- 命令
sudo yum install java-11-openjdk -y安装java11,命令java --version查看java11是否安装成功,安装完成后记的配一下环境变量。(参考自CentOS 8 JDK 11安装)
- 安装Jenkins。
- 在官网Jenkins查看java11对应版本的Jenkins,在阿里云服务器上下载清华源下载java11对于版本的Jenkins,如输入命令
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.426-1.1.noarch.rpm,运行命令rpm -ivh jenkins-2.426-1.1.noarch.rpm完成安装。采用清华源的方式安装,是因为安装Jenkins需要访问外网,下载速度很慢。
- 配置Jenkins。
- Jenkins此时还不能访问docker服务,需要把Jenkins添加到docker用户组里(docker组里的用户可以向docker发送命令),如果配置后不能生效要重启Jenkins,
systemctl restart jenkins.service。 - 运行
firewall-cmd --zone=public --add-port=8080/tcp --permanent命令遇到FirewallD is not running问题,参考【Linux环境】centos出现“FirewallD is not running”怎么办,如何解决解决。
- 添加到docker用户组里
Jenkins此时还不能访问docker服务,需要把Jenkins添加到docker用户组里(docker组里的用户可以向docker发送命令),如果配置后不能生效要重启Jenkins,
systemctl restart jenkins.service。
4 其他问题
4.1 Jenkins连接Docker问题
- 构建过程中,遇到
permission denied while trying to connect to the Docker daemon socket,Jenkins没法连接到docker,可sudo chmod 666 /var/run/docker.sock,systemctl restart docker.service解决,见“Permission Denied While Trying to Connect to the Docker Daemon Socket” Error
4.2 npm镜像源证书过期问题
- 构建过程中遇到npm ERR! code CERT_HAS_EXPIRED,解决方案可参考npm ERR! code CERT_HAS_EXPIRED:解决证书过期问题,前两个解决方法足矣。