一.准备工作
1.启动虚拟机linux
使用虚拟机启动两个linux系统重点(关闭防火墙,使端口可以访问,线上可以开启指定端口,本地学习不用那么麻烦)
规划:
jenkins:192.168.244.132
2.都安装好java环境(略)
检查java是否安装完成
java -version
3.下载好jenkins文件
下载地址http://mirrors.jenkins-ci.org/war/2.281/jenkins.war,可以使用迅雷下载速度快一些
4.配置组和用户,授权目录上传文件
jenkins服务器:
使用root用户创建一个组叫cicd,创建一个用户叫就叫jenkins并且指定到cicd组
[root@localhost ~]# groupadd cicd
[root@localhost ~]# useradd jenkins -g cicd
创建一个jenkins的目录,就放到/data/software/jenkins
[root@localhost ~]# mkdir -p /data/software/jenkins
将这个目录指定给jenkins和cicd组
[root@localhost ~]# chown -R jenkins:cicd /data/software/jenkins
给jenkins指定一个密码:1q23lsc45+ [古诗:一去二三里,山村四五家]
[root@localhost ~]# passwd jenkins
更改用户 jenkins 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
切换成jenkins用户
[root@localhost ~]# su jenkins
进入工作目录
[jenkins@localhost root]$ cd /data/software/jenkins/
使用rz命令上传下载的jenkins.war
上传完毕使用ll命令查看文件
[jenkins@localhost jenkins]$ ll
总用量 71672
-rw-r--r--. 1 jenkins cicd 73388412 2月 28 16:56 jenkins.war
5.启动jenkins服务
启动命令
[jenkins@localhost jenkins]$ nohup java -jar /data/software/jenkins/jenkins.war --httpPort=8777 --httpsPort=8778 > /data/software/jenkins/jenkins.log 2>&1 &
查看日志是否启动成功
[jenkins@localhost jenkins]$ tail -f -n 200 jenkins.log
有一串数字,记录下来,这个是密码
e672197178284eceab4ed5a425b51f67
你的和我的不一样,到时候使用自己的
6.修改镜像
由于外网下载慢,所以修改国内镜像下载
[jenkins@localhost jenkins]$ cd /home/jenkins/.jenkins/updates
把default.json中updates.jenkins-ci.org/download替换为mirrors.tuna.tsinghua.edu.cn/jenkins
www.google.com替换为www.baidu.com
[jenkins@localhost updates]$ sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
回到上一级目录
[jenkins@localhost .jenkins]$ cd /home/jenkins/.jenkins
修改hudson.model.UpdateCenter.xml文件的站点为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
[jenkins@localhost .jenkins]$ vim hudson.model.UpdateCenter.xml
7.重启项目
[jenkins@localhost .jenkins]$ cd /data/software/jenkins/
使用jps命令查看进程,kill掉再启动
[jenkins@localhost jenkins]$ kill -9 17148
再次启动
[jenkins@localhost jenkins]$ nohup java -jar /data/software/jenkins/jenkins.war --httpPort=8777 --httpsPort=8778 > /data/software/jenkins/jenkins.log 2>&1 &
8.基础jenkins
浏览器访问:http://192.168.244.132:8777
填入上面记录的那个密码
选择推荐安装
等待安装即可
创建用户
保存配置
登录
9.配置jenkins
1.配置java
保存时候GIT那块可能出错,先删除那个
2集成git
为了能拉取代码,现在使用root用户在服务器安装git
[root@localhost jdk1.8.0_201]# yum install git -y
使用
[jenkins@localhost jenkins]$ git version查看版本
3.创建凭证
为了能从git服务器拉取代码,肯定需要凭证,这里用用户名密码为例
4.测试
创建一个任务
找到git代码地址
配置地址和凭证
立即构建
查看日志输出
[jenkins@localhost jenkins]$ cd /home/jenkins/.jenkins/workspace/get_code_test
可以看到代码已经拉取过来了,胜利在望
10.安装maven
等待系统重启
服务器安装maven软件
使用root安装maven
su root
切换目录
[root@localhost local]# cd /usr/local/
创建目录
[root@localhost local]# mkdir maven
在amven目录下下载maven软件
[root@localhost maven]# wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
解压文件
[root@localhost maven]# tar -zxvf apache-maven-3.6.3-bin.tar.gz
进入目录
[root@localhost maven]# cd apache-maven-3.6.3
使用pwd获取路径
[root@localhost apache-maven-3.6.3]# pwd
记录路径
/usr/local/maven/apache-maven-3.6.3
修改/etc/profile
[root@localhost apache-maven-3.6.3]# vim /etc/profile
刷新配置
[root@localhost apache-maven-3.6.3]# source /etc/profile
查看maven
[root@localhost apache-maven-3.6.3]# mvn -version
配置maven
是要root用户创建maven仓库 [root@localhost apache-maven-3.6.3]# cd /data/software [root@localhost software]# mkdir repository [root@localhost software]# cd repository/ [root@localhost repository]# pwd /data/software/repository 配置maven的setting.xml文件 [root@localhost repository]# cd /usr/local/maven/apache-maven-3.6.3/conf/ [root@localhost conf]# vim settings.xml <!--本地仓库--> <localRepository>/data/software/repository</localRepository> <mirrors> <!--阿里云镜像--> <mirror> <id>aliyun-maven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven mirror</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> </mirrors>
11.构建maven项目
编辑配置
clean package -U -Dmaven.test.skip=true
保存并构建
构建报错,分析原因是repository目录是root创建的 ,jenkins用户没有权限访问,给他赋权
chown -R jenkins /data/software/repository
再次构建可以看到在下载依赖了
第一次构建要下载的依赖有点多,所以时间较长
看到这个说明构建成功
我们去linux 看看是否生成jar了
[root@localhost target]# cd /home/jenkins/.jenkins/workspace/my_first_maven_project/target
可以看到jar生成了
12.配置免密码拷贝
使用jenkins用户生成秘钥 [jenkins@localhost ~]$ ssh-keygen -t rsa 三次回车 [jenkins@localhost ~]$ cd .ssh/ [jenkins@localhost .ssh]$ ll 总用量 8 -rw-------. 1 jenkins cicd 1679 2月 28 20:08 id_rsa -rw-r--r--. 1 jenkins cicd 411 2月 28 20:08 id_rsa.pub 接下来需要将公钥导入到认证文件中 [jenkins@localhost .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 修改权限 [jenkins@localhost .ssh]$ chmod 700 ~/.ssh [jenkins@localhost .ssh]$ chmod 600 ~/.ssh/authorized_keys
切换为另一台服务器,配置用户和组以及秘钥
[root@localhost ~]# groupadd java [root@localhost ~]# useradd java -g java [root@localhost ~]# mkdir -p /data/software/java [root@localhost ~]# chown -R java:java /data/software/java [root@localhost ~]# passwd java 更改用户 java 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 切换用户 [java@localhost root]$ ssh-keygen -t rsa [java@localhost ~]$ chmod 700 ~/.ssh
使用jenkins服务器拷贝授权文件
[jenkins@localhost .ssh]$ scp -p ~/.ssh/id_rsa.pub java@192.168.244.133:/home/java/.ssh/authorized_keys The authenticity of host '192.168.244.133 (192.168.244.133)' can't be established. ECDSA key fingerprint is SHA256:ZE3LIJ/6YStL3NcK4pAkS1HfuOlhI5WD0Zh1PzSXo1Q. ECDSA key fingerprint is MD5:a9:79:0d:3a:e5:a7:9c:16:07:4f:b9:8a:d7:06:05:f0. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.244.133' (ECDSA) to the list of known hosts. java@192.168.244.133's password: id_rsa.pub
java 服务器修改文件权限
[java@localhost .ssh]$ chmod 600 ~/.ssh/authorized_keys
jenkins服务器测试拷贝文件
在用户目录创建文件 [jenkins@localhost ~]$ vim aaa.txt [jenkins@localhost ~]$ scp aaa.txt java@192.168.244.133:/home/java/aaa.txt aaa.txt 在java服务器查看文件 [java@localhost .ssh]$ cd [java@localhost ~]$ ll 总用量 4 -rw-r--r--. 1 java java 5 2月 28 20:35 aaa.txt [java@localhost ~]$ cat aaa.txt aaaa 拷贝完成,我们就可以用来拷贝jar了
13.拷贝jar
我们在java服务端定一个目录放jar
[java@localhost app]$ mkdir -p /data/software/java/app/
配置打包后的操作
#!/bin/bash echo "my_first_maven_project" DIR="/data/software/java/app" projectName="cicd-demo" echo "待部署的应用服务器,可多台" server_ips="192.168.244.133" for server_ip in ${server_ips[@]} do echo "ssh连接进行备份操作" ssh -Tq -oStrictHostKeyChecking=no java@${server_ip} <<EOF mkdir -p $DIR/backup/${projectName} if [ -f "$DIR/${projectName}/${projectName}.jar" ];then mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar fi EOF echo "拷贝jar包到目标服务器的tmp目录" scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar java@${server_ip}:/tmp/${projectName}.jar echo "ssh远程连接进行发布操作" ssh -q -oStrictHostKeyChecking=no java@${server_ip} <<EOF mkdir -p $DIR/${projectName} mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar cd ${DIR} sh stop.sh ${projectName} sh start.sh $DIR ${projectName} EOF done echo "success"
创建两个sh
start.sh
#!/bin/bash set -e #任何命令出错就退出 set -o pipefail APP_DIR=$1 PROJECT_NAME=$2 nohup java -jar ${APP_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.jar > ${PROJECT_NAME}.log & start_ok=false if [[ $? = 0 ]];then sleep 3 tail -n 10 ${PROJECT_NAME}.log sleep 5 tail -n 50 ${PROJECT_NAME}.log fi aaa=`grep "Started" ${PROJECT_NAME}.log | awk '{print $1}'` if [[ -n "${aaa}" ]];then echo "app started ok" exit 0 else echo "app started error" exit 1 fi
stop.sh
#!/bin/bash PROJECT_NAME=$1 ps aux | grep ${PROJECT_NAME} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
14.构建项目
构建成功:
查看程序
浏览器访问:http://192.168.244.133:8080/date
程序已经启动
我们修改代码
再次构建程序
再次刷新请求
已经刷新成功
完结撒花
参考: