欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jenkins 持续集成解决方案

程序员文章站 2022-04-25 22:10:11
...

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

我本机的目录结构如下

[[email protected] test]# cd /root/.jenkins/workspace/test
[[email protected] 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 就行)