Android Jenkins+gradle+git自动化构建并生成二维

来源:互联网 发布:知乎抄袭quora 编辑:程序博客网 时间:2024/06/05 07:09

      Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

      网上有很多jenkins的介绍与其他博客写的自动化构建,我现在也整理一套自己摸索来的Android的自动构建流程。

      先上图提供我搭建好的jenkins.


这是我搭建好后跑通的jenkins;

现在讲下怎么搭建:

一、准备工作

1、下载Android SDK(如果你是Android开发的就不需要下载了直接使用你自己开发环境中的sdk,我就是用的自己的)

2、下载JDK版本

3、下载gradle版本

4、下载git

5、下载tomcat版本

6、下载jenkins


下载的工作完成后就是进行安装了

二、安装与配置

先说下环境变量设置位置(如果是开发人员自己都知道,不是程序员就看下面的图,实在不清楚就问开发人员同事了)


1》Android SDK不需要安装,下载下来解压放入任意的文件中好了(看自己喜好了);

环境变量了:

1、在环境变量用户变量选择新建一个ANDROID_HOME的变量名,变量值填写SDK解压后的文件路径

2、在系统变量中找到Path进行编辑,在Path后面加上SDK路径:;%ANDROID_HOME%\platform-tools;(注意分号需要是英文下的);配置好 后在cmd中打adb不报错就说明配置成功。

2》JDK下载后双击安装,一直点击下一步直到安装完。

环境变量了:

1、在环境变量用户变量选择新建一个JAVA_HOME的变量名,变量值填写JDK安装文件路径

2、在系统变量中找到Path进行编辑,在Path后面加上SDK路径:;%JAVA_HOME%\bin;(注意分号需要是英文下的);配置好 后在cmd中打JAVA不报错就说明配置成功。

3》gradle下载解压就好

4》下载git安装后配置环境变量

5》tomcat下载后双击安装,一直下一步就好

6》jenkins下载后双击安装,安装完后,找到安装路径下的war文件,把war文件中的所有文件拷贝到Tomcat下的webapps文件中新创建文件夹Jenkins中

配置到这个时候就可以使用了,开启Tomcat(在Tomcat中bin文件下的startup.bat开启,stutdown.bat关闭),在到浏览器中输入http://localhost:8080/Jenkins就可以进入了。到现在可以就可以只需要创建用户名及密码进入Jenkins界面了,这里就不详细讲创建账号了,非常简单。进入的界面:


看到这个界面是不是有点小激动啊,感慨终于配置进入了,但是进入这个页面还不算成功。


三、进入JenKins配置

1、需要下载JenKins中的一些插件;(点击系统管理->点击管理插件进入页面后在点击可选插件)


在进入可选插件后选择安装自己需要的插件:

 1.Branch API Plugin

2.build timeout plugin

3.build-name-setter

4.Credentials Binding Plugin

5.description setter plugin

6.Dynamic Parameter Plug-in

7.Environment Injector Plugi

8.Git plugin

9.GIT server Plugin

10.Gradle Plugin

11.Git Parameter Plug-In

12.Pipeline: Basic Steps

13.Pipeline: Build Step

14.Pipeline: Input Step

15.Pipeline: Nodes and Processes

16.Pipeline: Stage Step

17.Scriptler

18.Workspace Cleanup Plugin

19.Post-Build Script Plug-in

20.Email Extension Plugin

21.SSH Slaves plugin

22.Timestamper

这里我提供我安装后的插件图

2、插件安装完后,在进行系统配置(系统管理->Global Tool Configuration 进入配置页面)

我这边用到了git与Gradle,所以我就配置了这2个,如果你用到别的就自己在进行配置好了我这边没做也不进行讲。配置就是更加你git与Gradle的位置。

配置完就可以进行创建构建了。

3、创建构建(点击创建进入创建构建页面)


创建时命一个构建名称,选择一项(我这边是自由风格的软件项目,这样可以自己调整),在点击OK就进入配置页面;

4、构建配置页面(先提供我这边的配置页面图给大家看下在进行讲。其实看了图大家基本就知道怎么配置了)








这些就是我这边在构建中配置信息;

1>参数化构造过程(这里主要是动态版本号与渠道的修改),如果你没有特殊要求可以按照我的填写。BUILD_TYPE选择构建正式版本还是参数版本;PRODUCT_FLAVOR这个现在构建的渠道;VERSION_CODE与VERSION_NAME填写构建项目的版本;IS_JENKINS这个是用于本地项目中判断是否使用的Jenkins来构建的,我这边默认勾选使用Jenkins就为true;BULD_PATE_JENKINS打包保存路径(可以不填默认在构建项目中);STORE_FILE打包需要秘钥(Android打包的密码,不是Android程序员的可以问开发人员)路径(如果你秘钥放在项目中就不需要)[注意:这里的name名称需要更你项目中gradle.properties文件一样的

#版本号VERSION_CODE=142VERSION_NAME=7.4.2#VERSION_NAME=6.9.8#VERSION_NAME=102#配置 debug = 测试  release = 生产BUILD_TYPE=debugPRODUCT_FLAVOR=googleAppIS_JENKINS=falseBUILD_PATH_LOCAL=E\:\\APK_ANDROID#key签名STORE_FILE=/Users/admin/Documents/springtour/springtour_release.keystore

还有你住项目中的build.gradle文件也需要修改,这里我给出我这边的代码

apply plugin: 'com.android.application'apply plugin: 'com.neenbedankt.android-apt'repositories {    jcenter()    mavenCentral()    flatDir {        dirs 'libs'    }}android {    aaptOptions.cruncherEnabled = false    aaptOptions.useNewCruncher = false    signingConfigs {        release {            storeFile file(STORE_FILE)            storePassword STORE_PASSWORD            keyAlias KEYALIAS            keyPassword KEY_PASSWORD        }        debug {            storeFile file(STORE_FILE)            storePassword STORE_PASSWORD            keyAlias KEYALIAS            keyPassword KEY_PASSWORD        }    }    compileSdkVersion COMPILE_SDK_VERSION as int    buildToolsVersion BUILD_TOOLS_VERSION    useLibrary 'org.apache.http.legacy'    dexOptions {        javaMaxHeapSize "4g"        preDexLibraries = false    }    defaultConfig {        multiDexEnabled true        applicationId "com.xxxxx.strip"        minSdkVersion MIN_SDK_VERSION as int        targetSdkVersion TARGET_SDK_VERSION as int        versionCode VERSION_CODE as int        versionName VERSION_NAME        signingConfig signingConfigs.release        ndk {            //设置支持的SO库架构            abiFilters 'armeabi', 'armeabi-v7a' //, 'x86', 'x86_64', 'arm64-v8a'        }    }    sourceSets {        main {            assets.srcDirs = ['assets']            jniLibs.srcDirs = ['libs']        }    }    buildTypes {        debug {            debuggable true            jniDebuggable false            signingConfig signingConfigs.debug            renderscriptDebuggable true            minifyEnabled true            zipAlignEnabled false//            proguardFile 'proguard-rules.pro'            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'        }        release {            debuggable false            jniDebuggable false            signingConfig signingConfigs.release            renderscriptDebuggable true            renderscriptOptimLevel 3            minifyEnabled true            pseudoLocalesEnabled false//            proguardFile 'proguard-project.txt'            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'            zipAlignEnabled true        }    }    lintOptions {        checkReleaseBuilds false        abortOnError true    }    packagingOptions {        exclude 'META-INF/LICENSE.txt'        exclude 'META-INF/NOTICE.txt'        exclude 'META-INF/NOTICE'        exclude 'META-INF/LICENSE'        exclude 'META-INF/DEPENDENCIES'    }    productFlavors {               AndroidApp {            manifestPlaceholders = [CHANNEL_NAME: "AndroidApp"]        }        googleApp {            manifestPlaceholders = [CHANNEL_NAME: "googleApp"]        }           }    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_7        targetCompatibility JavaVersion.VERSION_1_7    }//    dexOptions {//        incremental true//    }    //修改生成的apk名字    applicationVariants.all { variant ->        variant.outputs.each { output ->            if ("tour".equals(IS_JENKINS)) {                def oldFile = BUILD_PATH_LOCAL + "/" + variant.versionCode                def releaseApkName = "SpringTour-" + variant.productFlavors[0].name + "-" + variant.buildType.name + '.apk'                output.outputFile = new File(oldFile, releaseApkName)            } else {                def oldFile = output.outputFile                if (variant.buildType.name.equals('release')) {                    def releaseApkName = "SpringTour-" + variant.productFlavors[0].name + '.apk'                    output.outputFile = new File(oldFile.parent, releaseApkName)                }            }        }    }}dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    testCompile "junit:junit:${JUNIT}"    compile "io.reactivex:rxjava:${RXJAVA}"    compile "io.reactivex:rxandroid:${RXANDROID}"    compile "com.alibaba:fastjson:${FASTJSON}"}

]

2>源码管理(主要是你项目管理是用的什么),我这边使用的github管理项目的所以就选择git(提前在系统配置中配置了git的,不记得了可以看前面写的),我使用是ssh进行代码获取,需要了解ssh的需要自己去查资料了,我这边不讲了;获取代码也可以使用http的连接账号获取;

3>构建触发器我这边没用

4>构建环境(我这边主要就为了修改构建时的名字,可以更好的知道构建什么东西);代码(#${BUILD_NUMBER}-${PRODUCT_FLAVOR}-${BUILD_TYPE}-${VERSION_CODE})里面是字段上面有讲解;

5>构建(这里我是用的gradle进行构建,gradle提前在系统配置中设置);Tasks中进行修改代码(clean
assemble${PRODUCT_FLAVOR}${BUILD_TYPE})必须勾选Pass job parameters as Gradle properties不然Taskes没用不会更新;在增加构建步骤中选择Execute Windows batch command 这里主要是生成二维码图片并保存【生成二维码

为tomcat 配置文件下载路径,进入tomcat安装目录→conf→server.xml文件,在Host节点中添加如下配置。<Context  reloadable="true" docBase="E://APK_ANDROID" crossContext="true"         path="/APK_ANDROID"/>  下载安装Python和pip,依次配置环境变量;Python的安装及pip插件工具的安装,直接参照此博客即可:python 安装步骤博客;安装图片支持插件Pillow和二维码生成库qrcode,Pillow 就是Python Imaging Library(PIL)的进化版。Pillow由于更新版本的问题,使用普通插件安装命令可能会失败。在安装Pillow之前,确保pip能正常使用,最好是先随便找一个包安装一下。然后命令行输入 pip list 检查是否安装成功。】;完整命令代码(myqr http:你服务器地址:8080/APK_ANDROID/%VERSION_CODE%/SpringTour-%PRODUCT_FLAVOR%-%BUILD_TYPE%.apk -n SpringTour-%PRODUCT_FLAVOR%-%BUILD_TYPE%.png -v 1 -d E:/APK_ANDROID/%VERSION_CODE%)

6>构建后操作(这里我主要是生成二维码展示);选择set build description(如果没有这个选项是需要安装插件description setter plugin),Descripton代码(<img src="http://你服务器地址:8080/APK_ANDROID/${VERSION_CODE}/SpringTour-${PRODUCT_FLAVOR}-${BUILD_TYPE}.png" width="120px" height="120px" /> <br>  <a href="http://你服务器地址:8080/APK_ANDROID/${VERSION_CODE}/SpringTour-${PRODUCT_FLAVOR}-${BUILD_TYPE}.apk">点击下载-V${PRODUCT_FLAVOR}.apk</a>)

7>就点击保存就0K了;

5、开始构建(在项目中点击Build with Parameters然后就可以点击开始构建了)


构建成功后如图:


好了这样就可以收工了。(^-^)

0 0
原创粉丝点击