1. 概述
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
2. 说明
这里不赘述相关概念和原理,仅描述如何将你的springboot应用通过jenkins实现一键打包部署的关键步骤
环境: centos7 + docker
3. 步骤
3.1 准备springboot应用,pom中需要有打包插件的配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3.2 Linux安装maven
(也可以直接在jenkins里配置自动安装)
- 下载
cd /opt/software wget https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
- 解压
tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /opt/module/
- 配置环境变量
在末尾加入如下配置vim /etc/profile
刷新配置export M2_HOME=/opt/module/apache-maven-3.6.3 export PATH=$PATH:$M2_HOME/bin
验证source /etc/profile
mvn -v
- 设置国内镜像地址加速
在mirrors标签内新增如下配置vim conf/settings.xml
<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror>
3.3 基于Docker安装Jenkins
-
下载镜像
docker pull jenkins/jenkins:lts
-
运行容器
如果要使用自定义安装的maven,这里一定需要做好maven安装路径映射和仓库路径映射docker run --privileged=true -v /root/jenkins_home:/var/jenkins_home -v /opt/module/apache-maven-3.6.3:/opt/module/apache-maven-3.6.3 -v /root/.m2/repository:/root/.m2/repository -p 8080:8080 -p 50000:5000 --name jenkins -u root jenkins/jenkins:lts
-
访问jenkins
http://ip:8080/
第一次比较慢,输入初始密码解锁jenkins -
因插件安装非常慢,先不要安装插件,执行以下命令修改下载的服务器地址为国内镜像
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /root/jenkins_home/updates/default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /root/jenkins_home/updates/default.json
-
重启jenkins,并重新登录
docker restart jenkins
-
安装推荐插件
-
创建第一个管理员用户
-
实例配置,默认即可,此时jenkins进入就绪状态
这里建议重启一次 -
自定义插件安装
选择插件:
-
maven配置
在Global Tool Configuration找到maven配置
-
ssh配置
先配置root帐号密码
在系统配置中配置ssh并测试
-
授权策略
这里配置从简
3.4 将代码上传git
本文采用gitee
3.5 创建jenkins任务
- 新建任务
- 设置git仓库地址及设置git帐号密码
- 构建配置
- 构建环境设置
脚本参考cd /root/jenkins_home/workspace/jenkins-demo app_name='jenkins-demo' docker stop ${app_name} echo '----stop container----' docker rm ${app_name} echo '----rm container----' docker build -t jenkins-demo . docker run -d TZ="Asia/Shanghai" -p 8900:8800 --name ${app_name} jenkins-demo echo '----start container----'
3.6 创建dockerfile
可以提前在springboot项目根目录创建,内容参考
FROM java
MAINTAINER dacai
ADD ./target/jenkins-demo-1.0-SNAPSHOT.jar /app/app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/app.jar"]
3.7 执行jenkins任务
测试失败, 不要激动,再来一遍!
大功告成, 不要激动,再来一遍!