摘要:第二集非必選持續集成編譯打包部署到線上環境集成前言在持續集成第一集中講解了關于如果編譯,打包,發布包到私服。在下面一集中,也就是第二集中,開始講解如何持續集成可運行的服務包到測試和正式環境。
第二集 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(非必選)持續集成編譯,打包,發布到倉庫集成 前言 什么是持續集成 隨著軟件開發復雜度的不斷提高,團隊開發成員間如何更好地協同工作以確保軟件開發的質量已經慢慢成為開發過程中不可回避的...
摘要:本文將使用這些命令搭建一個持續集環境,解決不能聯網的問題來安裝各種常用插件??偨Y通過本章學習,你已經知道了基于如何在環境下搭建環境,并創建一個項目。以為基礎框架,為數據訪問層,為權限授權層,對常用數據進行緩存,基于構建的作為前端框架。 回顧:上一文對Docker常用的命令以羅列的方式做了一個詳盡的介紹。本文將使用這些命令搭建一個jenkins持續集環境,解決jenkins不能聯網的問題...
摘要:所以一直沒能把持續集成搞起來。后來接觸到,所以嘗試了一下把持續集成搭建在上了,通過下面這幾步就可以實現項目有新的提交后自己編譯發布測試包到上了。 由于本人精力有限,如果內容有更新可能無法及時更新其他渠道的內容,請移步簡書 查看文章 由于之前公司項目一直迭代速度很快,幾乎隔幾天就需要發布測試包給同事們進行測試,所以希望把打包Apk這個工作交給機器來做,然后就嘗試了幾種持續集成的方案,最常...
摘要:軟件架構師需要掌握的開源工具的是當前敏捷開發領域最重要的工具之一。主要用于持續自動地構建測試軟件項目,如與。監控一些定時執行的任務。是應用程序最好的軟件測試框架之一。是一種自由和開放源碼的類操作系統 Java軟件架構師需要掌握的開源工具1. JIRAAtlassian的JIRA是當前敏捷開發領域最重要的工具之一。它用于錯誤...
閱讀 2166·2021-10-08 10:15
閱讀 1194·2019-08-30 15:52
閱讀 523·2019-08-30 12:54
閱讀 1541·2019-08-29 15:10
閱讀 2693·2019-08-29 12:44
閱讀 3015·2019-08-29 12:28
閱讀 3362·2019-08-27 10:57
閱讀 2222·2019-08-26 12:24