Docker结合jenkins完成快捷打包部署

关注我,更多精彩文章第一时间推送给你

Java之康庄大道

安装jenkins

我这里选择的是docker方式安装,根据官方建议使用的额镜像是jenkinsci/blueoceanjava

建议使用的Docker映像是jenkinsci/blueocean image(来自 the Docker Hub repository)。 该镜像包含当前的长期支持 (LTS) 的Jenkins版本 (能够投入使用) ,捆绑了全部Blue Ocean插件和功能。这意味着你不须要单独安装Blue Ocean插件。git

拉取镜像docker

docker pull jenkinsci/blueocean

<!--more-->bash

运行镜像maven

docker run -d --name jenkins \
-p 8010:8080 -p 8011:8081 -p 50000:50000 \
-v /home/docker/jenkins/data:/var/jenkins_home \
--privileged=true --restart=always \
jenkinsci/blueocean:latest

此时docker ps查看容器运行情况发现一直在重启测试

jenkinsci/blueocean   "/sbin/tini -- /usr/…"   20 minutes ago      Restarting (1) 17 seconds ago

查看日志docker logs jenkins 获得ui

touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

须要修改下目录权限, 由于当映射本地数据卷时,/home/docker/jenkins/data目录的拥有者为root用户,而容器中jenkins user的uid为1000 执行以下命令便可url

chown -R 1000:1000 /home/docker/jenkins/data
# 重启jenkins容器
docker restart jenkins

启动成功以后的配置

  • 访问192.168.16.128:8010,即你的ip + 你docker启动时候映射的端口

图1

  • docker安装的密码去哪里找呢?spa

  • 答案是去日志里是最快速的,固然也能够去容器内部docker exec -it 容器id /bin/bash 按照提示地址获取.net

# 查看日志
docker logs jenkins
# 获得的日志中的密码
*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

8c4bdd47724b4c1b82e726c7bfb62fae

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************
  • 安装推荐的插件

图2

  • 若是须要重启则执行
docker restart jenkins

图3

配置java和maven

  • 以下图所示:进入到jenkins容器内部查看,已经安装了jdk1.8,因此咱们直接找到jdk1.8的地址配置上就行

图5

# 进入jenkins容器内部
docker exec -it jenkins /bin/bash
# 查看jdk版本
java -version
# 查看jdk地址
echo $JAVA_HOME

图6

  • jdk配置jenkins内部的,maven自动安装,3.6.3便可,以后保存。

图7

  • 安装这个maven插件

图8

  • 新建一个maven项目

图9

  • 配置git地址

图10

  • 添加构建命令

图11

  • 这块建议跳过测试阶段,以下配置

image-20201001132149508

  • 以下脚本:前四个怎么填写,先构建一次,查看控制台输出,时间可能比较久,能够配置一下maven的设置,在全局设置中以下配置:

image-20201001063900205

  • 注意这里配置的settings.xml就是平时咱们配置了阿里镜像源的配置,这里我配置到了容器内的/var/jenkins_home目录中,命令以下
# 进入容器
docker exec -it jenkins /bin/bash
# 进入目录
cd /var/jenkins_home
# 新建文件
vi settings.xml
# 把配置好阿里镜像源的settings.xml中的内容复制进去
# :wq保存退出

image-20201001121827492

  • 这块配置以下脚本

image-20201001122308202

#!/bin/bash
# 服务名称
SERVER_NAME=jenkins_test

# 源jar名称,mvn打包以后,target目录下的jar包名称
JAR_NAME=jenkins_test-0.0.1-SNAPSHOT

# 源jar路径,打包以后的生成的jar的路径
JAR_PATH=/var/jenkins_home/workspace/jenkins_test/target

# 打包完成以后,把jar包移动到运行jar包的目录
JAR_WORK_PATH=/var/jenkins_home/workspace/jenkins_test/target


echo "查询进程id -->$SERVER_NAME"

# 获取查询结果以空格为界的第一个字段,即PID端口号
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $1}'`

echo "获得进程id:$PID"

echo "结束进程ing..."

for id in $PID
do
	kill -9 $id
    echo "killed $id"
done

# 等待三秒
echo sleep 3s
sleep 1
echo sleep 2s
sleep 1
echo sleep 1s
sleep 1
        
echo "结束进程完成"

# 复制jar包到执行目录
echo "复制jar包到执行目录: cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"

cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH

echo "复制jar包完成"

cd $JAR_WORK_PATH

# 修改文件权限
chmod 755 $JAR_NAME.jar

# 后台运行
BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &
  • 以后当即构建,便可成功

image-20201001100206259

相关文章
相关标签/搜索