傻瓜式安装Jenkins
CodingJing
共 6909字,需浏览 14分钟
·
2023-05-10 00:44
大家好,我是阿晶,今天给大家带来安装部署Jenkins的脚本,需要自取。
下载Jenkins运行包
https://get.jenkins.io/war-stable/2.346.1/jenkins.war ,这里我下载的是 2.346.1 版本。
编写安装部署脚本
jenkins.sh
#!/bin/bash
####################################
# @description jenkins运行脚本,适用于公网环境
# @params $? => 代表上一个命令执行后的退出状态: 0->成功,1->失败
# $1 => 脚本第一个参数-操作类型(init|start|stop|restart)
# @example => sh jenkins.sh start
# @author lijing
# @date 2023/01/19 16:26
####################################
# 在执行过程中若遇到使用了未定义的变量或命令返回值为非零,将直接报错退出
# set -eu
# 检查参数个数
if [ "${#}" -lt 1 ]; then
echo -e "\033[41;37m脚本使用示例: sh jenkins.sh init(初始化环境)|start(运行)|stop(停止)|restart(重启)\033[0m"
exit
fi
# SOFT_DIR='/home/soft'
# 获取脚本第一个参数
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=.
# 程序运行参数
JAVA_OPTS="--ajp13Port=-1 --httpPort=${APP_PORT} --prefix=/jenkins"
echo "本次操作服务名:[${APP_NAME}]"
echo "本次操作选择:[${APP_OPT}]"
# 初始化环境
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 " ↓↓↓↓↓↓ [检查环境:git] ↓↓↓↓↓↓ "
which git
# $?: 指上一次命令执行的状态 成功:0 失败:1
if [ "$?" -eq 1 ]; then
echo "安装git..."
yum install -y git
fi
}
function install_jdk() {
echo "*******************************************************************************"
echo " ↓↓↓↓↓↓ [检查环境:java] ↓↓↓↓↓↓ "
which java
if [ "$?" -eq 1 ]; then
echo "安装jdk..."
yum -y install java-1.8.0-openjdk*
# 配置环境变量 -- 注意$前加上\ 避免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 " ↓↓↓↓↓↓ [检查环境: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 \
<!-- 国内中央仓库的配置-阿里云中央仓库 --> \
<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
# 配置环境变量
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 " ↓↓↓↓↓↓ [检查环境: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
# 配置环境变量
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
# 设置淘宝`NPM`镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org
fi
}
# 停止
function stop(){
echo "<-------------------------------------->"
echo "[${APP_NAME}] ... stop ..."
# 查看该jar进程
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}] 进程不存在"
fi
}
# 运行
function start(){
echo "<-------------------------------------->"
echo "[${APP_NAME}] ... start ..."
cd ${APP_JAR_HOME}
echo "当前路径:`pwd`"
# 赋予可读可写可执行权限
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
}
# 多分支条件判断执行参数
case "${APP_OPT}" in
"init")
init
;;
"stop")
stop
;;
"start")
start
;;
"restart")
restart
;;
*)
echo -e "\033[41;37m提示:不支持参数命令 -> ${APP_OPT} \033[0m"
;;
esac
运行脚本
此脚本适用于公网环境,将 Jenkins 运行包和脚本文件放到同一级目录下,切换到此目录
# 初始化环境,如果你的服务器上没有安装jdk,git,maven,nodejs的话,会自动拉取安装
./jenkins.sh init
# 启动jenkins
./jenkins.sh start
# 停止jenkins
./jenkins.sh stop
# 重启jenkins
./jenkins.sh restart
评论