jenkins - 启动及配置使用
参考:jenkins在windows下的安装准备工作:android 开发,先安装好JDK、Android SDK、Gradle、Tomcat、git或svn等。一、下载Jenkins:https://jenkins.io/download/二、启动Jenkins:方式一:jdkc盘建立jenkins文件夹,并把jenkins.war 放在文件夹中。...
参考:
jenkins在windows下的安装
基于Jenkins的Android持续集成(自动化打包)
准备工作:
android 开发,先安装好JDK、Android SDK、Gradle、Tomcat、git或svn等。
一、下载Jenkins:
官网地址:http://Jenkins-ci.org/
官网镜像地址:http://mirrors.jenkins-ci.org/war-stable/ (在里面可以选择任意版本的war包,lastest为最新的,推荐下载!)
二、启动Jenkins:
方式一:jdk
c盘建立jenkins文件夹,并把jenkins.war 放在文件夹中。
执行以下命令:
cd C:\jenkins
java -jar jenkins.war
看到Jenkins is fully up and running然后打开浏览器输入:
http://localhost:8080/
管理员密码位置:
输入密码进入下一步:
选择推荐安装并,安装完成即可。
方式二:Tomcat
将jenkins.war文件放入tomcat下的webapps目录下
手动到Tomcat的bin/目录下启动Tomcat执行startup.bat ,
通过浏览器访问:http://localhost:8080/jenkins
三、配置:
sdk :
系统管理 --> 系统设置 --> 全局属性(环境变量)
自定义名字,添加本地的绝对路径
ANDROID_HOME
F:\Android\Sdk
比如:
jdk、git、gradle配置:
系统管理 --> 全局工具配置 --> jdk/gradle
自定义名字,添加本地的绝对路径
jdk1.8.0
C:\Program Files\Java\jdk1.8.0_131
git
D:\Program Files\Git\bin\git.exe
gradle3.3
D:\Program Files\Android\Android Studio\gradle\gradle-3.3-all\gradle-3.3
比如:
四、下载相关插件:
系统管理 --> 管理插件 --> 可选插件 --> 右上角过滤关键字 --> 选中 --> 直接安装
常见的插件:
Email Extension Plugin
这个插件是Jenkins的电子邮件出版商的替代品。
它允许配置电子邮件通知的每一个方面:邮件什么时候发送,谁接收,上面说了什么
Gradle Plugin
这个插件允许Jenkins直接调用Gradle构建脚本。
Publish Over SSH
通过ssh发送构建工件
Python Plugin
添加作为构建步骤执行Python脚本的能力。
Python Wrapper Plugin
这个插件为Python编写的插件提供了运行时库。
SSH plugin
这个插件使用ssh协议远程执行shell命令。
Upload to pgyer
这个插件上传APK、IPA文件到pgyer(蒲公英)
如果没有找到需要的插件,还可以离线下载:
http://mirrors.jenkins-ci.org/plugins/
https://wiki.jenkins.io/display/JENKINS/Plugins 打开后右上角搜索下载
参考:
Jenkins插件管理(下载插件错误解决方法)
jenkins离线插件安装入门
五、新建项目并配置
新建 --> 输入一个任务名称 --> 构建一个自由风格的软件项目 --> 确定
1、general:
参数化构建过程,可以定义参数用于构建,比如定义渠道、版本等。
2、源码管理
支持git和svn,不需要可以选择none。
git和svn要填写仓库url(Repository URL)和账号密码(Credentials)。
3、构建触发器:
如果需要自动化,不需要手动触发脚本构建等操作,可以设置触发时机。
比如下面:
每隔五分钟查看代码是否更新,更新了则构建,否则不构建。
4、构建环境:
5、构建:
选择构建方式,并填写相应内容:
比如下面:
gradle脚本构建android项目,
upload to pgyer 上传apk到蒲公英。
6、构建后操作:
六、报错整理
报错1:
使用 Jenkins 实现持续集成 (Android)
使用 Jenkins 插件上传应用到蒲公英
apk已生成,使用pgyer插件上传蒲公英报错:
[UPLOAD TO PGYER] - upload:mynewapp.apk to https://qiniu-storage.pgyer.com/apiv1/app/upload
[UPLOAD TO PGYER] - upload to pgyer failure!
[UPLOAD TO PGYER] - error code:4
[UPLOAD TO PGYER] - error message:The user not exist
解决:
注意User Key填写位置是否为黄色,如果是说明需要重新填写。
在蒲公英官网新建任意APP,在api页面即可获取API Key、User Key(账号下通用)
报错2:
Couldn't find any revision to build. Verify the repository and branch configuration for this job.
查看repository 的 branch :是否存在,不存在删除。
黄色背景是需要重新定义的,要特别注意。
问题3:
10:45:24.712 [INFO] [org.gradle.launcher.daemon.client.DaemonClient]
Received result Failure[value=org.gradle.initialization.ReportedException:
org.gradle.internal.exceptions.LocationAwareException:
Task 'assemble${PRODUCT_FLAVORS}Release' not found in root project 'test_pacage'.]
from daemon DaemonInfo{pid=10068, address=[7e592bdd-d84f-4fe3-b33c-91324dd5020d
port:55653, addresses:[/127.0.0.1, /0:0:0:0:0:0:0:1]], state=Busy, lastBusy=1520477119665,
context=DefaultDaemonContext[uid=7135e2d5-ab81-4457-8859-ae03eca7501b,
javaHome=C:\Program Files\Java\jdk1.8.0_131,
daemonRegistryDir=C:\Users\lenovo\.gradle\daemon,pid=10068,
idleTimeout=10800000,daemonOpts=-Xmx1536m,-Dfile.encoding=GBK,
-Duser.country=CN,-Duser.language=zh,-Duser.variant]} (build should be done).
10:45:24.712 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection]
thread 1: dispatching class org.gradle.launcher.daemon.protocol.Finished
10:45:24.713 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection]
thread 1: connection stop
Build step 'Invoke Gradle script' changed build result to FAILURE
Build step 'Invoke Gradle script' marked build as failure
Finished: FAILURE
解决:
注意执行的打包apk的命令拼接是否和android studio中一样:
clean assemble${PRODUCT_FLAVORS}${BUILD_TYPE} --stacktrace --debug
常见的gradle命令:
# 查看构建版本
./gradlew -v
# 清除build文件夹
./gradlew clean
# 检查依赖并编译打包
./gradlew build
# 编译并安装debug包
./gradlew installDebug
# 编译并打印日志
./gradlew build --info
# 调试模式构建并打印日志
./gradlew build --info --debug --stacktrace
# 强制更新最新依赖,清除构建并构建
./gradlew clean --refresh-dependencies build
# Release模式打包并安装
./gradlew installRelease
# 卸载Release模式包
./gradlew uninstallRelease
# Release模式全部渠道打包
./gradlew assembleRelease
# Release模式 test 渠道打包
./gradlew assembleTestRelease
# debug release模式全部渠道打包
./gradlew assemble
# Release模式小米渠道打包
./gradlew assembleXiaomiRelease
报错4:
Total time: 1 mins 55.993 secs
Build step 'Invoke Gradle script' changed build result to SUCCESS
[test] $ cmd /c call C:\Users\lenovo\AppData\Local\Temp\jenkins610143047616150872.bat
C:\Users\lenovo\.jenkins\workspace\test>curl -F
"file=C:\Users\lenovo\Desktop\测试打包_release.apk"
-F "uKey=9bdce1d8eb394872f59d1ae37af09348" -F
"_api_key=89d9dc80bb48639514dfd9480f5a592d"
http://www.pgyer.com/apiv1/app/upload
'curl' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
C:\Users\lenovo\.jenkins\workspace\test>exit 9009
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE
解决:
注意:Linux系统用curl,这里我们Windows系统使用插件来上传到蒲公英即可。
报错5:
Total time: 2 mins 11.231 secs
Build step 'Invoke Gradle script' changed build result to SUCCESS
[test] $ sh -xe C:\Users\lenovo\AppData\Local\Temp\jenkins4135891521239357137.sh
The system cannot find the file specified
FATAL: command execution failed
java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
Caused: java.io.IOException: Cannot run program "sh"
(in directory "C:\Users\lenovo\.jenkins\workspace\test"):
CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessBuilder.start(Unknown Source)
at hudson.Proc$LocalProc.<init>(Proc.java:249)
at hudson.Proc$LocalProc.<init>(Proc.java:218)
at hudson.Launcher$LocalLauncher.launch(Launcher.java:930)
at hudson.Launcher$ProcStarter.start(Launcher.java:450)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:109)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:66)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
at hudson.model.Build$BuildExecution.build(Build.java:206)
at hudson.model.Build$BuildExecution.doRun(Build.java:163)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
at hudson.model.Run.execute(Run.java:1724)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Build step 'Execute shell' marked build as failure
Finished: FAILURE
解决:
Jenkins中把相应的shell插件都下完整。
报错6:
[UPLOAD TO PGYER] - upload file not found,plase check scandir or wildcard!
解决:
查看项目的构建upload to pgyer里的scandir wildcard
拼接后看是否可以找到打的包
gradle中打包配置要和蒲公英上传scandir wildcard相对应:
更多推荐
所有评论(0)