持续集成框架jenkins介绍02-持久集成git仓库+maven项目
一。 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配置为:
<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("/")@ResponseBodyString 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介绍02-持久集成git仓库+maven项目相关推荐
- Jenkins——持续集成及Jenkins介绍和安装配置(插件,用户权限,凭据,Maven安装打包,配置tomcat用户权限)
持续集成及Jenkins介绍和安装配置 持续集成及Jenkins介绍 软件开发生命周期 持续集成 持续集成的组成要素 持续集成的好处 Jenkins介绍 Jenkins安装和持续集成环境配置 Gitl ...
- 持续集成工具Jenkins学习4 Idea集成Jenkins插件
持续集成工具Jenkins学习4 Idea集成Jenkins插件 一.功能简介 二.安装Idea插件 1. 搜索安装 2. 设置 三.Jenkins开启CSRF 四.使用 一.功能简介 Idea可以方 ...
- Jenkins骚操作第四章构建maven项目和Pipeline流水线项目构建
文章目录 Jenkins构建Maven项目 1.Jenkins项目构建类型-自由风格项目构建 1.1.拉取代码 1.2.编译打包 1.3.部署 2.Jenkins项目构建类型(3)--Maven项目构 ...
- 【Jenkins】解决检出git仓库时报错Caused by: java.io.IOException: Cannot run program “git“
Jenkins中配置从一个win7的slave节点检出git仓库时报如下错误: git init E:\jenkins\workspace\Git-backup # timeout=10 ERROR: ...
- 持续集成部署Jenkins工作笔记0007---配置JDK和Maven并安装Deploy插件
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 安装完以后 点击全局安全配置 点击选上,允许用户注册 授权策略写上,任何用户可以做任何事 保存
- Jenkins——Jenkins介绍+基于云平台的Jenkins安装和持续集成环境配置(插件+用户权限+凭据+Maven打包)
Jenkins--Jenkins介绍+基于云平台的Jenkins安装和持续集成环境配置(插件+用户权限+凭据+Maven打包) 持续集成及Jenkins介绍 软件开发生命周期 什么是持续集成? 持续集 ...
- 持续集成平台Jenkins配置方法介绍
持续集成(Continuous integration,CI)是软件开发和发布流程中最重要的组成部分,有利于加快开发进度.Jenkins是常用的持续集成管理工具,本文将简要介绍Jenkins持续集成工 ...
- 【云原生 • DevOps】一文掌握持续集成工具 Jenkins
目录 一.持续集成工具 Jenkins 介绍 1. 什么是持续集成 2. Jenkins 介绍 二.Jenkins 的安装与部署 1. 安装 Jenkins 2. 本地访问 Jenkins 3. 插件 ...
- 新版发布:大数据应用开发管理集成框架DataSphere Studio 1.1.0
DataSphereStudio1.1.0 是践行数据应用开发管理框架的里程碑,集成了 WeDataSphere 已开源的所有生态组件,并带来了一系列强大的全新特性,以及更加精简.易于对接的数据应用开 ...
最新文章
- VTK:Utilities之ArrayCalculator
- php动态渲染和静态渲染,php,vue,vue-ssr 做出来的页面有什么区别?
- 将权限授予文件夹和程序集
- java 视图对象转换_java-如何从onItemSelected()方法返回的视图对象...
- C++/C--相对路径与绝对路径【转载】
- java客户端实验_java实验(客户端) 2015106宋世超
- 零基础转行网络安全可以做什么工作
- 均值(average)与期望(mean)
- Eclipse - 取消英文拼写检查
- 《中国睡眠研究报告2022》:被调查大学生睡前不看手机的不足3%
- python办公自动化 使用openpyxl合并excel表格
- android单机斗地主,单机斗地主最新安卓版
- Java岗面试题--Java基础(日积月累,每日三题)
- 基于 SPICE 协议的硬编推流整合方案在云游戏中的应用
- 计算机为什么要学16进制,为什么人们通常用十六进制而不是二进制写计算机
- React学习总结(一)
- 快速搭建小程序,实现线上引流获客
- TexturePacker 自定义模板
- JS事件详解和js事件委托
- Android,通讯录导入,contacts,联系人