当前位置:   article > 正文

Docker+Jenkins搭建Android持续集成环境(二)_jenkins task 'assembledebug' not found in root pro

jenkins task 'assembledebug' not found in root project 'runbayun_safe

前言

gradle、git、jdk环境配置比较简单,主要说下Android SDK配置。Jenkins搭建完后还不能构建Android项目,因为没有Android开发环境,因此还需要配置Android开发环境。如果没配ANDROID_HOME环境的话,构建时会找不到响应的task,如 Task ‘assembleRelease’ not found in project ‘:app’.

1、下载Android SDK

下载SDK的方式有两种,一种是在宿主中下载然后拷贝到镜像中;一种是直接在镜像中下载。两者区别不大,都是要通过sdkmanager。

方法一

在宿主中下载sdkmanager或者sdk,然后通过命令复制到jenkins镜像中

docker cp <宿主filepath> :<镜像filepath>

如:docker cp commandlinetools.zip jenkins:/home/downloads

方法二

进入jenkins镜像中下载

1、进入镜像bash环境

docker exec -i -t -u root <镜像name> /bin/bash

2、下载sdkmanager

wget https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip

3、根据需要下载sdk

sh sdkmanager “platforms;android-28”

解压sdkmanager后如果报错:

Warning: Could not create settings
java.lang.IllegalArgumentException
    at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.(SdkManagerCliSettings.
    ...
  • 1
  • 2
  • 3
  • 4
  • 创建ANDROID_HOME变量(如/usr/local/android)
  • 把下载后的commandlinetools.zip解压后得到tools文件夹,放到cmdline-tools(ANDROID_HOME的子目录,如/usr/local/android/cmdline-tools)下
  • 添加文件夹 $ANDROID_HOME/cmdline-tools/tools/binPATH环境变量中(可选)

2、设置ANDROID_HOME环境变量

Manage Jenkins > Configure System 下配置全局变量,如

在这里插入图片描述

3、构建

设置源码目录,Credentials设置为github账号

在这里插入图片描述

添加构建任务,需要注意工程可能不能直接构建,则需要指定构建目录Root Build script(如JsBridge是项目工程,但是app才是可构建的项目,则 Root Build script设置为 ${WORKSPACE}/app

在这里插入图片描述

构建成功如图所示

在这里插入图片描述

生成的apk文件在 ${WORKSPACE}/app/build/outputs/apk/xxx目录下,如

在这里插入图片描述

3.1、带参数构建

为了应付Flavors的存在,可以自定义一些构建参数,如

在这里插入图片描述

相应的改变构建脚本

在这里插入图片描述

最后可视化构建操作为

在这里插入图片描述

比如选择Release、Flavors1,则构建任务为assembleFlavors1Release。

还可以把Jenkins中配置的参数替换到Gradle 脚本的gradle.properties中。

Jenkins自带的环境变量有 JOB_NAMEBRANCH_NAME等.

3.2、修改构建命名

设置格式

在这里插入图片描述

效果如图

在这里插入图片描述

3.3、构建完成后操作

构建完成后给外部提供apk下载地址,然后发送通知或者做其他操作。

3.3.1、搭建tomcat服务

下载并启动tomcat,在conf/server.xml文件下配置文件下载地址,在把conf/web.xml中的listings参数修改为true,访问地址为:http:ip:port/apk/

<!-- server.xml -->
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <!-- 文件下载地址  -->
        <Context docBase="/home/jenkins_downloads" path="/apk" reloadable="true" crossContext="true"/>  
    	...

<!-- web.xml -->
    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <!-- false 修改为 true -->
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
3.3.2、通知构建者

构建完后把构建日志、包等信息发送给构建者,可以通过邮件或者其他方式,这里利用企业微信的群机器人。

通过PostBuildScript Plugin这个插件可以再在构建成功、失败后执行一些额外操作,比如shell脚本

在这里插入图片描述

脚本做的操作是先在tomcat下载目录创建目标文件夹(通过构建时间、渠道、构建类型等信息),然后把生成的apk拷贝过去,就可以通过tomcat地址访问了。
在这里插入图片描述在这里插入图片描述

构建日志地址为:http://ip:port/job/${JOB_NAME}/${BUILD_NUMBER}/consoleText

下载地址为:http://ip:port/apk/${JOB_NAME}/${PRODUCT_FLAVORS}/${BUILD_TYPE}/${BUILD_DATE}

用到的插件

Date Parameter

Build Name and Description Setter

PostBuildScript Plugin

参考:

sdkmanager

Android Jenkins+Git+Gradle持续集成-实在太详细

jenkins 内置变量

Android Command line tools sdkmanager always shows: Warning: Could not create settings

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/306598
推荐阅读
相关标签
  

闽ICP备14008679号