spring boot & docker & jenkns 持续部署方案

docker-outside-of-docker-jenkins中,我们搭建了一个运行于docker container 中,并且能操作 docker 的 jenkins 环境,现在我们来简单介绍一下在 jenkins 平台如何持续集成 spring boot 项目

项目配置

如果你的项目是基于 gradle 构建的话,在构建脚本中 加入以下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
buildscript {
repositories {
maven { url "https://plugins.gradle.org/m2/" }
mavenCentral()
}
dependencies {
classpath "se.transmode.gradle:gradle-docker:1.2"
}
}
ext {
systemProperties = System.properties
}
apply plugin: 'docker'
task buildDocker(type: Docker, dependsOn: build, group: "cn.dysania") {
def sysVersion = systemProperties.get("version") //读取系统环境变量version,用于构建镜像的版本号
if (sysVersion != null) {
version = sysVersion
}
push = false
applicationName = jar.baseName
dockerfile = file('src/main/docker/Dockerfile') //dockerfile的路径
doFirst {
copy {
from jar
into stageDir
}
}
}

然后在 ‘src/main/docker/‘ 目录下添加Dockerfile文件

1
2
3
4
5
6
FROM java:8
ADD eureka-server-*.jar app.jar
RUN bash -c 'touch /app.jar'
RUN echo "Asia/Shanghai" > /etc/timezone
EXPOSE 8761
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=produce","-jar","app.jar"]

ok! 现在关于项目的配置已经完成了,如果你的项目是基于maven构建,也有相应的maven插件,步骤差不多,就不多介绍了,现在让我们来创建一个 jenkins job 吧!

jenkins 配置

  1. 创建项目,选择自由风格

  2. 勾选参数化构建过程,作用相当于设置linux环境变量

  3. 源码管理,填写 Repository URL , 可以是 SVN 或者 git, 推荐 git,还需要添加凭证,ssh或者用户名密码都行

  4. 构建触发器默认即可, 也可以设置github hooks 或者定时构建

  5. 构建步骤, 由于项目是基于gradle的 所以第一步选择 Invoke Gradle script.然后选择Execute shell

这是shell脚本代码

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
container_id=$(docker ps -a | grep "$container_name" | awk '{print $1}')
if [ -z $container_id ];then
echo "$container_name container not exist"
else
echo "start remove container: $container_name --- $container_id "
docker rm -f "$container_id"
fi
docker run --name "$container_name" -d -v /home/logs:/home/logs -p "$port":8761 cn.dysania/eureka-server:"$version"

开始构建

ok! 让我们开始构建项目吧 。

选择 Buile with Parameters 填写一些参数,点击构建,然后我们就来一杯 Java 吧~(手动滑稽)

ok! Java 喝完了 ,我们看看构建的如何了。

恩,很好 ,以后我们提交了代码都不需要打包项目,上传服务器部署了,只需要点一点哦,如果你配置了github hooks的话,只要你推送了, jenkins就会自动开始构建。


关于jenkins分布式构建的知识,,,还在学习中。。。。。