一、简介:
本文主要记录如何通过docker安装jenkins,并通过jenkins部署项目,最终效果:在jenkins对某个项目点击构建,jenkins就会去gitLab上拉取最新项目的最新代码,然后根据pom.xml文件,把项目打包成jar,并自动把这个最新的jar运行起来,达到一键式构建的目标。
二、操作步骤
1)前提条件,首先需要安装jdk,maven,git。
jdk安装,首先将安装包放入到服务器的/usr/local/src目录中,比例采用jdk-11.0.13_linux-x64_bin.tar版本
cd /usr/local/src
tar -zxvf jdk-11.0.13_linux-x64_bin.tar.gz
vi /etc/profile
#在此文件最后增加如下代码
JAVA_HOME=/usr/local/src/jdk-11.0.13
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
#重新加载配置文件
source /etc/profile
#验证是否配置成功
java -version
maven安装,首先下载maven的tar包,然后将tar包放入到/usr/local/maven目录中,本例采用apache-maven-3.8.5-bin.tar版本,如果maven有本地仓库,注意修改配置文件settings.xml
cd /usr/local
mkdir maven
cd maven
# 将安装包 复制到指定位置 然后解压
tar -zxvf apache-maven-3.8.5-bin.tar
vi /etc/profile
#在profile中添加如下配置:
export M2_HOME=/usr/local/maven/apache-maven-3.8.5
export PATH=${PATH}:$JAVA_HOME/bin:$M2_HOME/bin
#重新加载配置文件
source /etc/profile
#验证是否安装成功
mvn -v
git安装,将git的tar包,放入到服务器的/usr/local/git目录中,本例采用git-2.33.1.tar版本
cd /usr/local
mkdir git
cd git
tar -zxvf git-2.33.1.tar.gz
#安装git 编译环境 过程较慢 耐心等待
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
#进入git解压缩后的目录中
cd git-2.33.1
##执行以及语句编译源码
make prefix=/usr/local/git all
make prefix=/usr/local/git install
#如果执行以上语句报错,make: curl-config: Command not found
yum install curl -y
#如果仍然报错,安装curl-devel
yum -y install curl-devel
#如果仍然报错,cc: command not found
sudo yum -y install gcc gcc-c++ libstdc++-devel
# 如果仍然报错,可以执行以下语句,然后再次执行编译环境语句
yum clean all
yum makecache
vi /etc/profile
#在文件最后 增加如下配置
export PATH=/usr/local/git/bin:$PATH
#增加成功后,刷下配置文件
source /etc/profile
git --version
2)首先拉取docker镜像文件,选择自己需要的版本 注意不能直接使用官网的jenkins:版本,否则无法下载插件,需要使用jenkins/jenkins:版本
docker pull jenkins/jenkins
3)运行镜像 运行前解决小坑,挂载目录权限设置,否则运行报错,查看日志会提示没有权限
chown -R 1000:1000 /var/jenkins_mount/
docker run -d --restart=always -p 12345:8080 -p 12346:50000 -v /var/jenkins_mount:/var/jenkins_home -v /usr/local/maven/apache-maven-3.8.5:/usr/local/maven -v /usr/local/src:/usr/local/src -v /usr/local/git/bin/git:/usr/local/git -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins
4)jenkins配置,容器运行成功后,即可登录ip:12345端口,打开如下图所示界面:
账号为admin 密码为挂载路径下的文件中保存,如下图所示
按图中提示位置,找到密码,登录成功后出现如下图所示界面:
首先配置jdk,maven,git
在jenkins管理,全局配置中,配置jdk,maven,git,如下图所示:
注意上图处直接填写git即可
maven_home注意是容器内部映射地址
jenkins系统配置,包括publish over ssh,远程ssh服务器配置(用来发布jar包的服务器)等
首先配置publish over ssh
进入容器内部
docker exec -it jenkins /bin/bash
然后执行密钥对生成命令
ssh-keygen -t rsa
一直按回车,直到完成,如下图所示,会有生成路径提示
完成后,在Passphrase中输入登录账号的密码,Path to key内输入私钥的文件地址,key中输入私钥的文本内容,如下:
/var/jenkins_home/.ssh/id_rsa
最终效果:
接下来配置 ssh servers,此处为打包jar的服务器,如下图所示,输入完ip和用户名后,需要点击高级,勾选Use password authentication, or use a different key,然后输入远程服务器的登录密码和端口号,点击测试配置,提升success,则可以正常访问此服务器。
以上配置完成后,就可以创建视图,管理工程了,my view ->new item,输入工程名称,选择构建一个maven项目
开始配置项目,首先配置general内容,选择丢弃旧的构建,然后输入保持构建的最大个数为3配置源码管理,选择git,输入项目的git地址,然后输入账号密码,账号密码可以是正常项目成员的账号密码,也可以是公钥私钥等形式,此处选择git项目下的成员账号密码,如下图所示:
构建环境配置
sourcefiles为jenkins构建成功后保存的地址,注意是相对路径,不是绝对路径,否则无法上传到目标服务器,比如我的构建后目录为/var/jenkins_home/workspace/shj-backend/target ,jar包存储在此目录下,则sourcefiles地址填写target/model-service-backend.jar,remove prefix填写target,remote directory根据情况填写,及目标服务器的实际存储jar包的路径,由于之前ssh servers中已经配置全路径,所以此处为空。
exec command,此处为在远程服务器上执行的脚本命令,可以根据实际需要编写,本项目为docker部署,以重启容器为例,docker restart app01.
build配置,高级选项中关闭自动指纹验证功能,否则构建会非常慢