docker + jenkins + git + maven自动化构建与部署
docker + jenkins + git + maven自动化构建与部署
准备工作
- 安装好最新docker
- docker 分别pull 以下镜像
jenkins:2.0-beta-1
tomcat
mysql
(mysql只用来做测试项目的数据库,有其它数据库服务器的可以不下载) - 下载
maven
解压mkdir -p /dockerworkspace/maven && tar zxf apache-maven-3.3.9-bin.tar.gz -C /dockerworkspace/maven
- 下载
jdk
tar zxf jdk*.tar.gz -C /dockerworkspace/java/ && mv /dockerworkspace/java/jdk* /dockerworkspace/java/jdk
本教程所有工具和数据目录存放于
/dockerworkspace
目录下
安装jenkins
docker run -d --name jenkins
-p 8080:8080
-p 50000:50000
-v /dockerworkspace/jenkins:/var/jenkins_home
-v /dockerworkspace/maven/apache-maven-3.3.9:/usr/local/maven
-v /dockerworkspace/java/jdk:/usr/local/jdk
jenkins:2.0-beta-1
访问jenkins:8080(jenkins改成服务器地址) ,然后输入以下查看到的密码Unlock Jenkins
cat /dockerworkspace/jenkins/secrets/initialAdminPassword
Customize Jenkins
步骤时选择左边的Install suggested plugins
等待插件安装完成, 然后填写管理员信息
配置Jenkins
-
登陆jenkins, 进入
系统管理-插件管理-可选插件
搜索ssh plugin
然后安装, 安装界面选择安装好后重启jenkins -
进入
系统管理-系统管理-可选插件 - SSH remote hosts
填写部署tomcat项目的host信息 -
设置邮件发送服务器
- 进入
系统管理-系统管理-Jenkins Location
中系统管理员邮件地址
-
邮件通知
中QQ企业邮箱设置如下(发件人的邮箱地址要和上面系统管理员邮件地址一致
不然会报错)
- 进入
-
JDK配置
- 进入
系统管理-Global Tool Configuration - jdk
- 点新增JDK,别名:
jdk
JAVA_HOME
填写/usr/local/jdk
(我截图里用的是ibm家的jdk)
- 进入
-
Maven配置
- 进入
系统管理-Global Tool Configuration - Maven
- 点新增Maven,别名:
maven
MAVEN_HOME
填写/usr/local/maven
- 进入
新建测试项目
本教程中git管理端用的是gogs
-
创建jenkins中的maven 项目
-
在jenkins首页点击新建选择
构建一个maven项目
填写项目名称test_tomcat
(如果没有这项请安装插件
Maven Integration plugin
) -
源码管理中选择git, 填写项目的git信息(Credentials点新增可以添加git的认证信息,支持
帐户名密码
,ssh key
等方式.源码浏览器
在构建项目时的修改记录
可以直接连接到git平台)
-
-
构建触发器
-
身份验证令牌
可以随意填写一个任意长度的字符串, 也可以填写uuid之类的, 并记录下来, 以后会用到
-
-
Post Steps (部署部份配合主机上的一人脚本使用,脚本内容往下看)
- 选择
Run only if build succeeds
只在构建成功时运行 -
Add post-build step
选择Execute shell script on remote host using ssh
然后选择服务器和执行脚本信息
- 选择
- 在gogs上创建git hook (这一步在gitlab或github应该也有相应的方法)
- 进入上面构建的git项目
首页-仓库设置-管理git钩子-post-update
- 填写以下脚本 (请把环境变量改为自己相应的服务器信息)
- 进入上面构建的git项目
#!/bin/sh
# 请修改以下环境变量
SERVER=http://127.0.0.1:8080 #jenkins服务器地址
TOKEN=jenkins1270018080hosttesttomcat #jenkins项目的 身份验证令牌
JENKINS_USER=admin #jenkins用户
JENKINS_PWD=admin # jenkins用户密码
JENKINS_PROJECT=test_tomcat # jenkins项目名
echo "Startting Build War File On Jenkins's Server"
echo "Setting Token On The Jenkins's Server......"
CRUMB=$(curl -s --user $JENKINS_USER:$JENKINS_PWD \
$SERVER/crumbIssuer/api/xml?xpath=concat\(//crumbRequestField,%22:%22,//crumb\))
echo "Trigger Jenkins's Server Start Building......"
curl -s --user $JENKINS_USER:$JENKINS_PWD -H "$CRUMB" $SERVER/job/$JENKINS_PROJECT/build?token=$TOKEN
echo "Jenkins's Server Build Success!"
tomcat 服务器配置
docker run -d
--name test_tomcat
-p 8888:8080
-v /dockerworkspace/tomcat/webapps:/usr/local/tomcat/webapps
-v /dockerworkspace/java/jdk:/usr/local/jdk
-e "JAVA_HOME=/usr/local/jdk"
tomcat
测试用mysql服务器
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=admin -d mysql
创建一个脚本文件vim /dockerworkspace/tomcat/deploy.sh
内容如下
#!/bin/sh
SERVER=http://127.0.0.1:8080 #jenkins服务器地址
TOKEN=jenkins1270018080hosttesttomcat #jenkins项目的 身份验证令牌
JENKINS_USER=admin #jenkins用户
JENKINS_PWD=admin # jenkins用户密码
JENKINS_PROJECT=test_tomcat # jenkins项目名
MAVEN_GROUPID=net.lxy520.test_tomcat #maven项目pom.xml的groupId
MAVEN_NAME=ROOT #maven项目pom.xml的groupId
MAVEN_VERSION=1.2.6 #maven项目pom.xml的groupId
CONTAINER=test_tomcat #tomcat docker 的容器id或名称
echo "设置Jenkins服务器为$SERVER"
echo "向服务器请求token"
CRUMB=$(curl -s --user $JENKINS_USER:$JENKINS_PWD \
$SERVER/crumbIssuer/api/xml?xpath=concat\(//crumbRequestField,%22:%22,//crumb\))
echo "下载war文件......"
curl -s --user $JENKINS_USER:$JENKINS_PWD -H "$CRUMB" "$SERVER/job/$JENKINS_PROJECT/lastStableBuild/${MAVEN_GROUPID}\$${MAVEN_NAME}/artifact/$MAVEN_GROUPID/$MAVEN_NAME/$MAVEN_VERSION/${MAVEN_NAME}-${MAVEN_VERSION}.war" -o ${MAVEN_NAME}-${MAVEN_VERSION}.war
echo "下载完成!"
CURRENT=`pwd`
echo "临时存放路径:$CURRENT/${MAVEN_NAME}-${MAVEN_VERSION}.war"
echo "暂停Tomcat服务..."
docker stop $CONTAINER
echo "覆盖项目..."
rm -rf /dockerworkspace/tomcat/webapps/ROOT.war /dockerworkspace/tomcat/webapps/ROOT
mv ${MAVEN_NAME}-${MAVEN_VERSION}.war /dockerworkspace/tomcat/webapps/ROOT.war
echo "重启Tomcat服务..."
docker start $CONTAINER
echo "Tomcat启动成功."
测试
在本地项目中git push, 查看jenkins会不会自动构建,然后检查docker中的容器是否正确部署
相关推荐
* 使用 K8S+DockerCE+Jenkins+Maven+Gitlab 实现自动化打包部署,需要配置 Jenkins 和 Gitlab,以实现自动化构建和部署。 * 需要编写 Jenkinsfile,以实现自动化构建和部署。 * 需要配置 Gitlab,以实现自动化代码...
在自动化部署流程中,Gitllab 负责管理项目的源代码,并将代码推送到 Jenkins 服务器上,以便进行自动化构建和部署。 二、 持续集成工具 Jenkins Jenkins 是一个开源的自动化服务器,提供了一个强大且灵活的平台来...
Docker+Jenkins+GitLab+Maven+SpringBoot&SpringCloud实现自动化构建镜像与部署详解 https://www.jianshu.com/p/bdb0642b7495 本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用。 本文章会涉及结合...
本文将详细介绍如何使用 Docker、Jenkins、Git 和 Registry 构建持续集成环境,实现自动化的 Java 项目发布流程。 知识点 1: Jenkins 简介 Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于...
在接口自动化测试中,Maven可以帮助我们管理测试所需的依赖库,构建测试环境,并且可以与Jenkins结合,通过命令行触发构建和测试流程,使得整个过程更加规范化和自动化。 集成这三者的过程大致如下: 1. **配置...
本文将详细介绍如何使用 Jenkins 与 Docker 实现一键自动化部署项目。该项目环境基于 Centos 7,使用 Git(Gitee)版本控制系统。整个过程可以分为四个步骤:安装 Docker、安装 Jenkins、配置 Jenkins 基本信息、...
例如,使用Docker容器化应用程序,然后使用Kubernetes部署和管理容器集群,最后使用Jenkins自动化构建、测试和部署应用程序。 这堂视频课程提供了Docker、Kubernetes和Jenkins的详细讲解和实践,旨在帮助开发者和...
通过Jenkins完成docker的容器升级,镜像打包,上传仓库
自动化构建部署思路 如下图 本地代码git提交到github jenkins程序(192.168.1.93) 检查到代码更新,自动构建编译spingboot项目生成war,并将war包通过ssh传到服务器(这里没多余的机器,还是用192.168.1.93)进行...
jenkins+docker+nodejs自动部署 采用shell自定义脚本,控制集成部署环境更加方便灵活 如果服务器更换,重新部署的工作量会比较小 涉及的docker命令,会有讲解(不知道算不算亮点) 代码通过git管理,放在了码云上...
jenkins、node、git、docker自动化编译 jenkins 是一个开源的自动化服务器,可以用于自动化编译、测试、部署和发布软件。Node.js 是一个基于 Chrome V8 JavaScript 引擎的 JavaScript 运行环境,常用于开发服务器端...
Git 用于管理软件开发中的代码版本,而 Jenkins 则是自动化流程的平台,尤其适用于构建、测试和部署项目。 ### Git 知识点 1. **版本控制**:Git 是一个分布式版本控制系统,它记录了代码的所有变更历史,允许...
结合Git使用,可以实现自动化构建和部署,提高开发效率。 ##### Nexus作为中央仓库 **Nexus**是Sonatype公司提供的一款开源仓库管理器,它可以作为本地或远程Maven仓库的代理,帮助团队统一管理依赖库,提高构建...
注意jdk另外下载添加进包内jdk-8u191-linux-x64.tar 或者下载其他版本修改dockerfile文件中jdk名称即可(linux)
Docker为jenkins映像构建信息,可用于java / maven项目。 基于。 请参阅上面的有关自定义此映像的文档以及 。 该映像设置了JDK 7和8(使用OpenJDK)以及Maven版本3.1.1、3.2.5和3.3.3。 用法 使用此映像启动一个...
Bat中实现git和Maven环境变量检测,拉取git代码并打包maven项目,读取子目录差异性yml文件配置并根据选择项调用7zip打包成tar.gz包(获取时间戳截取命名) Docker+Jenkins+Pipline实现SpringBoot项目input选择不同...
2. **构建自动化**:Maven负责编译、测试、打包项目,Jenkins调用Maven插件执行这些任务。 3. **脚本辅助**:SHELL脚本用于处理Jenkins不能直接完成的工作,比如环境准备、数据备份等。 4. **错误检测与报告**:集成...
本讲解将深入探讨如何在Jenkins中集成Maven,以实现自动化构建和测试。 一、Jenkins简介 Jenkins是一个用Java编写的开源持续集成工具,提供了一个友好的Web界面,用于配置和执行各种自动化任务,如编译、单元测试、...
docker-compose 部署jenkins 内部已经安装 git maven node docker 等环境