`
angelguo
  • 浏览: 120255 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

docker + jenkins + git + maven自动化构建与部署

 
阅读更多

docker + jenkins + git + maven自动化构建与部署

docker + jenkins + git + maven自动化构建与部署

准备工作

  1. 安装好最新docker
  2. docker 分别pull 以下镜像 jenkins:2.0-beta-1 tomcat mysql(mysql只用来做测试项目的数据库,有其它数据库服务器的可以不下载)
  3. 下载maven 解压mkdir -p /dockerworkspace/maven && tar zxf apache-maven-3.3.9-bin.tar.gz -C /dockerworkspace/maven
  4. 下载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

  1. 登陆jenkins, 进入系统管理-插件管理-可选插件 搜索ssh plugin 然后安装, 安装界面选择安装好后重启jenkins

  2. 进入系统管理-系统管理-可选插件 - SSH remote hosts 填写部署tomcat项目的host信息 

  3. 设置邮件发送服务器

    1. 进入系统管理-系统管理-Jenkins Location 中 系统管理员邮件地址
    2. 邮件通知 中QQ企业邮箱设置如下(发件人的邮箱地址要和上面系统管理员邮件地址一致不然会报错)
  4. JDK配置

    1. 进入系统管理-Global Tool Configuration - jdk
    2. 点新增JDK,别名:jdk JAVA_HOME填写/usr/local/jdk(我截图里用的是ibm家的jdk)
  5. Maven配置

    1. 进入系统管理-Global Tool Configuration - Maven
    2. 点新增Maven,别名:maven MAVEN_HOME填写/usr/local/maven

新建测试项目

本教程中git管理端用的是gogs

  1. 创建jenkins中的maven 项目

    1. 在jenkins首页点击新建选择构建一个maven项目 填写项目名称test_tomcat

      (如果没有这项请安装插件Maven Integration plugin)

    2. 源码管理中选择git, 填写项目的git信息(Credentials点新增可以添加git的认证信息,支持帐户名密码,ssh key 等方式. 源码浏览器在构建项目时的修改记录可以直接连接到git平台)

  2. 构建触发器

    1. 身份验证令牌 可以随意填写一个任意长度的字符串, 也可以填写uuid之类的, 并记录下来, 以后会用到
  3. Post Steps (部署部份配合主机上的一人脚本使用,脚本内容往下看)

    1. 选择Run only if build succeeds只在构建成功时运行
    2. Add post-build step 选择Execute shell script on remote host using ssh 然后选择服务器和执行脚本信息
  4. 在gogs上创建git hook (这一步在gitlab或github应该也有相应的方法) 
    1. 进入上面构建的git项目首页-仓库设置-管理git钩子-post-update
    2. 填写以下脚本 (请把环境变量改为自己相应的服务器信息)
#!/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自动化打包部署

    * 使用 K8S+DockerCE+Jenkins+Maven+Gitlab 实现自动化打包部署,需要配置 Jenkins 和 Gitlab,以实现自动化构建和部署。 * 需要编写 Jenkinsfile,以实现自动化构建和部署。 * 需要配置 Gitlab,以实现自动化代码...

    Gitllab+Jenkins+Docker+Harbor 自动化部署流程

    在自动化部署流程中,Gitllab 负责管理项目的源代码,并将代码推送到 Jenkins 服务器上,以便进行自动化构建和部署。 二、 持续集成工具 Jenkins Jenkins 是一个开源的自动化服务器,提供了一个强大且灵活的平台来...

    Docker+Jenkins+GitLab+Maven+SpringBoot&SpringCloud实现自动化构建镜像与部署详解

    Docker+Jenkins+GitLab+Maven+SpringBoot&SpringCloud实现自动化构建镜像与部署详解 https://www.jianshu.com/p/bdb0642b7495 本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用。 本文章会涉及结合...

    实战Docker+Jenkins+Git+Registry构建持续集成环境

    本文将详细介绍如何使用 Docker、Jenkins、Git 和 Registry 构建持续集成环境,实现自动化的 Java 项目发布流程。 知识点 1: Jenkins 简介 Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于...

    Jmeter+Jenkins+maven接口自动化集成.rar

    在接口自动化测试中,Maven可以帮助我们管理测试所需的依赖库,构建测试环境,并且可以与Jenkins结合,通过命令行触发构建和测试流程,使得整个过程更加规范化和自动化。 集成这三者的过程大致如下: 1. **配置...

    Jenkins+Docker 实现一键自动化部署项目.docx

    本文将详细介绍如何使用 Jenkins 与 Docker 实现一键自动化部署项目。该项目环境基于 Centos 7,使用 Git(Gitee)版本控制系统。整个过程可以分为四个步骤:安装 Docker、安装 Jenkins、配置 Jenkins 基本信息、...

    Docker+Kubernetes+Jenkins视频教程

    例如,使用Docker容器化应用程序,然后使用Kubernetes部署和管理容器集群,最后使用Jenkins自动化构建、测试和部署应用程序。 这堂视频课程提供了Docker、Kubernetes和Jenkins的详细讲解和实践,旨在帮助开发者和...

    jenkins+docker+gitlab+maven.docx

    通过Jenkins完成docker的容器升级,镜像打包,上传仓库

    基于docker部署的jenkins+maven自动化构建部署springboot项目实践

    自动化构建部署思路 如下图 本地代码git提交到github jenkins程序(192.168.1.93) 检查到代码更新,自动构建编译spingboot项目生成war,并将war包通过ssh传到服务器(这里没多余的机器,还是用192.168.1.93)进行...

    打造jenkins+docker+nodejs项目的自动部署环境(webhook)

    jenkins+docker+nodejs自动部署 采用shell自定义脚本,控制集成部署环境更加方便灵活 如果服务器更换,重新部署的工作量会比较小 涉及的docker命令,会有讲解(不知道算不算亮点) 代码通过git管理,放在了码云上...

    jenkins、node、git、docker自动化编译

    jenkins、node、git、docker自动化编译 jenkins 是一个开源的自动化服务器,可以用于自动化编译、测试、部署和发布软件。Node.js 是一个基于 Chrome V8 JavaScript 引擎的 JavaScript 运行环境,常用于开发服务器端...

    Git+Jenkins基本使用资源

    Git 用于管理软件开发中的代码版本,而 Jenkins 则是自动化流程的平台,尤其适用于构建、测试和部署项目。 ### Git 知识点 1. **版本控制**:Git 是一个分布式版本控制系统,它记录了代码的所有变更历史,允许...

    git-maven-nexus-hudson使用手册

    结合Git使用,可以实现自动化构建和部署,提高开发效率。 ##### Nexus作为中央仓库 **Nexus**是Sonatype公司提供的一款开源仓库管理器,它可以作为本地或远程Maven仓库的代理,帮助团队统一管理依赖库,提高构建...

    docker集成安装maven-tomcat-git-jdk-redis-jenkins注意jdk另外下载添加进包内

    注意jdk另外下载添加进包内jdk-8u191-linux-x64.tar 或者下载其他版本修改dockerfile文件中jdk名称即可(linux)

    docker-jenkins-jdk:为JDK和Maven配置的启动的Docker映像规范

    Docker为jenkins映像构建信息,可用于java / maven项目。 基于。 请参阅上面的有关自定义此映像的文档以及 。 该映像设置了JDK 7和8(使用OpenJDK)以及Maven版本3.1.1、3.2.5和3.3.3。 用法 使用此映像启动一个...

    Bat中实现git和Maven环境变量检测,拉取git代码并打包maven项目,读取子目录差异性yml文件配置并打包tar.gz

    Bat中实现git和Maven环境变量检测,拉取git代码并打包maven项目,读取子目录差异性yml文件配置并根据选择项调用7zip打包成tar.gz包(获取时间戳截取命名) Docker+Jenkins+Pipline实现SpringBoot项目input选择不同...

    手把手图解,详解Jenkins ,svn ,maven 项目持续集成 SHELL 脚本

    2. **构建自动化**:Maven负责编译、测试、打包项目,Jenkins调用Maven插件执行这些任务。 3. **脚本辅助**:SHELL脚本用于处理Jenkins不能直接完成的工作,比如环境准备、数据备份等。 4. **错误检测与报告**:集成...

    4.Jenkins持续集成Maven讲解

    本讲解将深入探讨如何在Jenkins中集成Maven,以实现自动化构建和测试。 一、Jenkins简介 Jenkins是一个用Java编写的开源持续集成工具,提供了一个友好的Web界面,用于配置和执行各种自动化任务,如编译、单元测试、...

    docker-compose 部署jenkins

    docker-compose 部署jenkins 内部已经安装 git maven node docker 等环境

Global site tag (gtag.js) - Google Analytics