提升开发效率之利用GitLab CI/CD打包Android项目

简介: 提升开发效率之利用GitLab CI/CD打包Android项目

在开始讲怎么利用GitLab CI/CD打包Android项目之前,先来了解一下什么是CI/CD。

什么是CI/CD

  先来看下官方文档就CI/CD的解释,如图

6f4ff10cdf62b385182ba664a1a2303.png

根据官方的解释我们可以知道CI/CD就是

  • 持续集成
  • 持续分发
  • 持续部署

而GitLab CI/CD就是GitLab内置的有这些作用的工具。了解了什么是GitLab CI/CD,接着来看CI/CD的工作原理。

GitLab CI/CD的工作原理

  GitLab CI/CD的一次工作由以下几个组件组成。

  • Pipelines:是持续集成,交付和部署的顶级组件。
  • Jobs:具体的工作内容,如代码编译或测试运行。
  • Stages:定义什么时间运行什么任务,如设置测试在代码编译之后运行。

它们三者之间的关系如下图所示

5b8a4802ce26ea1b2b1fae22eae7b56.png

不知道大家有没有觉得上面的只是任务的具体组成和划分,但是没有用来执行任务的执行器,那么执行器是在哪里呢?执行器在GitLab CI/CD中是Runners

Runners 由Runner组成,一个Runner执行一个Job,可以设置任意数量的Runner,Runner可以放在服务器上和本地的计算机上。

了解了GitLab CI/CD中的组件,那么他们是怎么配合以及分工执行的呢?其实他们怎样执行是由.gitlab-ci.yml脚本文件来安排的。这个脚本文件就是一个Pipeline,里面有一个或多个job组成一个jobsjob里面有不同的Stages

  可以从官方文档是来看CI/CD的基本工作流,如图

1a51f123d8c7506b02b21863eda1f62.png

从图中可以看出CI/CD能做的工作由很多,如自动编译、测试和打包,其实还能做检查代码,自动化测试等工作。

怎样把本地机器配置成Runner

  前文已经说了,要执行Pipeline是需要Runner的,那么怎样安装Runner呢?安装之前可以看下自己的GitLab仓库中是否已经有Runner呢?操作步骤是:进入自己的GitLab项目->在Setting菜单中选择CI/CD的菜单项,会看到下面的界面

3c4e5cb4a98ea7f8fda37e53ab1f6b8.png

这时继续点击Expand按钮,就可以看到此项目是否有Runner了,可以看下我现在项目下的Runner,如图

ad40d53cfe30a9f0d9dbafc5c75cad3.png

可以看到我的项目现在有两个Runner,一个是共享的(在服务器上),一个是我自己电脑上的。如果在服务器上已经有了一个共享的Runner,那么你可以直接在服务器上来配置Android的运行环境和打包的环境,我是自己不方便操作服务器,才在自己的电脑上安装的Runner,这里推荐在服务器上来配置Runner和安装环境,因为如果是多人开发的话,这样可以统一打包的环境。 下面来说下在本地配置Runner的方法,这里以Mac系统为例,其他系统的配置方法可以参照官方文档

1.下载二进制文件

sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64

2.设置文件的执行权限

sudo chmod +x /usr/local/bin/gitlab-runner

3.注册Runner

gitlab-runner register

4.输入GitLab URL

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com(你的GitLab地址)

5.输入token

Please enter the gitlab-ci token for this runner
 xxx

token可以在这里获取,就是前文看是否有Runner的那个地方38cd53694b9b058680a5c0a045dd70e.png

6.输入Runner的描述,相当于这个Runner的名称

Please enter the gitlab-ci description for this runner
[hostname] my-runner

7..输入Tag,可以输入多个,以英文逗号分割,Tag的作用是如果有多个Runner,可以根据.gitlab-ci.yml脚本设置的Tag来选择对应的Runner。

Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag

8.选择以什么方式执行,因为是是本地的电脑,所以选择shell就行了

Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
shell

9.执行以下命令,运行Runner

cd ~
gitlab-runner install
gitlab-runner start

运行之后,就可以在GitLab仓库中看到运行的Runner了。

.gitlab-ci.yml脚本文件语法介绍

  先直接看下我项目中的这个文件

# 就是上文说的stages
stages:
  - build_debug # 这里就是一个stage,可以定义多个stage,这个stage就是下面的build_debug
# 构建之前会执行的脚本,这里导入本地的环境变量
before_script:
  - export ANDROID_HOME=/Users/work/Android/SDK
  - export PATH=$PATH:${ANDROID_HOME}/tools
  - export PATH=$PATH:${ANDROID_HOME}/platform-tools
  - chmod +x ./gradlew
# 声明一个名叫build_debug的构建任务
build_debug:
  stage: build_debug
  # 构建中,执行一些脚本
  script:
    - ./gradlew --stacktrace assembleDevelopDebug
  # 指定监听哪一个分支或什么时候触发Pipeline
  only: 
    - tags #这里tags的作用是当修改gitlab项目tag的时候会触发
    - test # 监听GitLab的这个分支
  #    - master
  # 指定由哪一个runner运行
  tags:
    - dev # 这个dev是上文注册Runner时的tag,和注册时候tag一样的话就会用对应的Runner来执行任务
  # 指定成功后应附加到任务的文件和目录的列表
  artifacts:
    paths:
      - app/build/outputs/
# 构建完成之后执行的脚本
#after_script:
#  - 这里如果是要配合monkey的话,一般在这个地方执行monkey的脚本

上面的脚本中已经介绍了一些语法,可以发现这些刚好可以和前文说的几个组件对应上,另外还有一些其他的语法,可以查看官方文档

总结

  现在来总结一下本篇文章的主要内容,首先,介绍了什么是GitLab CI/CD,接着,简单的介绍了GitLab CI/CD的工作原理和一些组成组件,还介绍了怎么配置本地的Runner,最后,看了.gitlab-ci.yml文件并介绍了一些常用的语法。用好GitLab CI/CD的话,是可以大大增加我们的工作效率的,把一些重复的劳动交给机器来自动完成,希望本文能让你对GitLab的 CI/CD有个基本的认识并能利用它来完成自动打包工作。


相关文章
|
4天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
23 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
1天前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
14 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
16天前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
121 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
14天前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
37 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
29天前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
79 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
1月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
36 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
2月前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
77 19
|
2月前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
92 14
|
2月前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
173 3

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    Android历史版本与APK文件结构
  • 3
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 6
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 8
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 10
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    14
  • 2
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    28
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 4
    Android历史版本与APK文件结构
    121
  • 5
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 6
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 7
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    60
  • 8
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    37
  • 9
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    73
  • 10
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    121
  • 相关实验场景

    更多

    推荐镜像

    更多