Android项目持续集成实践之Gitlab CI

简介: 简介 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。 入门 下面我们来简单介绍

简介

持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

入门

下面我们来简单介绍,如果通过Gitlab CI来对Android项目持续集成。

一言不合,先甩给你一个项目链接:
https://gitlab.com/snowdream/Citest

项目很简单,就是一个默认创建的Android项目,然后上传至Gitlab。

如果给项目添加持续集成功能呢?
按照文档的说法,你需要给项目添加一个名称为.gitlab-ci.yml的配置文件。

.gitlab-ci.yml文件怎么写??此处省略108个字。
通读下面两篇文章,大概就清楚了。
http://doc.gitlab.com/ce/ci/quick_start/README.html
http://doc.gitlab.com/ce/ci/yaml/README.html

当然,也许你读完了,还是感觉蒙了。那你还需要参考下别人怎么实践的。

  1. http://doc.gitlab.com/ce/ci/quick_start/README.html
  2. http://doc.gitlab.com/ce/ci/yaml/README.html
  3. http://www.greysonparrelli.com/setting-up-android-builds-in-gitlab-ci/
  4. https://github.com/asura-app/android/blob/master/.gitlab-ci.yml
  5. https://github.com/lfuelling/android-sdk-docker
  6. https://hub.docker.com/r/jangrewe/gitlab-ci-android/
  7. http://blog.goddchen.de/2016/04/configuration-for-gitlab-ci-android-projects/
  8. http://stackoverflow.com/questions/35916233/gitlab-com-ci-shared-runner-for-android-projects

实践

下面是重点:
基本流程是:

  1. Gitlab Ci通过Docker来拉取包括openjdk-8-jdk的容器
  2. 下载Android SDK
  3. 通过Gradle Wrapper运行编译工程

下面是主菜:
适用于Android项目的 .gitlab-ci.yml 文件
当然,在实际过程中,你可以需要做一些调整,比如android sdk 中的版本号等。

image: java:openjdk-8-jdk
 
before_script:
  - apt-get --quiet update --yes
  - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
  - wget --quiet --output-document=android-sdk.tgz https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
  - tar --extract --gzip --file=android-sdk.tgz
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter android-23
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter platform-tools
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter build-tools-23.0.3
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-android-m2repository
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-google-google_play_services
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-google-m2repository
  - export ANDROID_HOME=$PWD/android-sdk-linux
  - chmod u+x ./gradlew
 
build:
  script:
    - ./gradlew assembleRelease
  artifacts:
    paths:
    - app/build/outputs/

好了。将.gitlab-ci.yml 添加到你的Android项目中,然后上传至Gitlab系列的Git服务器,就开始持续集成了。

详细的构建过程日志太长,我就不贴了。链接如下:
https://gitlab.com/snowdream/Citest/builds/2140420

总结

与Travis Ci相比,Gitlab CI更灵活,可定制性高,但也意味着用起来并不是那么容易。
Travis Ci 更倾向于提供一个开箱即用的 CI服务。
而 Gitlab CI 更倾向于提供一个定制化的CI服务,比如支持Docker。
以上只是对于通过Gitlab CI对Android项目进行持续集成的简单实践。
如果感兴趣,大家可以思考下下面的问题:

  1. 怎么通过Gitlab CI进行持续发布?
  2. 怎么在Gitlab CI 加密字符串和文件,比如keystore文件?
  3. 怎么在Gitlab CI中进行交互性操作,比如输入密码?
  4. 怎么在过Gitlab CI中使用缓存?
相关文章
|
9天前
|
Java 测试技术 持续交付
自动化测试实践:从单元测试到集成测试
【6月更文挑战第28天】-单元测试:聚焦代码最小单元,确保每个函数或模块按预期工作。使用测试框架(如JUnit, unittest),编写覆盖所有功能和边界的测试用例,持续集成确保每次变更后自动测试。 - 集成测试:关注模块间交互,检查协同工作。选择集成策略,编写集成测试用例,模拟真实环境执行测试,整合到CI/CD流程以持续验证软件稳定性。 自动化测试提升软件质量,降低成本,加速开发周期,是现代软件开发不可或缺的部分。
|
12天前
|
Java 开发工具 Android开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
在移动应用开发的广阔天地中,Android和iOS两大平台各自占据着半壁江山。本文将深入探讨这两个平台在开发过程中的关键差异点,包括编程语言、开发工具、用户界面设计、性能优化以及市场覆盖等方面。通过对这些关键因素的比较分析,旨在为开发者提供一个清晰的指南,帮助他们根据项目需求和目标受众做出明智的平台选择。
|
9天前
|
人工智能 自然语言处理 数据挖掘
利用AI集成工具提升工作效率的实践经验
随着人工智能技术的蓬勃发展,以及当今数字化快速发展的时代,人工智能的运用已经渗透到各个行业和工作领域中,大语言模型在自然语言处理领域的应用也愈发广泛,而且市面上涌现出一批AI集成工具,比如Langchain、Dify、llamaIndex、fastgpt、百炼等,它们为开发者提供了强大的支持和便利,极大地提升了AI模型的构建和管理效率。作为一名热衷于利用新技术提高工作效率的开发者,我也积极尝试将这些工具融入到我的日常工作中,以期望提升工作效率和质量,下面我将分享我是如何使用AI集成工具来提升工作效率的,以及实践经验和心得。
40 1
利用AI集成工具提升工作效率的实践经验
|
6天前
|
机器学习/深度学习 分布式计算 算法
Java中的机器学习模型集成与训练实践
Java中的机器学习模型集成与训练实践
|
12天前
|
监控 Devops 测试技术
DevOps实践:持续集成与持续部署(CI/CD)在现代软件开发中的作用
【6月更文挑战第24天】本文深入探讨了持续集成(Continuous Integration,简称CI)和持续部署(Continuous Deployment,简称CD)在现代软件开发生命周期中的核心作用。通过阐述CI/CD的概念、优势以及实施策略,文章旨在为读者提供一套完整的理论框架和实践指南,以促进软件开发流程的高效性和产品质量的提升。
|
18天前
|
Java Android开发 Swift
探索Android与iOS开发的差异:平台选择对项目成功的影响
【6月更文挑战第18天】在移动应用开发的广阔天地中,Android和iOS两大平台各据一方,它们在市场份额、用户群体及开发环境上各有千秋。本文将深入分析这两个操作系统的开发差异,探讨如何根据项目需求选择合适的平台,并讨论跨平台解决方案的可行性与挑战。我们将通过实际案例,揭示平台选择对项目成功的关键性影响,为开发者提供决策支持。
|
19天前
|
运维 监控 Devops
DevOps实践:持续集成与持续部署(CI/CD)的精髓
【6月更文挑战第17天】本文将深入探讨DevOps文化中的核心实践——持续集成(CI)和持续部署(CD)。我们将从理论出发,逐步过渡到实际操作,介绍如何搭建一个高效的CI/CD流程。文章将涵盖工具选择、流程设计、自动化测试以及监控和反馈机制的建立。通过具体案例分析,揭示成功实施CI/CD的关键因素,并探讨如何在组织内推广这一实践以促进开发和运维之间的协作。
|
19天前
|
安全 IDE Android开发
探索Android与iOS开发的差异:平台特性与编程实践
【6月更文挑战第17天】在移动应用开发的广阔天地中,Android和iOS两大平台各自占据半壁江山。它们在用户群体、系统架构以及开发环境上的差异,为开发者带来了不同的挑战和机遇。本文深入探讨了这两个平台在技术实现、界面设计、性能优化等方面的主要区别,并提供了实用的开发建议,旨在帮助开发者更好地理解各自平台的特性,从而创造出更加优秀的移动应用。
|
21天前
|
jenkins Java 持续交付
蓝易云 - 从零开始配置Jenkins与GitLab集成:一步步实现持续集成
以上就是从零开始配置Jenkins与GitLab集成的步骤,希望对你有所帮助。
38 2
|
3天前
|
机器学习/深度学习 分布式计算 算法
Java中的机器学习模型集成与训练实践
Java中的机器学习模型集成与训练实践

相关实验场景

更多