环境:
1.ubuntu18
2.docker
3.jenkins
4.gitlab项目
jenkins插件配置
Jenkins要实现持续集成自动部署需要安装 :
1.Publish Over SSH
2.gitlab
Git等几个插件
jenkins上集成gitlab插件
系统配置-->系统配置-->Gitlab
host url填写gitlab服务器地址
Credentials配置如下
api token从gitlab 用户设置中获取,如下图
设置SSH:Publish over SSH
同时配置服务器的ssh账号密码
设置jenkins的JDK
一开始使用ubuntu的jdk地址,报错 (jdk path) is not a directory on the Jenkins master (but perhaps it exists on some agents)
如果出现以上问题,就需要将本地的jdk挂载到jenkins容器后重启
启动:
-v命令进行挂载,其中冒号前面的是本机的目录,将本机的javahome和mavenhome的路径,挂载到Jenkins容器上,冒号后面是容器上的目录,可以写跟本机目录相同。
docker ps
docker stop 4fe6ce853e7c(CONTAINER ID)
docker run -d --name jenkins_01 -p 8081:8080 -v /usr/lib/jvm/java-8-openjdk-amd64/bin/java:/usr/lib/jvm/java-8-openjdk-amd64/bin/java -v /usr/lib/jvm/java-8-openjdk-amd64:/usr/lib/jvm/java-8-openjdk-amd64 -v /home/jenkins_01:/home/jenkins_01 jenkins:jenkins:latest
或者勾选自动安装
添加不同的gitlab认证方式
配置git地址
加入maven命令
配置ssh传输路径以及自定义shell脚本
echo "run.sh start..."
docker --version
SERVER_NAME=demo-api1
cd /data/app/
echo "docker build start..."
docker build -t $SERVER_NAME /data/app/demo-api1/
echo "docker build end..."
cid=$(docker ps -a| grep "$SERVER_NAME" | awk '{print $1}')
if [ "$cid" != "" ]; then
docker rm -f $cid
fi
docker run \
-d \#后台运行
-e TZ="Asia/Shanghai" \ #设置时区
-p 8000:8000 \#宿主机器端口与容器端口绑定
-v /data/app/demo-api1/:/home/docker_app/demo-api1/ \#文件夹挂载,前面是宿主服务器路径,后面是容器的路径,两个路径下内容同步
--name demo-api1 \ #容器名称
--privileged=true \ #是否拥有特权
--net=host \#[docker的四种网络模式](https://www.cnblogs.com/gispathfinder/p/5871043.html)
java:8 java \ #容器版本:tag
-jar /home/docker_app/demo-api1/demo-api1.jar --spring.profiles.active=pro
#容器启动后启动jar
echo "run.sh end..."
Dockerfile
主要用于镜像在当前目录上下文查找文件,并将文件同步到镜像
FROM java:8
EXPOSE 8000
ADD demo-api1.jar /home/docker_app/demo-api1/demo-api.jar
ENTRYPOINT ["java","-jar", "demo-api1.jar"]
启动成功后查看
docker ps -a