jenkins 持续集成解决方案

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35704236/article/details/82425567

jenkins 持续集成解决方案

0 缘起

因为测试环境需要不断的改代码发布, 特别麻烦和耗时, 所以学着测试大佬 搭建了持续集成.

采用技术:码云/svn/github+maven+jenkins+docker

1 环境准备

  • linux 系统

https://www.cnblogs.com/zuxing/articles/8718591.html

centos7ipaddr 无法查看虚拟机IP解决办法

https://blog.csdn.net/wxx729418277/article/details/79130649

  • jdk

https://www.cnblogs.com/chy123/p/6750351.html

  • maven

https://blog.csdn.net/wakakaC/article/details/77688440

  • docker

https://blog.csdn.net/doegoo/article/details/80062132

  • tomcat

这个简单就不说了

  • git

https://blog.csdn.net/wangfei0904306/article/details/57113408

  • jenkins

https://blog.csdn.net/yue31313/article/details/79884625

前面的环境准备完 就按照最后一篇博客配置下 jenkins

2 构建脚本

这个构建脚本在 jenkins 配置里面输入

  • 模板
#!/bin/sh 
echo  $ref
mvn clean package
# image-name="镜像名" image-container-name="容器名"
echo "开始构建, 镜像:${image-name}, 容器:${image-container-name}"
# 删除旧的容器和镜像
docker rm -f ${image-container-name}
docker rmi -f ${image-name}
# 根据当前目录下的 dockerfile 构建新的镜像,并且启动
docker build -t ${image-name} .
docker run -d -p 8888:8888 --name="${image-container-name}" [-v {要挂载的磁盘目录}:{要挂载的磁盘目录}] ${image-name}
  • 实例
#!/bin/sh 
echo  $ref
mvn clean package
echo "开始构建, 镜像:test, 容器:test-container"
# 删除旧的容器和镜像
docker rm -f test-container
docker rmi -f test
# 根据当前目录下的 dockerfile 构建新的镜像,并且启动
docker build -t test .
docker run -d -p 8888:8888 --name="test-container" test 
  • 注意 这个脚本的执行目录是在 jenkins 的构建目录中, 我本机是: /root/.jenkins/workspace/test

我本机的目录结构如下

[root@localhost test]# cd /root/.jenkins/workspace/test
[root@localhost test]# ll
总用量 12
-rw-r-----. 1 root root  234 9月   5 22:16 Dockerfile
-rw-r-----. 1 root root 1628 9月   5 19:15 pom.xml
-rw-r-----. 1 root root 1338 9月   5 19:15 README.md
drwxr-x---. 4 root root   30 9月   5 19:15 src
drwxr-x---. 9 root root  233 9月   5 22:49 target

3 Dockerfile 的编写

我本地的 Dockerfile 是放在项目根目录下的

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD target/test-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

4 流程

说一下自动构建的流程

  • 1 用户在 jenkins 上点击构建
  • 2 jenkins 根据配置好的 git 地址, 去 把 源码 down 下来
  • 3 接着执行上面配置好的构建脚本 去删除就的 容器和镜像,并且构建新的容器和镜像 进行启动
  • 4 如果想更智能一点就在 码云上配置下 webhook, 这样更新代码的时候就会自动构建拉

webhook 参考下: https://blog.csdn.net/xlgen157387/article/details/72852428 (只看 webhook 就行)

猜你喜欢

转载自blog.csdn.net/qq_35704236/article/details/82425567