傻瓜式安装Jenkins

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。

本文提供傻瓜式安装脚本,安装部署Jenkins,省去安装的学习成本。

下载Jenkins运行包

https://get.jenkins.io/war-stable/2.346.1/jenkins.war ,这里我下载的是 2.346.1 版本。

编写安装部署脚本

jenkins.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
#!/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 运行包和脚本文件放到同一级目录下,切换到此目录

1
2
3
4
5
6
7
8
# 初始化环境,如果你的服务器上没有安装jdk,git,maven,nodejs的话,会自动拉取安装
./jenkins.sh init
# 启动jenkins
./jenkins.sh start
# 停止jenkins
./jenkins.sh stop
# 重启jenkins
./jenkins.sh restart

本文标题:傻瓜式安装Jenkins

文章作者:LiJing

发布时间:2023年01月21日 - 09:19:40

最后更新:2023年06月03日 - 09:59:37

原始链接:https://blog-next.xiaojingge.com/posts/3030663948.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------------本文结束 感谢您的阅读-------------------