Jenkins教程
# 1 环境信息
JDK1.8
maven 3.5.4
jenkins laster
1
2
3
2
3
# 2 maven配置仓库
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 3 docker方式安装jekins
# 3.1 docker拉取jekins
docker pull jenkins/jenkins:lts
1
# 3.2 创建挂载目录 并开放读写权限
mkdir -p /opt/work/jenkins
chmod 777 /opt/work/jenkins
chown -R 1000 /opt/work/jenkins
1
2
3
2
3
# 3.3 启动
docker run -d --name jenkins -p 9000:8080 -p 50000:50000 --restart=always -v /opt/work/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /opt/work/apache-maven-3.5.4:/usr/local/maven jenkins/jenkins:lts
1
# 3.4 进入控制台
http://ip:9000
等待界面初始化进入解锁界面
1
2
2
# 3.5 查看初始化密码
docker exec -it jenkins bash
cat /var/jenkins_home/secrets/initialAdminPassword
1
2
2
# 3.6 选择安装插件的方式
如果知道要安装哪些插件,就选择安装推荐的插件。
# 3.7 等待安装完成,后续步骤按照界面提示即可
# 4 安装插件
主要安装以下几个插件,在右上角进行搜索
Publish Over SSH -- 服务器操作插件 配置服务器信息 -- 暂未用到该方式
SSH2 Easy ----- 服务器操作插件 配置服务器信息
Maven Integration ----- maven插件 发布JAR包用
Git Parameter ----- git插件 拉取代码用
NodeJS Plugin ----- nodejs插件 发布VUE用
安装完后重启勾选右下角重启服务
1
2
3
4
5
6
7
2
3
4
5
6
7
# 5 配置jenkins
进入配置界面
# 5.1 全局环境配置
进入容器
docker exec -it jenkins bash
查看java home
echo $JAVA_HOME 获取java路径
界面点击新增jdk 取消自动安装
/opt/java/openjdk
1
2
3
4
5
6
2
3
4
5
6
# 5.2 配置maven
取消自动安装
在第3.3步骤中启动时配置了maven路径usr/local/maven 复制路径填入下面框格
1
2
2
# 5.3 配置nodejs
这个需要特别注意,需要根据目前开发的VUE版本安装对应的支持版本,否则可能导致构建失败。我第一次安装了nodejs14的版本就由于版本过高导致构建失败,后来重新安装了nodejs 12.16.2才正常构建成功。
1
# 6 系统配置
点击系统设置-系统设置
# 6.1 Server Groups Center 配置服务器信息
配置完成之后,需要先保存退出配置界面,再进入才可以配置Server List,否则可能找不到Server Group
1
# 6.2 配置Server Group List
# 7构建java项目
点击左侧菜单新建任务,然后选择构建一个MAVEN项目
1
# 7.1 构建策略
构建的版本保留几个作为回滚就够了,不需要一直保留着,以免占用服务器硬盘资源。
点击General勾选丢弃旧的构建,根据实际使用情况备份以下2个信息
保持构建的天数
保持构建的最大个数
还可以勾选参数化构建过程,对一些信息参数化。(这一步我暂时未做)
1
2
3
4
5
2
3
4
5
# 7.2 git配置
点击源码管理配置git信息,输入URL 添加认证 选择要构建的分支
如果做了参数化构建,这里就可以配置参数。
1
2
2
# 7.3 取消构建触发器
在构建触发器 取消勾选 “Build whenever a SNAPSHOT dependency is built”
1
# 7.4 配置maven构建命令
如果是单模块项目,则使用以下命令即可
clean install xxx -Dmaven.test.skip=true
如果是多模块项目,则需要确认构建的执行项目
clean install -pl xxx -am -amd -Dmaven.test.skip=true
-pl 标识指定构建某个模块
-am 是向下的。表示同时处理选定模块所依赖的模块。
-amd 是向上的。表示同时处理依赖选定模块的模块。
使用-am、-amd等时候,必须配合-pl指定模块使用
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 7.5 配置FTP上传
我没有使用SSH上传方式(懒的弄证书😂)
配置FTP方式上传包
Run only if build succeed 标识构建成功后才执行
target server对应的是jenkins容器里面的绝对路径
/var/jenkins_home/workspace/项目路径/target/jar包名.jar
remoteLocation 表示要上传到远程服务器的哪个位置
fileName 表示上传之后文件的名称
1
2
3
4
5
6
7
2
3
4
5
6
7
# 7.6 执行远程脚本或者命令发起部署
# docker构建部署命令例子
export BUILD_ID=dontKillMe
innerport=8086 #docker容器内部端口
outport=8081 #docker容器外部端口
dockername=api #容器名称
web=api-0.0.1-SNAPSHOT #jar包名
webdir=/opt/work/api #docker构建路径
backup=/opt/work/backup #备份路径
bulid=/opt/work/bulid #jenkins 上传的路径
date=$(date +%Y%m%d%H%M) #备份的文件后缀
echo "####### 备份jar包 ##########"
cp $webdir/$web.jar $backup/$web-$date.jar #备份历史版本
rm -rf $webdir/$web.jar #删除历史版本
mv $bulid/$web.jar $webdir/$web.jar #拷贝最新版本到 构建路径
echo "####### 删除当前容器 ##########"
docker stop $dockername
sleep 10
docker rm $dockername
sleep 3
docker rmi $dockername
sleep 3
echo "####### 制作最新的当前镜像 ##########"
cd $webdir #进入构建路径
docker build -t $dockername .
echo "####### 启动当前最新的容器 ##########"
docker run -d --name $dockername -p $outport:$innerport $dockername
sleep 5
pid=`ps aux|grep $dockername|grep -v grep |grep -v "/bin/sh"| awk '{print $2}'`
if [ -z "${pid}" ]; then
echo "################################项目启动失败################################"
cat dsadsadas #使jenkins发布失败,导致构建项目不稳定
else
echo "################################项目启动成功#########################################"
fi
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
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
# 8 构建VUE项目
大部分的操作和构建Java项目一致,略微有点小区别。
第一步选择构建一个自由风格的软件项目
第一次构建要安装nodejs,时间会久点
1
2
3
2
3
1-3步与第7点一致
1
# 8.1 构建环境选择nodejs
1.要选择安装nodejs插件,在第4点已安装
2.点击构建环境,勾选Provide Node & npm bin/ folder to PATH
1
2
2
# 8.2 新增执行shell命令
cnpm install
cnpm run build
cd /var/jenkins_home/workspace/xxx
tar -cvf dist.tar dist/
1
2
3
4
2
3
4
# 8.3 FTP上传
# 8. 4 执行远程shell命令
export BUILD_ID=dontKillMe
innerport=8080
outport=8080
dockername=vue
web=dist
webdir=/opt/work/vue
backup=/opt/work/backup
bulid=/opt/work/bulid
date=$(date +%Y%m%d%H%M)
echo "####### 备份jar包 ##########"
cd $webdir
tar -cvf $web.tar $web
cp $webdir/$web.tar $backup/$web-$date.tar
rm -rf $webdir/$web.tar
mv $bulid/$web.tar $webdir/$web.tar
tar -xvf $web.tar
rm -rf $web.tar
echo "####### 删除当前容器 ##########"
docker stop $dockername
sleep 10
docker rm $dockername
sleep 3
docker rmi $dockername
sleep 3
echo "####### 制作最新的当前镜像 ##########"
docker build -t $dockername .
echo "####### 启动当前最新的容器 ##########"
docker run -d --name $dockername -p $outport:$innerport $dockername
sleep 5
pid=`ps aux|grep $dockername|grep -v grep |grep -v "/bin/sh"| awk '{print $2}'`
if [ -z "${pid}" ]; then
echo "################################项目启动失败################################"
cat dsadsadas #使jenkins发布失败,导致构建项目不稳定
else
echo "################################项目启动成功#########################################"
fi
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
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
# 8.5 上传成功之后,删除包
cd /var/jenkins_home/workspace/xxx
rm -rf dist.tar
1
2
2
# 9 问题
目前碰到的大部分问题都是权限不足的问题
仓库的权限不足
chmod 777 -R /jenkins主目录/.m2/repository
1
bulid 目录权限不足
chmod 777 -R xxx
1
脚本执行异常 sh脚本要通过touch创建,如果从window放上去有字符的问题
上次更新: 2022/06/02, 11:20:10