Jenkins实战 在redhat上编译android项目jar包

好久没记录自己学到的东西了。现在加入了新公司,先做个持续集成练练手,期间遇到很多问题,在此记录一下。

首先是Jenkins刷新几次就直接挂了,其实没有多少job在跑。这个问题没这么看,最后mentor发现是memory的问题,默认值太低了,必须设置一下。参见link

然后项目源码是放在自建gitlab上的,装了个gitlab hook插件,里面会帮你装git相关的插件,而hook可以接收gitlab那边的code有变动的时候发送的消息,然后自动build。

构建前准备:

mentor说当构建任务很多的时候,保存的结果太多Jenkins会变慢变卡,所以设置了丢弃旧的构建。

在Jenkins服务器上装了git却怎么都连不上repository,报错为:

Failed to connect to repository : Command "git config --local credential.helper store --file=/tmp/git2956041026506359040.credentials" returned status code 129:
stdout:
stderr: error: unknown option `local‘

Google了一把发现是redhat下面用yum装的git默认是1.7.1的,要装高版本的才行。参见link1link2

这样弄了后发现还不行,搞了半天终于发现在Jenkins系统设置里面设置一下git的路径就好了。但在我自己的Ubuntu机器上没有设置Jenkins却可以直接用,估计是安装路径或者是环境变量的问题。

因为项目需要在一个android project里面生成jar,然后放到另一个android project里面再打包一个jar。我不高兴用多个job来构建,所以装了Multiple SCMs插件来管理。设置了本地文件夹以及每次clone前清空repository。

在redhat上配android环境时报了很多错误,各种包没装,link1link2。再就是用javac编译时,始终找不到/android-sdk-linux/platforms/android-19/android.jar,后来发现需要改android-19和android.jar的权限。记得当时在ubuntu上搞android sdk时,官网上的包基本没什么东西,还得自己一个个补全,真是蛋疼。

【todo】

构建:build.xml

构建后步骤:

job本身判断的是build是否成功,因为要build多个project,我们可以将结果写到result.xml里面去,方便查看是哪个出错了。同时这样也方便以后加test case。

具体是先给个包含所有build和case的result模板,然后根据成功与否在进行设置。完整的log可以看console output。要是直接跑的是junit test就没这么麻烦了。

<testsuite>
    <testcase classname="BuildId:001" name="build:androidadsdk">
    </testcase>
    <testcase classname="BuildId:002" name="build:androidadsupdate">
    </testcase>
</testsuite>
import sys

print sys.argv[1]
print sys.argv[2]

model = file("result.xml", "r")
result = file("restemp.xml", "w")

for data in model:
    result.write(data)
    if sys.argv[1] in data:
        if sys.argv[2] in "fail":
            result.write("        <error message=\"fail\">\n")
            result.write("        </error>\n")
        elif sys.argv[2] in "pass":
            result.write("        <system-out>\n")
            result.write("            pass\n")
            result.write("        </system-out>\n")

model.close()
result.close()

在shell里面跑ant的时候,发现build失败的信息不好捕捉,网上找了个workround

echo "===========  build jar ..."
{
    ant build && {
        python setResult.py androidadsdk pass
        rm result.xml
        mv restemp.xml result.xml
        echo "===========  build jar successfully ..."
    }
} || {
    python setResult.py androidadsdk fail
    rm result.xml
    mv restemp.xml result.xml
    echo "===========  fail to build jar !!!"
}

发Email这个挺简单的,可以下个Email-ext的插件,build成功也可以发邮件。

时间: 2024-10-17 07:53:45

Jenkins实战 在redhat上编译android项目jar包的相关文章

Visual Studio Xamarin编译Android项目出错的解决办法

安装完Xamarin后,编译Android项目时,你会发现好长时间进度都不动,当你取消编译后,会发现其实是出错了,就是因在Android项目在第一次编译时要去google网站上下一个andorid sdk包,墙内又连不上,就卡在那了,解决办法就是自已到国内的一些镜像网站上(如:http://mirrors.opencas.cn/android/)下一个,如:android_m2repository_r29.zip, 然后解压到任意目录下,用mklink建立链接到C:\Users\{usernam

一个使用命令行编译Android项目的工具类

一个使用命令行编译Android项目的工具类 简介 编译apk项目需要使用的几个工具,基本都在sdk中,它们分别是(Windows系统): 1.aapt.exe 资源打包工具 2.android.jar Android编译工具 3.dx.bat dex文件生成工具 4.sdklib.jar 生成apk 5.jarsigner 签名工具 准备 在打包前,需要的环境如下: 1.JDK1.6+ 2.Android SDK 3.上述5个工具的路径 打包过程 1.生成R.java文件 比如: aapt p

【转】Ubuntu 上编译Android出现cannot find -lstdc++解决办法

[转]Ubuntu 上编译Android出现cannot find -lstdc++解决办法 在Ubuntu 12.04 x86_64机器上编译Android出现下面错误,是因为找不到32bit的libstdc++.so库. /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.so when searching for -lstdc++ /usr/bin/ld: skipping incom

VirtualBox上编译android遇到共享文件夹引起的问题

故事:用mac系统,但芯片厂商提供的方案里没有提供mac系统编译android,只好装了虚拟机.虚拟机里parallels desktop算是比较好用,不过坑爹的是,编译时期make命令挂了,提示"segmentation fail",Google未果.只好重新启用virtualbox. 在虚拟机管理里设置了共享文件夹,之后发现权限不够: ?  ~  ls /media/sf_AndroidBuild  ls: 无法打开目录/media/sf_AndroidBuild: 权限不够 解决

Eclipse编译Android项目时出现的问题:Android requires compiler compliance level 5.0 or 6.0. Found &#39;1.8&#39; instead.

Consle: Android requires compiler compliance level 5.0 or 6.0. Found '1.8' instead. Please use Android Tools > Fix Project Properties. 然而,按照提示的方法,右键项目->Android Tools->Fix Project Properties时,发现并没有卵用... 我的解决方式是: 右键项目->Properties,把 JavaCompiler

Eclipse中添加Android系统jar包

这样做的好处是,可以使用Eclipse开发系统应用了,这样可以调用系统中才使用的API. 1.首先在项目中右击->属性.如图所示依次操作 2.添加User Library 3.第一次要新建User Library名字 注:一定要勾选上System library(addedto the boot class path)否则会出现错误1. 4.添加jar包 2.${ANDROID_SOURCE}/out/target/common/obj/JAVA_LIBRARIES/framework_inte

Android创建jar包的步骤

Android创建jar包的步骤很简单,只需要注意3点即可,顺便把步骤列出以下: 1.右键项目---Export(导出) 2.选择下一步: 注意:此处不要勾选activity包.res和manifest,然后填上自己定义的jar包名字. 3.4步:直接next和finish即可. 如此,一个简单的jar包就生成了,需要调用的时候直接导入即可!

Linux上的运行的jar包

以调用json-simple为例 java程序(CsvTest.java) import org.json.simple.JSONObject; import java.util.*; public class SplitDemo { public static void main(String[] args) { JSONObject obj = new JSONObject(); } } 放置 将外部jar包(json-simple.jar)放在Linux路径下面.如/home/cys/li

由提交storm项目jar包引发对jar的原理的探索

序:在开发storm项目时,提交项目jar包当把依赖的第三方jar包都打进去提交storm集群启动时报了发现多个同名的文件错误由此开始了一段对jar包的深刻理解之路. java.lang.RuntimeException: Found multiple defaults.yaml resources. You're probably bundling the Storm jars with your topology jar. [jar:file:/home/hadoop/app/storm/l