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自动化打包部署
Docker+Jenkins+GitLab+Maven+SpringBoot&SpringCloud实现自动化构建镜像与部署详解 https://www.jianshu.com/p/bdb0642b7495 本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用。 本文章会涉及结合...
通过Jenkins完成docker的容器升级,镜像打包,上传仓库
自动化构建部署思路 如下图 本地代码git提交到github jenkins程序(192.168.1.93) 检查到代码更新,自动构建编译spingboot项目生成war,并将war包通过ssh传到服务器(这里没多余的机器,还是用192.168.1.93)进行...
jenkins+docker+nodejs自动部署 采用shell自定义脚本,控制集成部署环境更加方便灵活 如果服务器更换,重新部署的工作量会比较小 涉及的docker命令,会有讲解(不知道算不算亮点) 代码通过git管理,放在了码云上...
注意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。 用法 使用此映像启动一个...
docker-compose 部署jenkins 内部已经安装 git maven node docker 等环境
Jenkins 是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 在资源中,会讲到如下内容: - Git GitLab 安装 - Jenkins 安装 - Jenkins ...
看不到源码docker-java8-jenkins-maven-git-nano 该存储库提供了 Dockerfile,该文件从 Ubuntu 14.04 LTS 以及 Oracle Java 8、Jenkins 1.574、Maven 3、Git 和 Nano 构建持续集成容器。 设置一个装有 jenkins 的...
其次,对于运维人员来说需要清楚的认识到点击构建后整个的流程(Jenkins构建-->git拉取代码-->maven打包-->docker构建容器-->shell脚本部署),方便在开发人员构建不成功的时候帮助其排查问题,保证服务的稳定性。
Jenkins & Pipeline + Kubernetes & Docker + Git + Maven + Harbor?工作流程:手动/自动构建 -> Jenkins 调度 K8S API?->动态生成 Jenkins Slave pod -> Slave pod 拉取 Git 代码/编译/打包镜像 ->推送到镜像...
什么是持续集成、什么是容器化集成和部署、怎么样安装Jenkins、规避哪些坑、什么是Blue Ocean 什么是流水线技术、什么是Jenkins Piepeline流水线技术、怎么样写流水线脚本 如何实现串行部署、并行部署、单节点部署、...
码头工人詹金斯Jenkins 的 Docker 镜像此 Docker 映像包含: Java 和 maven 来构建你的 Java 项目Active Directory 身份验证的默认配置使用私有 ssh 密钥的默认配置访问 git 服务器如何配置 Active Directory 身份...
jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java, c#, php等)的项目构建,也完全兼容ant、maven、...
持续集成演示 此仓库显示了如何使用dockerized jenkins来构建,测试和部署Java和python应用程序。 为了测试Java应用程序,此演示使用... 另一种方法是将预构建的Docker映像与已安装的jenkins blue-ocean插件一起使用。
CICD-GiT-Maven-Jenkins-Docker 教程位于: : 启动Docker主机的EC2实例 在EC2实例上安装docker并启动服务 yum install docker service docker start 为Docker管理创建一个新用户并将其添加到Docker(默认)组 ...
Jenkins+Git+Docker+SpringBoot持续集成自动化部署https://blog.csdn.net/z1353095373/article/details/107212714
Jenkins Docker 镜像 w/ GCloud SDK + 额外的 Jenkins 插件 这个镜像建立在官方的每周 Jenkins Docker Image 。 另外安装: Oracle JDK 7(最新的镜像构建点) 包含多个组件的 Google Cloud SDK 适用于 Go、Java...
jenkins自动化环境搭建,配置 1:jdk安装 2:maven安装配置 3:git安装 4:docker安装,docker私服搭建 5:Jenkins安装配置