前言
Jenkins 是一个可扩展的持续集成引擎,主要作用:简化部署流程,降低部署风险,快速回滚,解放开发和运维人员。
CICD是持续集成(Continuous Integration)和持续部署(Continuous Deployment),是指通过自动化的构建、测试和部署,实现软件产品可循环使用的快速交付流程。
Jenkins的工作流程
1.开发者向Gitlab提交代码
2.GitLab使用 WebHook通知Jenkins有代码更新。
3.Jenkins 从节点(指定分支)拉取代码到服务器本地
4.Jenkins对拉取到本地的代码进项打包(mvn clean install),生成本地war或者jar包
5.Jenkins在服务器上对打包后的war或者jar进行部署 java -jar xxxx.war
6.Jenkins将构建报告以邮件方式通知开发者
7.将Jenkins的界面开放给开发或者测试人员,他们只需要点击 build ,选择分支,一键部署即可
centos7中Jenkins的安装
1.安装jdk
jdk-11.0.18_linux-x64_bin.tar.gz方式
创建文件夹
mkdir -p /usr/local/java
上传 jdk-11.0.18_linux-x64_bin.tar.gz 到/home/java,并解压 tar -zxvf jdk-11.0.18_linux-x64_bin.tar.gz
修改配置文件
vi /etc/profile, 添加
export JAVA_HOME=/usr/local/java/jdk-11.0.18
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java -version
如果有java8的环境,移除再重新配置java11的配置
whereis java
rm -rf /usr/bin/java
ln -s /usr/local/java/bin/java /usr/bin/java
2.安装maven
apache-maven-3.6.1-bin.tar.gz
mkdir -p /usr/local/mvn
tar -zxvf apache-maven-3.6.1-bin.tar.gz
vi /etc/profile
export MAVEN_HOME=/usr/local/mvn/apache-maven-3.6.1
export PATH=${PATH}:${MAVEN_HOME}/bin
source /etc/profile
mvn -v
记得修改setting 文件
<localRepository>/usr/local/repo</localRepository>
3.安装git
v2.32.0.tar.gz
mkdir -p /usr/local/git
git 安装省略,详见 https://blog.csdn.net/liutong880818/article/details/127177930
git --version
tar -zxvf git-2.30.2.tar.gz
提前安装可能需要的依赖
yum install curl-devel expat-devel openssl-devel zlib-devel gcc-c++
yum install perl-ExtUtils-MakeMaker automake autoconf libtool make
编译安装 Git
cd git-2.30.2
make configure
./configure --prefix=/usr/local/git
make profix=/usr/local/git
make install
vi /etc/profile
export GIT_HOME=/usr/local/git
export PATH=$PATH:$GIT_HOME/bin
source /etc/profile
git --version
4.安装Jenkins
jenkins.war
nohup java -jar jenkins.war --httpPort=9000 >>log 2>&1 &
ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9
访问; http://192.168.12.171:9000
重启 http://192.168.12.171:9000/restart
报错:AWT is not properly configured on this server. Perhaps you need to run your container with "-Djava.a
解决:yum install fontconfig
重启Jenkins
ok!
5.Jenkins创建任务
5.1Jenkins各种插件安装—插件管理
Git plugin
Git Parameter
Publish Over SSH
Maven Integration
Pipeline Maven Integration Plugin
Role-based Authorization Strategy
5.2 全局工具配置
5.3生成git的公钥和私钥
生成私钥和公钥
config --list
git config --global user.name "xuelin.zhou"
git config --global user.email "zhouxl@sijibao.com"
git config --global user.password 'Zxl123456!'
git config --global --unset user.password
ssh-keygen -t rsa -C "zhouxl@sijibao.com"
查看私钥
cat /root/.ssh/id_rsa
全部复制 ,放在Jenkins的全局凭证那里
查看公钥
cat /root/.ssh/id_rsa.pub
全部复制,放在gitlab上面 gitlab上 我的------setting----SSH Keys
5.4 创建Jenkins任务
构建一个maven项目,如果没有这个选项,则需要安装maven插件,去【插件管理】那里安装
exce command
#!/bin/sh
ps -ef |grep -v grep | grep cu-extension-service | awk '{print $2}' | xargs kill -s 9 >/dev/null 2>&1
cd /home/wyyt/server/cu-extension/cu-extension-service/target
tar -zxvf *-SNAPSHOT.tar.gz
rm -rf *-SNAPSHOT.tar.gz
nohup /usr/local/java/jdk-11.0.18/bin/java -jar boot/cu-extension-service.jar --spring.cloud.nacos.discovery.register-enabled=true --server.servlet.context-path=/ --spring.config.location=config/ >/home/wyyt/cu-extension/log-extension.log 2>&1 &
/home/wyyt/server/cu-extension/pom.xml
clean install -DskipTests=true
修改admin 密码
权限配置
6搭建过程中的坑
6.1 git Authentication failed for 128
升级git版本 删除原有 git ln 重新 简历ln 链接
whereis git
rm -rf /usr/local/bin/git
ln -s /usr/local/git/bin/git /usr/bin/git
6.2 Jenkins启动失败
最新的Jenkins 依赖 jdk11 ,需要安装 jdk11
6.2.1Jenkins插件安装失败
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
6.3搭建过程中常用调试命令
curl -H "Content-Type: application/json" -H "Authorization: 49e0028ab5b44c139494d4d6c6960e9d" -X POST -d '{"belongToDate":"2023-02"}' "https://sc-gateway.test027.com/cu/enterprise/index/todo/purchase/businessInfos"
nohup java -jar boot/cu-extension-service.jar --spring.cloud.nacos.discovery.register-enabled=false --server.servlet.context-path=/ --spring.config.location=config/ >/dev/null 2>&1 &
git ls-remote -h http://git.sijibao.com/cu/cu-extension.git HEAD
启动
nohup java -jar jenkins.war --httpPort=9000 >>log 2>&1 &
关闭
ps -ef |grep -v grep | grep jenkins | awk '{print $2}' | xargs kill -s 9 >/dev/null 2>&1
查看端口号8080正在使用的进程
netstat -alnp | grep 8080
git config --global user.name "xuelin.zhou"
git config --global user.email "zhouxl@sijibao.com"
ssh-keygen -t rsa -C "zhouxl@sijibao.com"
git config --global --unset user.password
git config --global user.password
git config --list
yum install -y isof
yum intall -t net-tools
isof -i:9005
netstat -ntulp | grep 9005
ps -ef|grep java
ps -ef|grep java | grep 进程号
Jenkins的启动脚本
vi start.sh
#!/bin/bash
nohup java -jar jenkins.war --httpPort=9000 >>log 2>&1 &
chmod +x start.sh
./start.sh
vi stop.sh
#!/bin/bash
ps -ef |grep -v grep | grep jenkins | awk '{print $2}' | xargs kill -s 9 >/dev/null 2>&1
./stop.sh
redis安装
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
tar -xvf redis-6.2.6.tar.gz
cd redis-6.2.6
make
make install
vi /redis.conf
daemonize = yes ---开启后台启动
requirepass 123456 ----密码
protected-mode no ------远程连接
bind 192.168.12.124 ---远程连接ip
touch start.sh stop.sh
vi start.sh
/usr/local/redis/redis-6.2.6/src/redis-server /usr/local/redis/redis-6.2.6/redis.conf
vi stop.sh
ps -ef |grep -v grep | grep redis | awk '{print $2}' | xargs kill -s 9 >/dev/null 2>&1
chmod +x start.sh stop.sh
6.4安装包
Jenkins安装包
jenkins.war -----Jenkins 2.391
apache-maven-3.6.1-bin.tar
jdk-11.0.18_linux-x64_bin.tar.gz
v2.32.0.tar.gz ----git
redis-6.2.6.tar.gz
6.5 [INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:06 min
[INFO] Finished at: 2024-01-23T10:44:19+08:00
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving /home/wyyt/cu-extension/.flattened-pom.xml to com.wyyt/cu-extension/2.0.4-SNAPSHOT/cu-extension-2.0.4-SNAPSHOT.pom
/home/wyyt/cu-extension/.flattened-pom.xml is not inside /root/.jenkins/workspace/cu-extension/home/wyyt/cu-extension/; will archive in a separate pass
[JENKINS] Archiving /home/wyyt/cu-extension/cu-extension-api/.flattened-pom.xml to com.wyyt/cu-extension-api/2.0.4-SNAPSHOT/cu-extension-api-2.0.4-SNAPSHOT.pom
[JENKINS] Archiving /home/wyyt/cu-extension/cu-extension-api/target/cu-extension-api-2.0.4-SNAPSHOT.jar to com.wyyt/cu-extension-api/2.0.4-SNAPSHOT/cu-extension-api-2.0.4-SNAPSHOT.jar
[JENKINS] Archiving /home/wyyt/cu-extension/cu-extension-api/target/cu-extension-api-2.0.4-SNAPSHOT-sources.jar to com.wyyt/cu-extension-api/2.0.4-SNAPSHOT/cu-extension-api-2.0.4-SNAPSHOT-sources.jar
[JENKINS] Archiving /home/wyyt/cu-extension/cu-extension-service/.flattened-pom.xml to com.wyyt/cu-extension-service/2.0.4-SNAPSHOT/cu-extension-service-2.0.4-SNAPSHOT.pom
[JENKINS] Archiving /home/wyyt/cu-extension/cu-extension-service/target/cu-extension-service.jar to com.wyyt/cu-extension-service/2.0.4-SNAPSHOT/cu-extension-service-2.0.4-SNAPSHOT.jar
[JENKINS] Archiving /home/wyyt/cu-extension/cu-extension-service/target/cu-extension-service-sources.jar to com.wyyt/cu-extension-service/2.0.4-SNAPSHOT/cu-extension-service-2.0.4-SNAPSHOT-sources.jar
[JENKINS] Archiving /home/wyyt/cu-extension/cu-extension-service/target/cu-extension-service-2.0.4-SNAPSHOT.tar.gz to com.wyyt/cu-extension-service/2.0.4-SNAPSHOT/cu-extension-service-2.0.4-SNAPSHOT-2.0.4-SNAPSHOT.tar.gz
channel stopped
Finished: UNSTABLE
解决办法:
Use password authentication, or use a different key ----选中
6.6 nohup: failed to run command ‘java’: No such file or directory
原因是nohup java命令无法识别 服务器的jdk位置不对
解决方案:把nohup java命令换成全路径 比如nohup /usr/local/java/jdk-11.0.18/bin/java 启动即可
#!/bin/sh
ps -ef |grep -v grep | grep cu-extension-service | awk '{print $2}' | xargs kill -s 9 >/dev/null 2>&1
cd /home/wyyt/cu-extension/cu-extension-service/target
tar -zxvf *-SNAPSHOT.tar.gz
rm -rf *-SNAPSHOT.tar.gz
nohup /usr/local/java/jdk-11.0.18/bin/java -jar boot/cu-extension-service.jar --spring.cloud.nacos.discovery.register-enabled=true --server.servlet.context-path=/ --spring.config.location=config/ >/home/wyyt/cu-extension/log-extension.log 2>&1 &
6.7 start.sh
echo 'stop trade server.....'
ps -ef |grep -v grep | grep cu-extension-service | awk '{print $2}' | xargs kill -s 9 >/dev/null 2>&1
echo 'start trade server....'
nohup /usr/local/java/jdk-11.0.18/bin/java -jar /home/wyyt/cu-extension/cu-extension-service/target/boot/cu-extension-service.jar --spring.cloud.nacos.discovery.register-enabled=true --server.servlet.context-path=/ --spring.config.location=/home/wyyt/cu-extension/cu-extension-service/target/config/ >/home/wyyt/cu-extension/log-extension.log 2>&1 &
6.8 stop.sh
ps -ef |grep -v grep | grep cu-extension-service | awk '{print $2}' | xargs kill -s 9 >/dev/null 2>&1
chmod +x start.sh stop.sh
./start.sh