前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Jenkins + Docker 搭建 Android 持续集成平台

基于Jenkins + Docker 搭建 Android 持续集成平台

作者头像
DevOps时代
发布2019-08-08 15:52:01
1.8K0
发布2019-08-08 15:52:01
举报

背景描述

随着公司扩大和测试团队的引入,原有的本地打包已经无法满足需求,所以考虑搭建Android持续集成打包平台。因为我司前后端发版是通过Docker+Jenkins,所以就沿用它。

网上对于搭建Jenkins的教程很多,但是基于Docker的很少,同时要考虑服务器上无法访问外国网站,所以自己摸索并填了很多坑,因此记录一下。

设计思路

实现目标:可以根据参数打不同flavor/不同运行环境的包;收集打包成功后的成果(Artifact);把api上传到fir后,在建构列表展示出下载链接。

思路:先在本地配置Docker+Jenkins,本地测试打包成功后,再把dockerfile上传到服务器。以下配置讲的是在本地(mac)搭建一个Docker+Jenkins的持续集成环境。

开始配置

一、配置Docker

因为在docker里下载jenkins速度比较慢,所以建议给docker配置阿里镜像加速,具体可以网搜一下教程,配置完如下图

  1. 修改Dockerfile文件,添加accept lisence所需的脚本。下载路径 Docker作用相当于一个虚拟机,你可以在它里面安装你需要的环境,但开销比虚拟机要小。

Dockerfile 是构建一个容器的默认的配置文件,我们编写一个Dockerfile,在这个Docker容器内配置所需要的环境。

3.建构并运行Docker

  1. 命令行进入jenkisn_dockerfile目录,输入:docker build -t <tagname> . 将开始执行脚本中的内容,下载安装所需环境
  2. 再在命令行输入docker run -p 8080:8080 -p 50000:50000 <tagname>这样就会开始运行了安装好所需环境的容器。

4.等脚本跑完在浏览器输入http://localhost:8080/ 进入jenkins登录界面

如果是第一次运行jenkins,需要输入密钥,这个在跑docker run -p 8080:8080 -p 50000:50000 时会输出到命令行,注意查看一下。

二、改造Android项目

1.在项目根目录新建 gradle.properties 文件,在这里指定默认的api运行环境

代码语言:javascript
复制
API_URL_TYPE=test1

2.在一个安全的目录下存放storeFile,并新建keystore.properties文件,注意此文件的私密性

代码语言:javascript
复制
storePassword=xxx
keyPassword=xx
keyAlias=xxx
storeFile=file/director/storefile # 这个是key文件相对于module的路径

3.修改module下的build.gradle文件

代码语言:javascript
复制
android{
  defaultConfig{
    // 自定义配置变量
    buildConfigField 'String', 'API_URL', API_URL
  }

  signingConfigs {
        release {
            // Load keystore
            if(rootProject.file("keystore.properties").exists()){
                def keystoreProperties = new Properties()
                def keystorePropertiesFile = rootProject.file("keystore.properties")
                keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
            }
        }
  }

  // 指定release包的签名配置
  buildTypes{
      release{
      signingConfig signingConfigs.release
  }
}

三、创建Jenkins打包项目

1.创建一个项目

2.General-参数化建构过程-添加参数-Choice Parameter

3.源码管理添加Repo URL和权限认证Credentials

4.建构

5.建构后操作

(1)收集建构成果,比如apk,mapping文件

(2)上传apk到fir

(3)把上传到fir的短链接展示到建构列表中。

i.你需要安装一个插件:description setter plugin

ii.在建构后操作添加set build description如下。它会通过正则表达式匹配建构的输出,匹配到字符串可以用\n获取。比如下面的\1会获取第一个匹配到的字符串

iii.此时在建构列表里它会显示为如下。我们要去系统管理-全局安全配置-Markup Formatter选择SafeHtml

代码语言:javascript
复制
<a href="http://fir.im/xxx">http://fir.im/xxx</a>

最后效果

来源:知乎,链接:https://zhuanlan.zhihu.com/p/31858545

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps时代 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景描述
  • 设计思路
  • 开始配置
    • 一、配置Docker
      • 二、改造Android项目
        • 三、创建Jenkins打包项目
        • 最后效果
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档