jenkins在Ubuntu上的使用
最近公司的android开发版本在不同的分支上进行开发,多个版本直接进行脚本管理比较耗时耗力,维护的成本比较高,现在公司引入Jenkins进行部分自动化的工作,apk的一些检查工作,打包发布工作,从而减少了人力的投入,大大降低了成本
下面我们使用ppa的方式来开android包:
维基百科上对ppa的解释:http://wiki.ubuntu.org.cn/PPA
PPA是Personal Package Archives首字母简写:个人包文档
通常使用有四个版本:
四个频道:
chromium daily
chromium dev
chromium stable
chromium beta
Ubuntu使用ailurus或ubuntu-tweak即可,如果是其他ubuntu衍生版本,考虑收集更多实用PPA于此。
1.安装JDK
使用ppa的方式安装jdk
gitHub仓库地址:https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa
添加
sudo add-apt-repository ppa:openjdk-r/ppa
更新仓库列表
sudo apt-get update //更新/etc/apt/source.list 仓库列表
sudo apt-get install openjdk-8-jdk
如果系统上安装了多个java版本
sudo update-alternatives --config java
sudo update-alternatives --config javac
查看jdk安装的目录以方便后续环境变量的配置
mymb@mymb:~$ dpkg -L openjdk-8-jdk
/.
/usr
/usr/lib
/usr/lib/jvm
/usr/lib/jvm/java-8-openjdk-amd64
/usr/lib/jvm/java-8-openjdk-amd64/lib
/usr/lib/jvm/java-8-openjdk-amd64/lib/jconsole.jar
/usr/lib/jvm/java-8-openjdk-amd64/bin
/usr/lib/jvm/java-8-openjdk-amd64/bin/appletviewer
/usr/lib/jvm/java-8-openjdk-amd64/bin/jconsole
进入/usr/lib/jvm中这个时候可以看到我们安装的jdk都在这里
mymb@mymb:/usr/lib/jvm$ ll
total 40
drwxr-xr-x 4 root root 4096 Jul 19 10:14 ./
drwxr-xr-x 173 root root 20480 Jul 19 09:43 ../
lrwxrwxrwx 1 root root 24 Mar 23 2014 default-java -> java-1.7.0-openjdk-amd64/
lrwxrwxrwx 1 root root 20 May 18 16:53 java-1.7.0-openjdk-amd64 -> java-7-openjdk-amd64/
-rw-r--r-- 1 root root 2439 May 18 16:41 .java-1.7.0-openjdk-amd64.jinfo
lrwxrwxrwx 1 root root 20 Nov 5 2016 java-1.8.0-openjdk-amd64 -> java-8-openjdk-amd64/
-rw-r--r-- 1 root root 2600 Nov 5 2016 .java-1.8.0-openjdk-amd64.jinfo
drwxr-xr-x 7 root root 4096 Jul 19 09:43 java-7-openjdk-amd64/
drwxr-xr-x 7 root root 4096 Jul 19 10:14 java-8-openjdk-amd64/
现在我们可以对jdk进行配置:上面我们使用的工具就是为了查看一下当前的安装文件目录
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
服务器安装Sdk开发环境
第三方sdk下载列表:http://pro.sr1.me/post/android-sdk-download-links,下面我们先随便下载一个sdk的包,然后通过android工具来对sdk进行升级
$ wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
解压
$ tar zxvf android-sdk_r24.4.1-linux.tgz
查看当前可用的sdk版本,通过下面的命令,可以看到目前google官方目前支持的版本有那些,我们通过命令行工具来一步一步来对sdk进行下载升级
查看当前可安装的SDK版本
$ ./android list sdk
Refresh Sources:
Fetching https://dl.google.com/android/repository/addons_list-2.xml
Validate XML
Parse XML
Fetched Add-ons List successfully
Refresh Sources
Fetching URL: https://dl.google.com/android/repository/repository-11.xml
Validate XML: https://dl.google.com/android/repository/repository-11.xml
Parse XML: https://dl.google.com/android/repository/repository-11.xml
Fetching URL: https://dl.google.com/android/repository/addon.xml
Validate XML: https://dl.google.com/android/repository/addon.xml
Parse XML: https://dl.google.com/android/repository/addon.xml
使用命名行工具来进行更新:先学会使用命令行工具来查看帮助文档
$ ./android update sdk --help
Usage:
android [global options] update sdk [action options]
Global options:
-s --silent : Silent mode, shows errors only.
-v --verbose : Verbose mode, shows errors, warnings and all messages.
--clear-cache: Clear the SDK Manager repository manifest cache.
-h --help : Help on a specific command.
接着开始更新sdk,上面的工具是如何查看命令行的使用,以至于我们可以灵活的使用其他的参数来完成其他操作而不是局限于当前的命令
-u --no-ui 表示在命令行环境下使用,刚好符合我们服务器环境
-t --filter 表示过滤,只安装指定版本的sdk
全部更新:
首先下载更新全部可安装的SDK版本,不指定过滤即可
$ ./android update sdk -u
更新指定的版本:
只安装指定序号的版本
$ ./android update sdk -u -t 序号
如:安装Build-tools, revision 24.0.3
$ ./android update sdk -u -t 3
需要同意license,输入 y 回车即可
同样是是使用ppa的方式来进行软件包的安装:
sudo add-apt-repository ppa:cwchien/gradle
更新数据源
sudo apt-get update
查询gradle目前有那些版本
apt-cache search gradle
查询结果
mymb@mymb:~$ sudo apt-cache search gradle
[sudo] password for mymb:
gradle-doc - Documentation for gradle
libgradle-core-java - Groovy based build system - Core library
missidentify - a program to find win32 applications
gradle - Gradle is a Groovy based build system
gradle-ppa - Gradle is a Groovy based build system
gradle-3.0 - Gradle is a Groovy based build system
gradle-3.1 - Gradle is a Groovy based build system
gradle-3.2 - Gradle is a Groovy based build system
gradle-3.2.1 - Gradle is a Groovy based build system
gradle-3.3 - Gradle is a Groovy based build system
gradle-3.4 - Gradle is a Groovy based build system
gradle-3.4.1 - Gradle is a Groovy based build system
gradle-3.5 - Gradle is a Groovy based build system
gradle-4.0 - Gradle is a Groovy based build system
gradle-4.0.1 - Gradle is a Groovy based build system
gradle-3.5.1 - Gradle is a Groovy based build system
libgradle-plugins-java - Groovy based build system - All plugins
安装目标版本
sudo apt-get install gradle-3.1
全部安装:耐心等待一段时间之后安装完成就可以使用了
sudo apt-get install gradle-*
下面的错误时在jdk小于1.7的时候回报错,由于踩过坑,所以现在一上来就直接把jdk安装成1.8,这样不管是在安装jenkins或是gradle都不会出现这个错误
FAILURE: Build failed with an exception.
* What went wrong:
Gradle 3.1 requires Java 7 or later to run. You are currently using Java 6.
安装Jenkins
sudo apt install jenkins
操作jenkins服务:使用service查看当Jenkins是否启动,以及状态
mymb@mymb:~$ sudo service jenkins
Usage: /etc/init.d/jenkins {start|stop|status|restart|force-reload}
查看当前启动的jenkins状态,进程号2703
mymb@mymb:~$ sudo service jenkins status
Jenkins Automation Server is running with the pid 2703
同样的我们现在使用下列的命令可以直接来查看jenkins的文件的路径编译后面的使用:
mymb@mymb:/usr/lib/jvm$ dpkg -L jenkins
1.使用浏览器访问:http://ip:8080默认是在8080端口上开启
http://192.168.1.200:8080/login?from=%2F
2.登录后看到提示界面的信息为:
Unlock Jenkins
To ensure Jenkins is securely set up by the administrator, a password has been written to the log (not sure where to find it?) and this file on the server:
/var/lib/jenkins/secrets/initialAdminPassword 密码存放的位置,安装是自动产生
Please copy the password from either location and paste it below. :复制到下面的输入框中
mymb@mymb:~$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
9212f25a5ca1408da1305ba2e536f219
接下来是创建账号密码:根据提示输入相应的信息就ok了,这里没有难度
进入jenkins主界面:
这时候,不要想太多,先让jenkins编译一个最基本的项目出来,然后在来了解jenkins的高级用途
点击创建一个新项目:创建一个自由风格的就可以了
配置git代码仓库:在上图中点击构建之后就进入下面的界面:现在我们缺少的是我没使用代码管理工具管理的项目地址,也就是我没得工程源码,需要与jenkins进行关联,
下面我们是用代码管理工具来进行配置:选择源码管理->Git->Repository URl->Branch只需要配置这几项就可以与代码仓库建立连接(这里先不减少认证的问题)
接下来我们要配置构建的一些配置:如下图所示:构建->Tasks->RootbuildScript(app目录下的build.gradle文件进行编译);这样我们局配置好了,先跑起来,后面在进行其
他配置的处理
配置到这里,基本的配置已完成,这个时候保存就Ok了,回到主界面,选择构建,这时jenkins就跑起来了
不过马上就要报错了,下面是控制台输出的信息通过信息我们可以拿到那些信息:
控制台输出
Started by user jenkins:执行任务的用户,也就是说可以配置多用户
Building in workspace /var/lib/jenkins/workspace/testJenkins:指明了当前的工作空间在哪里,拉去到本地的工作空间源码,可以切换过去看看
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url https://github.com/cangck/test.git # timeout=10 我们配置的远程仓库代码
Fetching upstream changes from https://github.com/cangck/test.git
> git --version # timeout=10
> git fetch --tags --progress https://github.com/cangck/test.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 2ec808374c840076a4c715fc0c01653c5f7d7d75 (refs/remotes/origin/master)
Commit message: "屏蔽掉当前的lint检查脚本" //上一次版本提交是的注释
> git config core.sparsecheckout # timeout=10
> git checkout -f 2ec808374c840076a4c715fc0c01653c5f7d7d75
> git rev-list 2ec808374c840076a4c715fc0c01653c5f7d7d75 # timeout=10
[Gradle] - Launching build. //上面是对代码的拉取,环境的校验,一系列准备工作
[app] $ gradle clean build //下面保存是应为我们的gradle配置有错误
FATAL: command execution failed
java.io.IOException: Cannot run program "gradle" (in directory "/var/lib/jenkins/workspace/testJenkins/app"): error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
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.Launcher$ProcStarter.join(Launcher.java:461)
at hudson.plugins.gradle.Gradle.performTask(Gradle.java:330)
at hudson.plugins.gradle.Gradle.perform(Gradle.java:221)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:730)
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:490)
at hudson.model.Run.execute(Run.java:1735)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:415)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 16 more
Build step 'Invoke Gradle script' changed build result to FAILURE
Build step 'Invoke Gradle script' marked build as failure
Finished: FAILURE
下面开始配置gradle的环境变量
参考:
http://blog.csdn.net/lincyang/article/details/42024565 ubuntu下切换jdk
http://blog.csdn.net/zy00000000001/article/details/70138811 ubuntu下升级jdk