1. 安装jenkins
官网提供了多种的安装方式,www.jenkins.io/download,这里我们选择war包的方式进行启动。
最新的版本是需要jdk11以上的,所以本文下载了历史的稳定版本,点击Past Releases,进入历史版本查看jdk8支持的版本。
这里下载2.346.1稳定版本,get.jenkins.io/war-stable/…
由于 jenkins是java写的,所以要跑它是需要java环境的,这里就不在描述java环境的安装,自行百度。
2. 启动jenkins
java -jar jenkins.war --httpPort=8080
可以看到日志里会有访问端口、初始化用户、密码
3. 登录jenkins
浏览器输入http://localhost:8080访问jenkins
如果选择 安装推荐插件,它会自动的下载 如下插件,等一会即可
安装完成之后,可以创建第一个管理用户或者继续使用admin,这里我是用test/12345678
至此,jenkins安装完成,可以愉快的使用jenkins的功能了。
4. jenkins的使用
4.1. 修改jenkin的工作目录
由于jenkins的默认工作目录是在c盘的,因此我们需要修改它为自定义的工作目录。找到./jenkins目录下的config.xml
这里可以看见他的工作目录是{ITEM_FULL_NAME},根据环境变量来的,因此,我们需要配置JENKINS_HOME的环境变量
4.2. 配置全局管理工具
4.2.1. 安装所需要的插件
| 插件名称 | 插件作用 |
|---|---|
| Publish Over SSH | 连接ssh服务器 |
| DingTalk | 整合钉钉机器认的插件 |
| NodeJS Plugin | nodejs的插件 |
| Maven Integration | maven风格的构建 |
| Locale plugin | 汉化的插件 |
4.2.2. 配置maven的settings
默认的maven配置是只去apache官网拉取依赖,像有私服maven仓库,或者阿里云仓库,需要自定义maven的仓库,推荐使用自定义配置。
4.2.3. 配置jdk
jdk可以自动下载,如果本机已经有了可以自定义jdk路径,可以增加多个jdk版本的环境
4.2.4. 配置maven
maven可以自动下载,如果本机已经有了可以自定义maven路径,可以增加多个maven版本的环境
4.2.5. 配置服务器
配置需要部署服务器的账号密码
4.2.6. 中文汉化
在Default Language中设定“zh_CN”简体中文,"zh_TW"繁体中文。
注意:“Ignore browser preference and force this language to all users”必须选上。
4.3. 搭建一个简单的项目
4.3.1. 这里以xxx.xxx.xxx.xxx/xxx.git为例子,创建一个maven风格的项目
4.3.2. 编写项目描述,配置构建的丢弃时间,这里设置为最多保存五天,最多保存十条。
4.3.3. 设置项目需要的jdk,这里使用jdk1.8
4.3.4. 添加git的地址、账号密码、分支
4.3.5. 填写准备步骤,执行打包之前的操作命令
4.3.6. 填写打包的pom位置,填写打包的命令
package -Dmaven.test.skip=true
4.3.7. 填写打包完成之后的命令以及配置上传ssh服务器,并配置超时时间
查看远程的日志
4.3.8. 执行任务,进行构建
4.3.9. 执行的shell的脚本,这里使用的sed命令监听文件什么时候退出
appName=demo-0.0.1-SNAPSHOT.jar
appLog=demo-0.0.1-SNAPSHOT.log
javaPath=/soft/java/jdk1.8.0_221/bin/java
usage() {
echo "Usage: sh $0 [start|stop|restart|status]"
}
is_exist() {
pid=$(ps -ef | grep $appName | grep -v grep | grep -v $0 | awk '{print $2}')
if [ -z "$pid" ]; then
return 1
else
return 0
fi
}
start() {
is_exist
if [ $? -eq "0" ]; then
echo "$appName is already running, pid=$pid"
else
nohup ${javaPath} -jar ./${appName} > ${appLog} 2>&1 &
sleep 2
tail -f ${appLog} | sed '/(Started|Stopping)/q'
fi
}
stop() {
is_exist
pidstatus=$?
if [ $pidstatus -eq "0" ]; then
kill $pid
else
echo "There is not the process of ${appName}"
fi
while [ $pidstatus -eq 0 ];do
is_exist
pidstatus=$?
echo "$pid is running, wait for one second"
sleep 1
done
}
restart() {
stop
start
}
status() {
is_exist
if [ $? -eq "0" ]; then
echo "$appName is running, pid=$pid"
else
echo "There is not the process of ${appName}"
fi
}
case $1 in
"start")
start
;;
"stop")
stop
;;
"restart")
restart
;;
"status")
status
;;
*)
usage
;;
esac
exit 0