国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

hudson+gradle+git+maven(非必選)持續集成 (二)

william / 2462人閱讀

摘要:第二集非必選持續集成編譯打包部署到線上環境集成前言在持續集成第一集中講解了關于如果編譯,打包,發布包到私服。在下面一集中,也就是第二集中,開始講解如何持續集成可運行的服務包到測試和正式環境。

第二集 hudson+gradle+git+maven(非必選)持續集成編譯,打包,部署到線上環境集成

前言

在持續集成第一集中,講解了關于如果編譯,打包,發布jar包到maven私服。在下面一集中,也就是第二集中,開始講解
如何持續集成可運行的服務包到測試和正式環境。

實戰 第一步 準備工作

進入hudson Jobs Status 主頁,如圖所示:

這里我以用戶登陸服務作為例子進行操作講解,如圖所示:

點擊Console -> 再點擊左側菜單的Configure Job 進入Job Configurations主頁
圖1

圖2

圖3

接下來也就是重點了,結合腳本一一講解整個服務包(tar包)如何生成并且上傳線上服務器

第二步 具體參數配置

[特別注意:下面配置的參數前面4個需要結合最后貼出的gradle腳本一起使用,參數是傳遞給gradle腳本使用的。]

1.配置代碼的git分支參數

2.配置打包存放的目錄參數

3.配置當前打包的版本參數

4.設置打包時是否要加入第三方jar包

5.設置需要打包的類型

6.設置需要部署的服務器參數

第三步 配置git倉庫最新代碼的shell腳本

配置bulid的腳本 這里的腳本主要是獲取git倉庫中的最新代碼,操作如下:

第四步 配置gradle打包的腳本文件

第五步 配置讀取打包類型和執行部署shell,python腳本

[補充:具體如何調用python以及如何編寫python這里就不貼出來了,可以去問Google哦]

最后 gradle 登場

gradle腳本代碼,供參考哦

apply plugin: "java"
apply plugin: "eclipse"

version = "1.0"

// 定義發布包的路徑
def releaseDir = System.properties["deployToDir"]
def gitBranch = System.properties["gitBranch"];
def myZipName = gitBranch.replace("/","-") + "-" + new Date().getTime();
def bigVer = System.properties["bigVer"];
def isCommonLibs = System.properties["commonLibs"];
// 設置 Java 源碼所在目錄
sourceSets.main.resources.srcDirs "config"

// 設置 JDK 版本
sourceCompatibility = 1.8
targetCompatibility = 1.8

// 設置編譯使用utf-8編碼
tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}
//maven倉庫地址
repositories {
    maven {
        url "http://ip:8081/nexus/content/groups/public/"
    }
}
// 依賴jar包
dependencies {
    compile "commons-logging:commons-logging:1.1.1", 
            "org.javassist:javassist:3.20.0-GA",  
            "log4j:log4j:1.2.15",
            "org.springframework:spring-core:4.2.1.RELEASE",
            "org.springframework:spring-context:4.2.1.RELEASE",
            "org.slf4j:slf4j-api:1.7.6",
            "org.slf4j:slf4j-log4j12:1.6.1",
            "com.fs.fishsaying-service-api:fishsaying-service-api:0.0.2",
            "com.google.guava:guava:18.0",
            "com.fs.common:fs-common-service:0.0.1",
            "commons-io:commons-io:2.4",
            "org.jboss.resteasy:resteasy-netty4:3.0.12.Final",
            "org.jboss.resteasy:resteasy-guice:3.0.12.Final",
            "org.apache.commons:commons-lang3:3.4",
            "com.fs.fs-common-db:fs-common-db:0.0.1",
            "com.eclipse.java:javax-persistence:2.1.0",
            "org.msgpack:msgpack:0.6.12",
            "redis.clients:jedis:2.7.3",
            "mysql:mysql-connector-java:5.1.36",
            "com.eclipse.java:eclipselink:2.6.0",
            "org.jboss.resteasy:resteasy-jackson-provider:2.3.5.Final",
            "io.netty:netty-all:4.0.31.Final",
            "com.fishsaying:common-pool3:0.0.1",
            "com.google.code.gson:gson:2.2.2",
            "com.fasterxml.jackson.core:jackson-annotations:2.6.3", 
            "com.fasterxml.jackson.core:jackson-core:2.6.3",
            "org.mongodb:mongodb-driver:3.0.4",
            "org.elasticsearch:elasticsearch:2.0.0",
            "com.fasterxml.jackson.core:jackson-databind:2.5.3",
            "com.aliyun.oss:oss:2.0.5",
            "sun.misc.BASE64Decoder:BASE64Decoder:1.0",
            "org.jboss.resteasy:resteasy-multipart-provider:2.3.1.GA",
            "net.sf.oval:oval:1.85",
            "com.aliyun.taobao:taobao-sdk:0.0.1",
            "com.aliyun.trance:aliyun-sdk:0.0.1",
            "com.alibaba:fastjson:1.2.4",
            "javax.mail:mail:1.4.7",
            "cn.jpush.api:jpush-client:3.2.8",
            "org.apache.httpcomponents:httpclient:4.5.1",
            "com.fish.saying:fishsaying-log-sdk:2.0.0",
            "org.quartz-scheduler:quartz:2.2.1",
            "org.quartz-scheduler:quartz-jobs:2.2.1"

    compile ("com.alibaba:dubbo:2.8.4") {
        exclude group:"org.springframework", module: "spring-aop"
    }  
    compile ("com.alibaba:dubbo:2.8.4") {
        exclude group:"org.springframework", module: "spring-expression"
    }  
    compile ("com.alibaba:dubbo:2.8.4") {
        exclude group:"org.springframework", module: "spring-web"
    }  
    compile ("com.alibaba:dubbo:2.8.4") {
        exclude group:"org.springframework", module: "spring-beans"
    }       
    compile ("com.alibaba:dubbo:2.8.4") {
        exclude group:"org.springframework", module: "spring-core"
    }       
    compile ("com.alibaba:dubbo:2.8.4") {
        exclude group:"org.springframework", module: "spring-context"
    }  
    compile ("com.alibaba:dubbo:2.8.4") {
        exclude group:"org.apache.httpcomponents", module: "httpcore"
    }
    compile ("com.alibaba:dubbo:2.5.3") {
        exclude group:"org.springframework", module: "spring"
    } 
    compile ("com.alibaba:dubbo:2.5.3") {
        exclude group:"org.jboss.netty", module: "netty"
    } 
    compile ("org.apache.zookeeper:zookeeper:3.4.5") {
        exclude group:"org.jboss.netty", module: "netty"
    }     
    compile ("com.101tec:zkclient:0.6") {
        exclude group:"com.101tec", module: "netty"
    } 
    
    testCompile "junit:junit:3.8.1"
}

jar {
    exclude("app.properties","appContext.xml"
            ,"deploy.properties","deploy.properties.temp"
            ,"log4j.properties","provider.xml")
    manifest {
        attributes "Implementation-Title": "魚說應用", "Implementation-Version": version
        attributes "Main-Class": "com.fs.FishApp"
    }
}

uploadArchives {
    repositories {
        flatDir {
            dirs releaseDir+"fs_libs"
        }
    }
}

uploadArchives.doFirst {
    def destination = file(releaseDir)
    if(destination.exists()){
        destination.deleteDir();
    }
}
//gradle任務
task copyCommonLibs(type: Copy) {
    dependsOn uploadArchives
    from configurations.compile
    into releaseDir+"libs"
    exclude "spring-2.5.6*.jar"
}

task deleteOtherLibs(type: Copy) {
    dependsOn copyCommonLibs
    delete fileTree(dir: releaseDir+"libs"
    , exclude: ["fs-common-service-0.0.1.jar","fishsaying-service-api-0.0.2.jar","fs-common-db-0.0.1.jar"])
}
// 拷貝配置文件
task copyAppConfig(type: Copy) {
    dependsOn deleteOtherLibs
    from sourceSets.main.resources.srcDirs
    into releaseDir+"config"
    exclude "deploy.properties","META-INF","appContext.xml"
}
// 拷貝啟動相關的shell
task copyShell(type: Copy) {
    dependsOn copyAppConfig
    from project.projectDir
    into releaseDir
    include "*.sh"
}

copyShell << {
    def destination = file(releaseDir+"logs/")
    destination.mkdirs();
}
// 壓縮任務
task zipApp(type: Tar) {//Zip
    dependsOn copyShell
    baseName = "fs-login-"+myZipName
    from releaseDir
}

deleteOtherLibs.onlyIf {
  isCommonLibs.equals("false")
}

持續集成部署就是這樣的一套操作流程,當然還有很多的要完善的地方,這里只是講解了如何搭建這套工具平臺。接下來會不斷優化并且會加入服務端自動化單元測試,敬請期待第三集哈...thx ^_^

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64850.html

相關文章

  • hudson +gradle+git+maven(必選)持續集成一 打包自動化

    摘要:持續集成正是針對這一類問題的一種軟件開發實踐。持續集成的原則業界普遍認同的持續集成的原則包括需要版本控制軟件保障團隊成員提交的代碼不會導致集成失敗。 第一集 hudson+gradle+git+maven(非必選)持續集成編譯,打包,發布到倉庫集成 前言 什么是持續集成 隨著軟件開發復雜度的不斷提高,團隊開發成員間如何更好地協同工作以確保軟件開發的質量已經慢慢成為開發過程中不可回避的...

    xietao3 評論0 收藏0
  • Docker容器系列教程(三):jenkins環境搭建與插件安裝

    摘要:本文將使用這些命令搭建一個持續集環境,解決不能聯網的問題來安裝各種常用插件??偨Y通過本章學習,你已經知道了基于如何在環境下搭建環境,并創建一個項目。以為基礎框架,為數據訪問層,為權限授權層,對常用數據進行緩存,基于構建的作為前端框架。 回顧:上一文對Docker常用的命令以羅列的方式做了一個詳盡的介紹。本文將使用這些命令搭建一個jenkins持續集環境,解決jenkins不能聯網的問題...

    vvpvvp 評論0 收藏0
  • 使用 DaoCloud 與 FIR.im 為 CodingAndroid 項目開啟持續集成的嘗試

    摘要:所以一直沒能把持續集成搞起來。后來接觸到,所以嘗試了一下把持續集成搭建在上了,通過下面這幾步就可以實現項目有新的提交后自己編譯發布測試包到上了。 由于本人精力有限,如果內容有更新可能無法及時更新其他渠道的內容,請移步簡書 查看文章 由于之前公司項目一直迭代速度很快,幾乎隔幾天就需要發布測試包給同事們進行測試,所以希望把打包Apk這個工作交給機器來做,然后就嘗試了幾種持續集成的方案,最常...

    renweihub 評論0 收藏0
  • Java軟件架構師需要掌握的開源工具

    摘要:軟件架構師需要掌握的開源工具的是當前敏捷開發領域最重要的工具之一。主要用于持續自動地構建測試軟件項目,如與。監控一些定時執行的任務。是應用程序最好的軟件測試框架之一。是一種自由和開放源碼的類操作系統 Java軟件架構師需要掌握的開源工具1. JIRAAtlassian的JIRA是當前敏捷開發領域最重要的工具之一。它用于錯誤...

    genefy 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<