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=142 VERSION_NAME=7.4.2 #VERSION_NAME=6.9.8 #VERSION_NAME=102 #配置 debug = 测试 release = 生产 BUILD_TYPE=debug PRODUCT_FLAVOR=googleApp IS_JENKINS=false BUILD_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然后就可以点击开始构建了)
构建成功后如图:
好了这样就可以收工了。(^-^)
Android Jenkins+gradle+git自动化构建并生成二维
最新推荐文章于 2023-05-11 16:45:33 发布