安装 Jenkins
可以直接下载Jenkins包放入服务器解压.
我是使用docker pull的Jenkins镜像.
遇到问题:
直接解压使用Jenkins.war问题:
直接下载Jenkins版本不能过低,否则稍后在Jenkins安装插件可能会安装失败
Docker中直接拉取Jenkins问题:
因为Jenkins构建项目需要配置Git,Java,Maven等环境,因为Docker容器都是类似于沙箱隔离的,所以服务器上的一些Java,Mavne环境会读取不到,可以在启用Jenkins容器时将所需环境挂载在Jenkins容器中.
安装插件
在启用Jenkins后,初次访问会有推荐安装的插件.
也可以自定义安装
以下是我安装的插件,有些插件可能会因为版本问题安装失败,需根据提示进行相应的版本升级
Jenkins新建任务
我这里选择的是Maven,较常用的还有流水线和自由风格
项目配置
1.配置Git地址,我直接配置的https,也可以配置ssh
2.源码管理也是填入git地址
3. 构建配置
我选择的是项目生成快照时构建,根据情况可以选择定时或轮询
4.构建时选择的是maven,所有配置pom已经项目maven命令
5.构建时执行的Shell脚本
#!/bin/bash -il
#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/var/jenkins_home/workspace/docker_file
源jar路径
SOURCE_PATH=/var/jenkins_home/workspace/demo/target
#容器id
CID=$(docker ps | grep "demo" | awk '{print $1}')
DATE=`date +%Y%m%d%H%M`
最新构建代码 移动到项目环境
function transfer(){
echo "最新构建代码 $SOURCE_PATH/demo.jar 迁移至 $BASE_PATH ...."
cp $SOURCE_PATH/demo.jar $BASE_PATH
echo "迁移完成"
}
备份
function backup(){
if [ -f "$BASE_PATH/demo.jar" ]; then
echo "demo.jar 备份..."
cp $BASE_PATH/demo.jar $BASE_PATH/backup/demo-$DATE.jar
sleep 3
rm -rf $BASE_PATH/demo.jar
echo "备份 demo.jar 完成"
else
echo "$BASE_PATH/demo.jar不存在,跳过备份"
fi
}
构建docker镜像
function build(){
echo "开始构建镜像..."
cd $BASE_PATH
docker build -t demo .
}
运行docker容器
function run(){
backup
transfer
build
if [ -n "$CID" ]; then
echo "存在demo容器,CID=$CID,重启docker容器 ..."
docker stop $CID
docker rm $CID
docker run -d -p 8899:8899 demo
echo "demo容器重启完成"
else
echo "不存在demo容器,docker run创建容器..."
docker run --name demo -d -p 8899:8899 demo
echo "demo容器创建完成"
fi
delnone
}
删除none镜像
function delnone(){
docker rmi $(docker images -f "dangling=true" -q)
echo "清除none镜像"
}
入口
run
查看docker运行的容器
服务器端口访问,成功