jenkins 持续集成解决方案
程序员文章站
2022-04-25 22:10:11
...
jenkins 持续集成解决方案
0 缘起
因为测试环境需要不断的改代码发布, 特别麻烦和耗时, 所以学着测试大佬 搭建了持续集成.
采用技术:码云/svn/github+maven+jenkins+docker
1 环境准备
- linux 系统
centos7ipaddr 无法查看虚拟机IP解决办法
- jdk
- maven
- docker
- 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 就行)