当使用到maven项目时会用到jdk和maven环境,也需要ssh密钥避免容器重启消失,我使用容器版本jenkins2.344自带openjdk11,与打包项目不兼容会出现构建报错,所以到此自定义环境及版本使用,以下使用dockerfile构建重新打包新的镜像从源头解决

upload successful

Dofilefile构建

  • 此处遇到痛点Dockerfile文件source全局配置文件一直不生效,会导致容器启动后需手动source,解决方式就是将souce /etc/profile写到~/.bashrc文件中完美解决
1
2
3
4
5
6
7
8
FROM harbor.od.com/public/jenkins:v2.344
USER root
RUN ssh-keygen -q -t rsa -N '' -f /root/.ssh/id_rsa
ADD ./apache-maven-3.6.3-bin.tar.gz /usr/local/
ADD ./jdk1.8.0_221.tar.gz /usr/local
RUN echo " export JAVA_HOME=/usr/local/jdk1.8.0_221 \n export CLASSPATH=.:/lib.tools.jar \n \
export MAVEN_HOME=/usr/local/apache-maven-3.6.3 \n export PATH=\$JAVA_HOME/bin:\$MAVEN_HOME/bin:\$PATH" >> /etc/profile
RUN echo "source /etc/profile" >> /root/.bashrc
1
2
[root@docker-compose]# docker build -t harbor.od.com/jenkins/jenkins-ssh-mvn:v2.344 .
[root@docker-compose]# docker push harbor.od.com/jenkins/jenkins-ssh-mvn:v2.344
  • 到此密钥、自定义版本jdk、自定义版本maven环境都可以正常使用

upload successful

Publish over SSH

  • 在我们环境中,主机会不定期修改密码会造成使用用户密码配置在jenkins中的服务器列表受影响 Publish over SSH 将私钥配置文件填写path to key中

upload successful

  • 将公钥传输至主机
1
2
3
4
5
6
7
8
9
10
11
12
13
root@29ac875d3921:~# ssh-copy-id -i .ssh/id_rsa.pub root@10.1.74.24
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
The authenticity of host '10.1.74.24 (10.1.74.24)' can't be established.
ECDSA key fingerprint is SHA256:HSul9NKf1pJAugF27JZp+lotF/8wdA3z3imMFPnI/uk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.1.74.24's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'root@10.1.74.24'"
and check to make sure that only the key(s) you wanted were added.
  • 将密钥配置在对应ssh server参数中,被控端在修改密码不受影响

upload successful

jenkins配置多个jdk环境

  • 目前jenkins版本为2.411,官方从2.346以上开始使用Java环境为>jdk1.8,所以此版本的java环境就是openjdk11,但是一般来说项目使用jdk的版本还在1.8,配置不同jdk环境给不同项目使用
  • 上传jdk1.8.0_221.tar.gz到指定目录并解压
  • jenkins全局配置,此处增加一个为jdk8 一个为jdk11别名

upload successful

  • 新建项目查看为可选项

upload successful