持续集成框架jenkins介绍02-持久集成git仓库+maven项目
2017-11-07 20:09
597 查看
一。 git代码管理
一般使用jenkins集成时jenkins需要从代码仓库中抓取源代码进行编译打包运行等 这里的仓库可以使用svn或者git 我这里使用git
代码开发 使用eclipse git远程服务器使用gitblit(参考http://blog.csdn.net/liaomin416100569/article/details/78466294 章节2 第三方git服务器)
gitblit默认的账号和密码时admin和admin gitblit下创建一个版本库 jk
eclipse下创建maven项目(jar项目)jk 我这里简易使用springboot发布一个helloworld的web程序
pom.xml配置为:
添加一个主类(发布一个rest服务)用于运行
添加当前项目的本地仓库 关联到远程仓库 从gitblit上拷贝git的http地址(http://admin@192.168.58.150:8080/gitblit-1.8.0/r/jk.git)
添加当前项目本地仓库 过程如下
本地仓库关联到远程仓库
提交代码到远程仓库
查看gitblit发现内容已经提交
二。jenkins集成
jekins配置从git仓库抓取源码 同时使用maven进行打包 使用java命令运行
jekin安装过程 参考http://blog.csdn.net/liaomin416100569/article/details/78431720
登录jeken配置 jdk和maven和git环境
假设我的jdk,maven,git 已经下载安装好
1》配置环境
点击左侧菜单 系统管理->点击Global Tool Configuration
界面上添加 JAVA_HOME路径 git执行命令
同一页面滚动到下面设置maven
2》配置用于连接git的用户名密码信息
点击左侧菜单的Credentials 新增一个登陆的用户和密码
输入git的用户名和密码保存
3》创建构建项目
接下来 jenkins首页创建一个新任务. 输入项目名称 比如我的jk 选择构建一个自由风格的软件项目
以下介绍构建的几个面板数据的作用
Genernal配置 一般用于配置项目名称等信息 比如
源码管理配置 主要配置git仓库的位置 及选择之前设置的用户名密码信息
构建触发器 就是在什么时候触发构建 这里选择第一项(也就是在浏览器敲入 地址 JENKINS_URL/job/jk/build?token=run就可以触发构建)
构建 真实的代码编译运行的步骤 我这里需要执行两个步骤
源代码从git仓库下载后
需要首先maven打jar包
使用java -jar jar包来运行
构建是 存在一些内置的临时变量 使用 ${变量名} 获取 比如 拉取的git源码的工作目录是${WORKSPACE}
具体 可以点击右侧的 ?按钮跳转过去查看(http://192.168.58.150:8080/jenkins/env-vars.html/)
这里配置运行maven打包的jar包可谓一波三折
刚开始添加运行jar命令 是
后面想将这个命令 放到sh文件中去
在 /usr/share/tomcat/.jenkins/workspace/jk 新建文件jk_run.sh添加内容
需要在命令前添加一个变量 用于修改当前jk构建线程的id 才能不被杀掉 最后修改为
最后我的构建是:
配置好后 可以使用构建触发器指定的token(我上面填的token是run) 来触发一次构建了
在右侧点击项目名称进入 看到构建历史记录
点击这个历史记录 超链接进去 可以看到构建控制台输出 成功与否都可以从这里看到
我的控制台 出现了maven构建和我自己的脚本运行
构建成功后 linux查看查看
[root@node3 jk]# jps
7955 Jps
3173 Bootstrap
7865 jk-0.0.1-SNAPSHOT.jar我的springboot程序也可以通过浏览器访问
一般使用jenkins集成时jenkins需要从代码仓库中抓取源代码进行编译打包运行等 这里的仓库可以使用svn或者git 我这里使用git
代码开发 使用eclipse git远程服务器使用gitblit(参考http://blog.csdn.net/liaomin416100569/article/details/78466294 章节2 第三方git服务器)
gitblit默认的账号和密码时admin和admin gitblit下创建一个版本库 jk
eclipse下创建maven项目(jar项目)jk 我这里简易使用springboot发布一个helloworld的web程序
pom.xml配置为:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.et</groupId> <artifactId>jk</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>springboot具体参考官网(https://projects.spring.io/spring-boot/)
添加一个主类(发布一个rest服务)用于运行
package cn.hello; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @EnableAutoConfiguration public class HelloController { @RequestMapping("/") @ResponseBody String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { //System.setProperty("server.port","8889"); SpringApplication.run(HelloController.class, args); } }application.yml
server: port: 8888大致项目结构图解为:
添加当前项目的本地仓库 关联到远程仓库 从gitblit上拷贝git的http地址(http://admin@192.168.58.150:8080/gitblit-1.8.0/r/jk.git)
添加当前项目本地仓库 过程如下
本地仓库关联到远程仓库
提交代码到远程仓库
查看gitblit发现内容已经提交
二。jenkins集成
jekins配置从git仓库抓取源码 同时使用maven进行打包 使用java命令运行
jekin安装过程 参考http://blog.csdn.net/liaomin416100569/article/details/78431720
登录jeken配置 jdk和maven和git环境
假设我的jdk,maven,git 已经下载安装好
1》配置环境
点击左侧菜单 系统管理->点击Global Tool Configuration
界面上添加 JAVA_HOME路径 git执行命令
同一页面滚动到下面设置maven
2》配置用于连接git的用户名密码信息
点击左侧菜单的Credentials 新增一个登陆的用户和密码
输入git的用户名和密码保存
3》创建构建项目
接下来 jenkins首页创建一个新任务. 输入项目名称 比如我的jk 选择构建一个自由风格的软件项目
以下介绍构建的几个面板数据的作用
Genernal配置 一般用于配置项目名称等信息 比如
源码管理配置 主要配置git仓库的位置 及选择之前设置的用户名密码信息
构建触发器 就是在什么时候触发构建 这里选择第一项(也就是在浏览器敲入 地址 JENKINS_URL/job/jk/build?token=run就可以触发构建)
构建 真实的代码编译运行的步骤 我这里需要执行两个步骤
源代码从git仓库下载后
需要首先maven打jar包
使用java -jar jar包来运行
构建是 存在一些内置的临时变量 使用 ${变量名} 获取 比如 拉取的git源码的工作目录是${WORKSPACE}
具体 可以点击右侧的 ?按钮跳转过去查看(http://192.168.58.150:8080/jenkins/env-vars.html/)
这里配置运行maven打包的jar包可谓一波三折
刚开始添加运行jar命令 是
java -jar ${WORKSPACE}/target/jk-0.0.1-SNAPSHOT.jar结果发现 这个命令阻塞 jenkins的运行 所以构建一直不完成 这种shell不行 后面使用 nohup或者setsid
nohup java -jar ${WORKSPACE}/target/jk-0.0.1-SNAPSHOT.jar >${WORKSPACE}/target/myjar.log 2>&1 &结果发现 只要有 >符号出现在命令中 都直接不执行
后面想将这个命令 放到sh文件中去
在 /usr/share/tomcat/.jenkins/workspace/jk 新建文件jk_run.sh添加内容
nohup java -jar ${WORKSPACE}/target/jk-0.0.1-SNAPSHOT.jar >${WORKSPACE}/target/myjar.log 2>&1 &命令行就执行这个文件
sh ${WORKSPACE}/jk_run.sh发现执行后的java进程被 jenkins给干掉了 后面看了官网(https://wiki.jenkins.io/display/JENKINS/ProcessTreeKiller)
需要在命令前添加一个变量 用于修改当前jk构建线程的id 才能不被杀掉 最后修改为
BUILD_ID=dontKillMe sh ${WORKSPACE}/jk_run.sh如果多次构建每次都启动 端口会被占用所以这里 构建启动之前先将该程序干掉 最终运行脚本就是
ps -ef | grep java | grep jk | awk '{system("kill -9 "$2)}' BUILD_ID=dontKillMe sh ${WORKSPACE}/jk_run.sh
最后我的构建是:
配置好后 可以使用构建触发器指定的token(我上面填的token是run) 来触发一次构建了
http://192.168.58.150:8080/jenkins/job/jk/build?token=run首页左下角看到构建执行状态 多出一行有进度条
在右侧点击项目名称进入 看到构建历史记录
点击这个历史记录 超链接进去 可以看到构建控制台输出 成功与否都可以从这里看到
我的控制台 出现了maven构建和我自己的脚本运行
Started by remote host 192.168.58.1 Building in workspace /usr/share/tomcat/.jenkins/workspace/jk > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url http://admin@192.168.58.150:8080/gitblit-1.8.0/r/jk.git # timeout=10 Fetching upstream changes from http://admin@192.168.58.150:8080/gitblit-1.8.0/r/jk.git > git --version # timeout=10 using GIT_ASKPASS to set credentials > git fetch --tags --progress http://admin@192.168.58.150:8080/gitblit-1.8.0/r/jk.git +refs/heads/*:refs/remotes/origin/* > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision f98704b5db306ac5e7cb9afa3390163d15768975 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f f98704b5db306ac5e7cb9afa3390163d15768975 Commit message: "jjjj" > git rev-list f98704b5db306ac5e7cb9afa3390163d15768975 # timeout=10 [jk] $ /soft/apache-maven-3.0.4_localtest/bin/mvn -f pom.xml package [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building jk 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ jk --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ jk --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ jk --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /usr/share/tomcat/.jenkins/workspace/jk/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ jk --- [INFO] No sources to compile [INFO] [INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ jk --- [INFO] No tests to run. [INFO] [INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ jk --- [INFO] Building jar: /usr/share/tomcat/.jenkins/workspace/jk/target/jk-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- spring-boot-maven-plugin:1.5.8.RELEASE:repackage (default) @ jk --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.800s [INFO] Finished at: Tue Nov 07 03:53:24 PST 2017 [INFO] Final Memory: 15M/36M [INFO] ------------------------------------------------------------------------ [jk] $ /bin/sh -xe /var/cache/tomcat/temp/jenkins5793360651956692863.sh + BUILD_ID=dontKillMe + sh /usr/share/tomcat/.jenkins/workspace/jk/jk_run.sh Finished: SUCCESS
构建成功后 linux查看查看
[root@node3 jk]# jps
7955 Jps
3173 Bootstrap
7865 jk-0.0.1-SNAPSHOT.jar我的springboot程序也可以通过浏览器访问
相关文章推荐
- 持续集成工具集之四 Jenkins+Maven+Git+Tomcat 项目构建和自动部署
- 【转载】Maven安装配置+ GIt&SVN + Jenkins详细配置 软件项目管理 持续集成实验
- Git+Spring-boot+Docker+ Maven +Registry私有仓库 +jenkins 持续集成测试
- ubuntu下构建jenkins- maven - git 持续集成项目管理
- 持续集成工具集之四 Jenkins+Maven+Git+Tomcat 项目构建和自动部署
- 持续集成框架,自动部署服务搭建jenkins+maven+svn(git)+shell
- 「Jenkins+Git+Maven+Shell+Tomcat持续集成」经典教程
- 软件项目管理(二)——用jenkins持续集成、Maven、Github的使用
- 老李分享:持续集成学好jenkins之Git和Maven配置
- 持续集成:Jmeter+Maven+Jenkins自动化框架搭建(四):GitLab代码更新触发Jenkins自动构建
- Jenkins+Git+maven搭建持续集成环境
- Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记
- 老李分享:持续集成学好jenkins之Git和Maven配置
- Jenkins+maven+git+sonar 系统持续集成&代码单測管理
- Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记 - passover【毕成功的博客】 - 51CTO技术博客
- 项目持续集成环境(jenkins + SVN + maven + tomcat)
- 自动化集成项目 jenkins+git+maven+tomcat
- Jenkins_Maven_Git 持续集成及自动化部署 GentOS版
- 【搭建git+maven+jenkins持续集成环境】[一] 搭建git服务器
- Jenkins+Maven+Git搭建持续集成和自动化部署