柚子快報激活碼778899分享:運維 jenkins搭建與部署
柚子快報激活碼778899分享:運維 jenkins搭建與部署
參考博客:https://blog.csdn.net/m0_58943936/article/details/135368557 Jenkins官網:https://jenkins.io/ 或 https://www.jenkins.io/zh/download/ Jenkins官網文檔:https://www.jenkins.io/zh/doc/ jenkins安裝包:http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/ jenkins插件庫: https://plugins.jenkins.io/ 清華鏡像:http://updates.jenkins-ci.org/download/war/ jdk下載地址:https://www.oracle.com/java/technologies/downloads/#java8 maven下載地址:https://maven.apache.org/download.cgi
一、環(huán)境準備
1、jdk安裝(安裝jdk8和jdk11,如果需要部署的項目都是jdk11寫的可不安裝jdk8)
1.1、安裝配置jdk
# 查詢系統(tǒng)是否已安裝jdk并卸載
rpm -qa|grep java
# 如果查詢沒有已安裝則進行下一步操作, 如果有已安裝Jdk則卸載已安裝的jdk
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64
# 驗證是否已經卸載
rpm -qa|grep java
# 再次查看Java版本,沒有任何信息就表示刪除成功了
java -version
javac -version
1.2 安裝jdk
# 創(chuàng)建jdk存放文件夾 將jdk文件上傳到該文件夾
mkdir /usr/local/Jdk
# 解壓 修改解壓后的文件夾名為java8和java11
tar -zxvf /usr/local/Jdk/jdk-8u411-linux-x64.tar.gz
tar -zxvf /usr/local/Jdk/jdk-11.0.23_linux-x64_bin.tar.gz
# 配置JDK環(huán)境變量,編輯 /etc/profile 文件
vi /etc/profile
# 先將光標(可以使用快捷鍵Shift+g)移到最后一行,然后輸入 i 進入編輯狀態(tài),粘貼如下內容,輸入Esc 進入命令模式 輸入:wq 保存修改信息
export JAVA_HOME=/usr/local/Jdk/java8
export PATH=$JAVA_HOME/bin:$PATH
# 配置文件生效
source /etc/profile
# 測試 JDK 安裝
java -version
javac -version
2、maven安裝
2.1、安裝maven
# 將maven文件上傳到/usr/local
# 解壓 修改文件夾名為maven
tar -zxvf /usr/software/apache-maven-3.9.6-bin.tar.gz
# 配置Maven環(huán)境變量
vi /etc/profile
# 先將光標(可以使用快捷鍵Shift+g)移到最后一行,然后輸入 i 進入編輯狀態(tài),在JAVA_HOME后面粘貼如下內容
export MAVEN_HOME=/home/soft/maven/apache-maven-3.9.6
# 修改PATH為
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
# 配置文件生效
source /etc/profile
# 測試maven安裝
mvn -version
2.2、配置本地倉庫
# 在maven文件夾中創(chuàng)建maven-repository用于當本地倉庫
mkdir -p /usr/local/maven/maven-repository
# 切換目錄
cd /usr/local/maven/maven-repository/conf
# 編輯settings.xml配置文件
vim settings.xml
# 在其中增加如下配置,配置本地倉庫地址:
# 配置阿里云的私服(選做),提高依賴下載速度
3、git安裝
# 服務器安裝git
yum -y install git
# 查看git路徑
which git
二、jenkins安裝
1、官網下載(下載最新版即可)
2、上傳服務器
# 進入war包存放位置,啟動jenkins
nohup /usr/local/Jdk/java11/bin/java -jar -server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m jenkins.war --httpPort=16060 &
# 開放端口
firewall_cmd --permanent --zone=public --add-port=16060/tcp
# 更新防火墻規(guī)則
firewall-cmd --reload
# 查看端口開啟信息
firewall-cmd --list-ports
3、瀏覽器打開http://你的服務器ip:16060/
# 查看初始化密碼(復制后填寫到頁面的管理員密碼中)
cat /root/.jenkins/secrets/initialAdminPassword
4、安裝推薦的插件
5、輸入用戶名密碼郵箱
6、配置訪問地址(默認即可,也可按需更改)
7、點擊開始使用jenkins 就可以使用jenkins了
三、jenkins配置
1、所需插件
Git Parameter git參數Localization: Chinese (Simplified) 簡體中文包SSH server ssh服務器Build With Parameters 輸入框式的參數(可選)Persistent Parameter 下拉框式的參數(可選)SSH ssh配置Publish Over SSH 通過SSH發(fā)送構建好的jar包或war包Role-based Authorization Strategy (可選用戶權限)
2、配置國內清華鏡像源
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
3、插件安裝方法
4、配置maven
位置:系統(tǒng)管理-全局工具配置-maven配置 MAVEN_HOME替換為服務器maven所在路徑
5、配置jdk (JAVA_HOME替換為服務器jdk所在路徑)
6、配置git
7、配置憑據(git賬號)
入口點擊System進入全局憑據進入System后,(如果沒有,自行創(chuàng)建一個)進入后點擊添加添加憑據 綁定gitee Api 令牌(令牌按獲取地址從自己的gitee上生成)
8、Jenkins 端配置Gitee API Token, 證書令牌選擇上一步配置的API令牌,測試鏈接成功則配置完成
9、配置Publish over SSH(用于不同服務器間發(fā)送文件)
查看公鑰/私鑰,.ssh 文件夾是用于存儲用戶的 SSH 配置和身份驗證信息的目錄進入/root/.ssh目錄,看看里面有沒有公鑰和私鑰,如沒有
# 創(chuàng)建ssh key
ssh-keygen -t rsa
# 一路回車
# 查看/root/.ssh/文件夾目錄
cd /root/.ssh/
# 查看ssh key 私鑰/公鑰
cat /root/.ssh/id_rsa
cat /root/.ssh/id_rsa_pub
添加映射關系,我使用的是本機映射,也可以添加其他服務器的映射
vim /etc/hosts
# 添加映射
ip 映射名
將另一個服務器的公鑰復制到/root/.ssh/authorized_keys文件中
vim /root/.ssh/authorized_keys
# 測試鏈接 首次需要輸入密碼,然后在/root/.ssh下生成known_hosts文件,后面測試鏈接不需要輸入密碼就成功鏈接則成功
ssh root@local-server
10、配置SSH Server
四、項目構建
1、在項目根目錄下創(chuàng)建test.Jenkinsfile 文件
jenkins管道文件
pipeline {
agent any
// 參數
environment {
jarDirect='/home/test'
jarName='test.jar'
projectName='test'
}
stages {
// 構建
stage('Build') {
steps {
// 運行maven打包指令
sh "mvn -Dmaven.test.failure.ignore=true clean package"
// To run Maven on a Windows agent, use
// bat "mvn -Dmaven.test.failure.ignore=true clean package"
}
}
// 推送jar包
stage('Jar Move') {
steps {
// 運行程序關閉腳本
sh '/home/test/run.sh stop'
// 刪除指定服務器指定目錄下程序
sh 'ssh local-server rm -rf ${jarDirect}/${jarName}'
// 推送程序到指定服務器指定目錄下
sh 'scp -r ${WORKSPACE}/test/target/${jarName} local-server:${jarDirect}/${jarName}'
}
}
// 啟動程序
stage('Deploy') {
steps {
// 啟動指定服務器下的程序
sh 'ssh local-server "cd ${jarDirect} && sh run.sh start"'
}
}
stage('Test') {
steps {
echo 'Testing'
}
}
}
// 推送消息
post {
success {
echo '部署成功'
}
failure {
echo '部署失敗'
}
}
}
程序啟動文件 run.sh
#!/bin/sh
# ./run.sh start 啟動 stop 停止 restart 重啟 status 狀態(tài)
AppName=test.jar
JavaHome=/usr/local/jdk1.8.0_411/bin
# JVM參數
JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
APP_HOME=`pwd`
LOG_PATH=$APP_HOME/logs/$AppName.log
if [ "$1" = "" ];
then
echo -e "\033[0;31m 未輸入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m"
exit 1
fi
if [ "$AppName" = "" ];
then
echo -e "\033[0;31m 未輸入應用名 \033[0m"
exit 1
fi
function start()
{
PID=`ps -ef |grep $JavaHome/java|grep $AppName|grep -v grep|awk '{print $2}'`
if [ x"$PID" != x"" ]; then
echo "$AppName is running..."
else
nohup $JavaHome/java $JVM_OPTS -jar $AppName > logging.log 2>&1 &
echo "Start $AppName success..."
fi
}
function stop()
{
echo "Stop $AppName"
PID=""
query(){
PID=`ps -ef |grep $JavaHome/java|grep $AppName|grep -v grep|awk '{print $2}'`
}
query
if [ x"$PID" != x"" ]; then
kill -TERM $PID
echo "$AppName (pid:$PID) exiting..."
while [ x"$PID" != x"" ]
do
sleep 1
query
done
echo "$AppName exited."
else
echo "$AppName already stopped."
fi
}
function restart()
{
stop
sleep 2
start
}
function status()
{
PID=`ps -ef |grep $JavaHome/java|grep $AppName|grep -v grep|wc -l`
if [ $PID != 0 ];then
echo "$AppName is running..."
else
echo "$AppName is not running..."
fi
}
case $1 in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
status;;
*)
esac
2、新建任務
3、配置
切換分支 配置流水線
4、開始構建
五、配置jenkins開機自啟
1、jenkins啟動腳本
#gedit /etc/init.d/myservice
#!/bin/bash
# chkconfig: 2345 10 90
# description: jenkins ....
JENKINS_HOME="/usr/local/jenkins"
JENKINS_WAR="/usr/local/jenkins/jenkins.war"
JENKINS_PORT=16060
JAVA_HOME="/java/jdk-11.0.5/bin"
AppName="jenkins.war"
# JVM參數
JVM_OPTS="-server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m"
APP_HOME=`pwd`
LOG_PATH=$JENKINS_HOME/jenkins.log
if [ "$1" = "" ];
then
echo -e "\033[0;31m 未輸入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m"
exit 1
fi
if [ "$AppName" = "" ];
then
echo -e "\033[0;31m 未輸入應用名 \033[0m"
exit 1
fi
function start()
{
PID=`ps -ef |grep $JAVA_HOME/java|grep $AppName|grep -v grep|awk '{print $2}'`
if [ x"$PID" != x"" ]; then
echo "$AppName is running..."
else
nohup $JAVA_HOME/java $JVM_OPTS -jar $JENKINS_WAR --httpPort=$JENKINS_PORT > $LOG_PATH 2>&1 &
echo "Start $AppName success..."
fi
}
function stop()
{
echo "Stop $AppName"
PID=""
query(){
PID=`ps -ef |grep $JAVA_HOME/java|grep $AppName|grep -v grep|awk '{print $2}'`
}
query
if [ x"$PID" != x"" ]; then
kill -TERM $PID
echo "$AppName (pid:$PID) exiting..."
while [ x"$PID" != x"" ]
do
sleep 1
query
done
echo "$AppName exited."
else
echo "$AppName already stopped."
fi
}
function restart()
{
stop
sleep 2
start
}
function status()
{
PID=`ps -ef |grep $JAVA_HOME/java|grep $AppName|grep -v grep|wc -l`
if [ $PID != 0 ];then
echo "$AppName is running..."
else
echo "$AppName is not running..."
fi
}
case $1 in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
status;;
*)
esac
2、有三種方式
systemd 設置開機自啟
# 創(chuàng)建systemd文件,輸入以下配置
vim /etc/systemd/system/jenkins.service
# 更新配置后需要刷新
systemctl daemon-reload
# 查看打印詳細日志
journalctl -u jenkins.service -xe
[Unit]
Description=Nexus Service
After=network.target
[Service]
User=root
Type=forking
TimeoutStopSec=20
Restart=always
RestartSec=5s
ExecStart=/usr/local/jenkins/jenkins_start.sh start
ExecStop=/usr/local/jenkins/jenkins_start.sh stop
[Install]
WantedBy=multi-user.target
刷新配置后設置開機自啟
# 開機自啟
systemctl enable jenkins.service
# 關閉開機自啟
systemctl disable jenkins.service
# 查看開機自啟的服務
systemctl list-unit-files --type=service --state=enabled | grep enabled
# 啟動服務
systemctl start jenkins.service
# 關閉服務
systemctl stop jenkins.service
# 查看狀態(tài)
systemctl status jenkins.service
定時任務設置開機自啟
# 打開定時任務編輯
crontab -e
# 添加啟動腳本
@reboot /usr/local/jenkins/jenkins_start.sh start
# 重啟系統(tǒng)就會發(fā)現jenkins已經可以開機自啟了
使用chkconfig自啟動
# 查看自啟動服務
chkconfig --list
# 創(chuàng)建啟動腳本,啟動腳本使用上面提供的
vim /etc/init.d/jenkins_start.sh
# 對腳本進行賦權
chmod +x /etc/init.d/jenkins_start.sh
# 將腳本添加進清單
chkconfig --add jenkins_start.sh
# 添加完畢后查看清單
chkconfig --list
# 至此,完成了Jenkins隨操作系統(tǒng)啟動自啟服務的操作,
# 也可以使用service jenkins_start.sh start/stop/restart命令來重啟服務。
# 我完成后重啟系統(tǒng)后未能自啟動,但可以使用指令來啟動服務
柚子快報激活碼778899分享:運維 jenkins搭建與部署
好文閱讀
本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯系刪除。