傻瓜式安裝Jenkins
大家好,我是阿晶,今天給大家?guī)戆惭b部署Jenkins的腳本,需要自取。
下載Jenkins運(yùn)行包
https://get.jenkins.io/war-stable/2.346.1/jenkins.war ,這里我下載的是 2.346.1 版本。
編寫安裝部署腳本
jenkins.sh
#!/bin/bash
####################################
#?@description?jenkins運(yùn)行腳本,適用于公網(wǎng)環(huán)境
#?@params?$??=>?代表上一個(gè)命令執(zhí)行后的退出狀態(tài):?0->成功,1->失敗
#?????????$1?=>?腳本第一個(gè)參數(shù)-操作類型(init|start|stop|restart)
#?@example?=>?sh?jenkins.sh?start
#?@author?lijing
#?@date?2023/01/19?16:26
####################################
#?在執(zhí)行過程中若遇到使用了未定義的變量或命令返回值為非零,將直接報(bào)錯(cuò)退出
#?set?-eu
#?檢查參數(shù)個(gè)數(shù)
if?[?"${#}"?-lt?1?];?then
?echo?-e?"\033[41;37m腳本使用示例:?sh?jenkins.sh?init(初始化環(huán)境)|start(運(yùn)行)|stop(停止)|restart(重啟)\033[0m"
?exit
fi
#?SOFT_DIR='/home/soft'
#?獲取腳本第一個(gè)參數(shù)
APP_OPT=${1}
#?端口
APP_PORT=10000
#?名稱
APP_NAME=jenkins
#?jar名?|?war名
APP_JAR=${APP_NAME}.war
#?程序根目錄
APP_JAR_HOME=.
#?日志名
APP_LOG_NAME=jenkins
#?日志根目錄
APP_LOG_HOME=.
#?程序運(yùn)行參數(shù)
JAVA_OPTS="--ajp13Port=-1?--httpPort=${APP_PORT}?--prefix=/jenkins"
echo?"本次操作服務(wù)名:[${APP_NAME}]"
echo?"本次操作選擇:[${APP_OPT}]"
#?初始化環(huán)境
function?init()?{
????#?更換yum源
????wget?-O?/etc/yum.repos.d/CentOS-Base.repo?http://mirrors.aliyun.com/repo/Centos-7.repo
????install_git
????install_jdk
????yum?-y?install?wget
????install_maven
????install_nodejs
????#?使配置生效
????source?/etc/profile
}
function?install_git()?{
??echo?"*******************************************************************************"
??echo?"????????????↓↓↓↓↓↓?[檢查環(huán)境:git]?↓↓↓↓↓↓?????????"
??which?git
??#?$?:?指上一次命令執(zhí)行的狀態(tài)?成功:0?失?。?
??if?[?"$?"?-eq?1?];?then
????echo?"安裝git..."
????yum?install?-y?git
??fi
}
function?install_jdk()?{
????echo?"*******************************************************************************"
????echo?"????????????↓↓↓↓↓↓?[檢查環(huán)境:java]?↓↓↓↓↓↓?????????"
????which?java
????if?[?"$?"?-eq?1?];?then
?????echo?"安裝jdk..."
?????yum?-y?install?java-1.8.0-openjdk*
??????#?配置環(huán)境變量?--?注意$前加上\?避免shell中獲取其變量值追加到配置文件中
cat>>?/etc/profile?<<EOF
##############################?↓↓↓↓↓↓?set?java?environment?↓↓↓↓↓↓?#############################
JAVA_HOME=/usr/lib/jvm/java
CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/jre/lib/rt.jar
PATH=\$PATH:\$JAVA_HOME/bin
export?JAVA_HOME?CLASSPATH?PATH
###############################################################################################
EOF
??????#?使配置生效
??????.?/etc/profile
????fi
}
function?install_maven()?{
????echo?"*******************************************************************************"
????echo?"????????????↓↓↓↓↓↓?[檢查環(huán)境:maven]?↓↓↓↓↓↓?????????"
????which?mvn
????if?[?"$?"?-eq?1?];?then
?????echo?"安裝maven..."
?????mkdir?-p?/home/soft/maven/repository
??????cd?/home/soft/maven
??????yum?install?-y?ca-certificates
??????wget?https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
??????#?解壓
??????tar?-zxvf?apache-maven-3.6.3-bin.tar.gz
??????#?修改配置文件
??????isExist=$(cat?/home/soft/maven/apache-maven-3.6.3/conf/settings.xml?|?grep?"<localRepository>/home/soft/maven/repository</localRepository>")
??????if?[[?"$isExist"?==?""?]]
??????then
??????????#?不包含
??????????#?在第55行插入
??????????sed?-i?'55i?<localRepository>/home/soft/maven/repository</localRepository>'?/home/soft/maven/apache-maven-3.6.3/conf/settings.xml
??????????#?在第160行插入
??????????sed?-i?'160i?\
??????????????<!--?國內(nèi)中央倉庫的配置-阿里云中央倉庫?-->?\
??????????????<mirror>?\
??????????????????<id>nexus-aliyun</id>?\
??????????????????<mirrorOf>central</mirrorOf>?\
??????????????????<name>Nexus?aliyun</name>?\
??????????????????<url>http://maven.aliyun.com/nexus/content/groups/public</url>?\
??????????????</mirror>?\
??????????'?/home/soft/maven/apache-maven-3.6.3/conf/settings.xml
??????fi
??????#?配置環(huán)境變量
cat>>?/etc/profile?<<EOF
##############################?↓↓↓↓↓↓?set?maven?environment?↓↓↓↓↓↓?#############################
MAVEN_HOME=/home/soft/maven/apache-maven-3.6.3
PATH=\$PATH:\$JAVA_HOME/bin:\$MAVEN_HOME/bin
export?MAVEN_HOME?PATH
################################################################################################
EOF
??????#?使配置生效
??????source?/etc/profile
????fi
}
function?install_nodejs()?{
????echo?"*******************************************************************************"
????echo?"????????????↓↓↓↓↓↓?[檢查環(huán)境:NodeJS]?↓↓↓↓↓↓?????????"
????which?npm
????if?[?"$?"?-eq?1?];?then
?????echo?"安裝NodeJS..."
?????mkdir?-p?/home/soft
??????cd?/home/soft
?????wget?https://nodejs.org/dist/v16.13.0/node-v16.13.0-linux-x64.tar.xz
??????#?解壓
??????tar?-xvf?node-v16.13.0-linux-x64.tar.xz
??????#?配置環(huán)境變量
cat>>?/etc/profile?<<EOF
##############################?↓↓↓↓↓↓?set?nodejs?environment?↓↓↓↓↓↓?#############################
NODEJS_HOME=/home/soft/node-v16.13.0-linux-x64
PATH=\$PATH:\$NODEJS_HOME/bin
export?NODEJS_HOME?PATH
#################################################################################################
EOF
??????#?使配置生效
??????source?/etc/profile
??????#?將npm軟連接到`/usr/bin`目錄下?=>?解決`sudo:?npm:找不到命令`問題
??????sudo?ln?-s?/home/soft/node-v16.13.0-linux-x64/bin/node?/usr/bin/node
??????sudo?ln?-s?/home/soft/node-v16.13.0-linux-x64/bin/npm?/usr/bin/npm
??????sudo?ln?-s?/home/soft/node-v16.13.0-linux-x64/bin/cnpm?/usr/bin/cnpm
??????sudo?ln?-s?/home/soft/node-v16.13.0-linux-x64/bin/npx?/usr/lib/npx
??????#?設(shè)置淘寶`NPM`鏡像
??????npm?install?-g?cnpm?--registry=https://registry.npm.taobao.org
????fi
}
#?停止
function?stop(){
??echo?"<-------------------------------------->"
??echo?"[${APP_NAME}]?...?stop?..."
??#?查看該jar進(jìn)程
??pid=`ps?-ef?|?grep?${APP_JAR}?|?grep?-v?'grep'?|?awk?'{print?$2}'`
??echo?"[${APP_NAME}]?pid="${pid}
??#?存在則kill,不存在打印一下吧
??if?[?"${pid}"?];?then
????kill?-9?${pid}
??????#?檢查kill是否成功
??????if?[?"$?"?-eq?0?];?then
??????????echo?"[${APP_NAME}]?stop?success"
??????else
??????????echo?"[${APP_NAME}]?stop?fail"
??????fi
??else
????echo?"[${APP_NAME}]?進(jìn)程不存在"
??fi
}
#?運(yùn)行
function?start(){
??echo?"<-------------------------------------->"
??echo?"[${APP_NAME}]?...?start?..."
??cd?${APP_JAR_HOME}
??echo?"當(dāng)前路徑:`pwd`"
??#?賦予可讀可寫可執(zhí)行權(quán)限
??chmod?777?${APP_JAR}
??echo?"啟動命令:?nohup?java?-jar?${APP_JAR}?${JAVA_OPTS}?>>?${APP_LOG_HOME}/${APP_NAME}.log?2>&1?&"
??nohup?java?-jar?${APP_JAR}?${JAVA_OPTS}?>>?${APP_LOG_HOME}/${APP_NAME}.log?2>&1?&
??if?[?"$?"?-eq?0?];?then
????echo?"[${APP_NAME}]?start?success"
??else
????echo?"[${APP_NAME}]?start?fail"
??fi
}
#?重啟
function?restart(){
??echo?"<-------------------------------------->"
??echo?"[${APP_NAME}]?...?restart?..."
?stop
?start
}
#?多分支條件判斷執(zhí)行參數(shù)
case?"${APP_OPT}"?in
?"init")
??init
??;;
?"stop")
??stop
??;;
?"start")
??start
??;;
?"restart")
??restart
??;;
?*)
?echo?-e?"\033[41;37m提示:不支持參數(shù)命令?->?${APP_OPT}?\033[0m"
?;;
esac
運(yùn)行腳本
此腳本適用于公網(wǎng)環(huán)境,將 Jenkins 運(yùn)行包和腳本文件放到同一級目錄下,切換到此目錄
#?初始化環(huán)境,如果你的服務(wù)器上沒有安裝jdk,git,maven,nodejs的話,會自動拉取安裝
./jenkins.sh?init
#?啟動jenkins
./jenkins.sh?start
#?停止jenkins
./jenkins.sh?stop
#?重啟jenkins
./jenkins.sh?restart
評論
圖片
表情
