资讯专栏INFORMATION COLUMN

hudson +gradle+git+maven(非必选)持续集成一 打包自动化

xietao3 / 3463人阅读

摘要:持续集成正是针对这一类问题的一种软件开发实践。持续集成的原则业界普遍认同的持续集成的原则包括需要版本控制软件保障团队成员提交的代码不会导致集成失败。

第一集 hudson+gradle+git+maven(非必选)持续集成编译,打包,发布到仓库集成

前言 什么是持续集成

随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。

持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
持续集成的核心价值在于:

1 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
2 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
3 持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。

持续集成的原则

业界普遍认同的持续集成的原则包括:

1)需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有Subversion Git 等;

2)开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;

3)需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;

4)必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建。

持续集成系统的组成

由此可见,一个完整的构建系统必须包括:

一个自动构建过程,包括自动编译、分发、部署和测试等。

一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。

一个持续集成服务器。本文中介绍的 Jenkins /Hudson 就是一个配置简单和使用方便的持续集成服务器。

实战

准备工作(centos 7 为例)

下载安装

Hudson(戳一下进入官网)是一款轻量级、易扩展、易配置的持续集成平台,该集成平台maven2有良好的支持,并且扩展插件丰富,包括findbug,PMD静态分析插件、emma单元测试覆盖率插件、junit测试报告插件等等。
下面我们以Hudson持续集成平台为例,主要讲解怎么安装hudson和hudson扩展插件的使用,并以maven2工程为例,建立新作业。

启动方式一

    nohup java -jar hudson-1.398.war >  hudson.log 2>&1 & // 启动hudson

启动方式二

下载Hudson的war包,http://hudson-ci.org/ 在tomcat环境里,在confCatalinalocalhost 中新建配置文件hudson.xml,配置如下


   

HudsonPath为hudson.war的目录路径。
启动tomcat,访问http://localhost:8080/hudson便能访问我们的持续集成应用了。Jboss环境中,复制war包到default目录下即可。如下为安装好以后的hudson访问界面。

安装插件

系统管理选择管理插件


根据自己项目需要选择需要安装的插件,当然hudson也支持自己开发插件上传,这里就不赘述。

系统配置

系统管理中进入系统设置


由于使用了gradle进行打包,上一步已经安装好了ant和gradle的插件。不过前提是安装好了jdk,git,gradle等的运行环境。具体怎么安装这里也不赘述,你可以去去问GG(google)

新建任务(job)

这里讲解两种,在我们的项目中也是有两种包,一种是jar包,也就是一些基础jar包,需要提供给其它项目使用。
另一种是服务包(tar),里面有4种内容,配置文件,自身的jar包,依赖的libs包,和相关的脚本(gradle和启服停服脚本)

基础的jar包(举例)

配置job明细如下:

配置任务信息

配置脚本

由于每次发布jar到maven私服需要手动打开Nexus移除陈旧的jar包,这样比较耽误时间,这里补充一个shell脚本配置方式,在每次打发布jar包前,将maven私服中对应的jar包移除掉,再执行打包发布.配置如下:


[注意:这里是hudson和maven私服是在同一个服务器上,如果不是得需ssh上去进行相应的操作]

拉取最新的代码到本地仓库,配置如下:


[注意:/fishsaying/admin/code_server.txt这个文件是用来配置需要打包的代码的分支 配置好的效果如图所示]

git仓库配置

需要将远程仓库的代码克隆到本地服务器,如/fishsaying/build_dir/sys
编写脚本获取需要动态选择的分支的最新代码到本地 代码如下

gradle脚本编写

利用groovy语音编写,不会的小伙伴可以学习一下这个在安卓开发中常用
build.gradle脚本文件如下

apply plugin: "java"
apply plugin: "maven-publish"

// 设置 JDK 版本
sourceCompatibility = 1.8
targetCompatibility = 1.8
//打包的版本
def _version = System.properties["version"];

// 设置编译使用utf-8编码
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
//maven仓库地址
repositories {
    maven {
        url "http://192.168.3.108:8081/nexus/content/groups/public/"
    }
}
//依赖的第三方jar包
dependencies {
compile "com.fasterxml.jackson.core:jackson-annotations:2.4.0",
"com.fasterxml.jackson.core:jackson-core:2.3.3",
"com.fish.saying:fishsaying-log-sdk:2.0.0"
testCompile "junit:junit:3.8.1"
}
//说明打包成jar文件
task apiJar(type: Jar) {
    baseName "fishsaying"
    from sourceSets.main.output
}
//推送到maven私服 设置好骨架
publishing {
    publications {
        api(MavenPublication) {
            groupId "com.fs.fishsaying-service-api"
            artifactId "fishsaying-service-api"
            version _version
            from components.java
        }
    }
}
//制定需要deploy的maven仓库地址
publishing {
    repositories {
        maven {
            url "http://192.168.3.108:8081/nexus/content/repositories/thirdparty/"
            credentials {
                username "admin"
                password "admin123"
            }
        }
    }
}

补充:如何搭建maven私服请google这里不再赘述。
整个流程做完就可以进行打包工作,这里选择的是手动打包,持续集成中的第一步完成,后续增加自动部署,测试,上线的内容,敬请期待……^_^

小福利:持续集成

小福利:推荐一部美剧 《硅谷黑历史》 为什么?因为里面的程序员哥们也是用的这个工具hudson 点击下载 ……^_^

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64822.html

相关文章

  • hudson+gradle+git+maven(必选)持续集成 (二)

    摘要:第二集非必选持续集成编译打包部署到线上环境集成前言在持续集成第一集中讲解了关于如果编译,打包,发布包到私服。在下面一集中,也就是第二集中,开始讲解如何持续集成可运行的服务包到测试和正式环境。 第二集 hudson+gradle+git+maven(非必选)持续集成编译,打包,部署到线上环境集成 前言 在持续集成第一集中,讲解了关于如果编译,打包,发布jar包到maven私服。在下面一集...

    william 评论0 收藏0
  • Docker容器系列教程(三):jenkins环境搭建与插件安装

    摘要:本文将使用这些命令搭建一个持续集环境,解决不能联网的问题来安装各种常用插件。总结通过本章学习,你已经知道了基于如何在环境下搭建环境,并创建一个项目。以为基础框架,为数据访问层,为权限授权层,对常用数据进行缓存,基于构建的作为前端框架。 回顾:上一文对Docker常用的命令以罗列的方式做了一个详尽的介绍。本文将使用这些命令搭建一个jenkins持续集环境,解决jenkins不能联网的问题...

    vvpvvp 评论0 收藏0
  • Java软件架构师需要掌握的开源工具

    摘要:软件架构师需要掌握的开源工具的是当前敏捷开发领域最重要的工具之一。主要用于持续自动地构建测试软件项目,如与。监控一些定时执行的任务。是应用程序最好的软件测试框架之一。是一种自由和开放源码的类操作系统 Java软件架构师需要掌握的开源工具1. JIRAAtlassian的JIRA是当前敏捷开发领域最重要的工具之一。它用于错误...

    genefy 评论0 收藏0
  • 使用 DaoCloud 与 FIR.im 为 CodingAndroid 项目开启持续集成的尝试

    摘要:所以一直没能把持续集成搞起来。后来接触到,所以尝试了一下把持续集成搭建在上了,通过下面这几步就可以实现项目有新的提交后自己编译发布测试包到上了。 由于本人精力有限,如果内容有更新可能无法及时更新其他渠道的内容,请移步简书 查看文章 由于之前公司项目一直迭代速度很快,几乎隔几天就需要发布测试包给同事们进行测试,所以希望把打包Apk这个工作交给机器来做,然后就尝试了几种持续集成的方案,最常...

    renweihub 评论0 收藏0

发表评论

0条评论

xietao3

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<