• 掌握使用gitlab ci构建Android包的正确方式


    最近公司在做移动端的项目,自然而然的需要搭建打包的环境。本来计划用Jenkins的,但是发现在gitlab上创建完项目后,提示去配置pipeline,于是决定用gitlab去尝试下,毕竟我觉得Jenkins的配置过于复杂了。

    gitlab-runner

    在gitlab中,gitlab-runner相当于Jenkins中的slave的概念,所以首先需要给项目配置一个runner。gitlab-runner分为三种:Shared Runner、Group Runner、Specific Runner。其中:

    • Shared Runner相当于全局的runner,所有的项目都可以使用。
    • Group Runner相当于给一个分组设置runner,因此,分组中所有的项目都可以使用。
    • Specific Runner顾名思义,就是项目特有的runner。只有这一个项目才能使用。

    个人建议使用Group Runner,你可以根据不同种类的项目,创建不同的分组,比如:Android、IOS、服务端等,然后针对每个分组创建对应的Group Runner,这样相互之间不会有影响,同时又不需要为每个工程单独创建runner。

    安装gitlab-runner

    需要在你的打包机器上安装gitlab-runner,在不同的平台上,安装gitlab-runner的方式不一致,可以参考官方文档:https://docs.gitlab.com/runner/install/。这里以mac为例:

    # 下载文件
    $ sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
    # 配置权限
    sudo chmod +x /usr/local/bin/gitlab-runner
    # 启动gitlab runner
    gitlab-runner install
    gitlab-runner start
    

    注册gitlab-runner

    [root@app3 ~]# sudo gitlab-runner register
    Runtime platform                                    arch=amd64 os=linux pid=6324 revision=1b659122 version=12.8.0
    Running in system-mode.
    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
    http://192.168.4.194/
    Please enter the gitlab-ci token for this runner:
    rbLy6bwsNbTuzD_6Bma4
    Please enter the gitlab-ci description for this runner:
    [app3]: testandroid
    Please enter the gitlab-ci tags for this runner (comma separated):
    testandroid
    Registering runner... succeeded                     runner=rbLy6bws
    Please enter the executor: parallels, docker-ssh+machine, custom, docker-ssh, shell, ssh, virtualbox, docker+machine, kubernetes, docker:
    docker
    Please enter the default Docker image (e.g. ruby:2.6):
    jangrewe/gitlab-ci-android
    Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
    

    执行上面的命令,就能将gitlab-runner注册到gitlab中,需要说明下执行命令时输入的几个参数,其中gitlab-ci coordinator URL和gitlab-ci token可以从项目(Group需要master权限)的Settings—>CI/CD—>Runners中查看,如下图所示:

    gitlab-ci description是对runner的描述,根据情况填写即可。

    gitlab-ci tags 是runner的标签,在后面的配置文件中会用到。

    enter the executor是配置runner使用的执行器,可以是shell,如果你需要执行shell脚本的话。我们这里使用的是docker,使用了一个包含Android环境的容器:jangrewe/gitlab-ci-android。

    另外,需要注意,在gitlab所在服务器的/etc/gitlab-runner/config.toml配置文件中也可以对gitlab-runner的注册信息进行修改。

    重启gitlab-runner

    需要注意的是,往gitlab注册一个新的runner之后,需要将gitlab-runner进行重启,这样,注册的runner才能生效。我在操作的时候,因为没有重启,花了好多时间解决出现的问题。其实只要重启即可解决。

    检查gitlab-runner的状态

    配置好之后,可以在项目的settings—>CI/CD中查看新增的runner是否是running状态,如下图所示:

    配置Android工程

    runner配置好后,接下来的工作就是配置Android项目,只需要在工程目录下创建.gitlab-ci.yml配置文件,然后往里面填充你想要实现的步骤即可,有点类似Jenkins中的pipeline脚本。不过,感觉gitlab ci的配置更加简单一些。我项目中的配置文件如下所示:

    image: gitlab-ci-android:V2 # 用来编译 android 项目的镜像
    
    variables:
      GRADLE_OPTS: "-Dorg.gradle.daemon=false" # 禁用 gradle 守护进程
    
    before_script:
      #  配置 gradle 的缓存目录
      - export GRADLE_USER_HOME=/cache/.gradle
      #  获取权限
      - chmod +x ./gradlew
      - chmod +x ./update-version-code.sh
    
    stages:
      - build
    
    # 提交代码自动编译
    build:
      stage: build
      only:
        - master
      script: 
        - ./gradlew assembleDebug
      tags:
        - android
    
    # 构建测试包
    qa:
      stage: build
      only:
        - qa
      script:
        - ./gradlew assembleDebug
        - sh -x /cache/deploy-android.sh
      artifacts:
        paths:
          - app/build/outputs/apk/debug/
      tags:
        - android
    

    上面配置的大致意思是:当开发往qa分支提交代码时,会触发构建测试包,打包完成后,会将包上传到一个文件服务器上,方便下载安装。

    最后上一个gitlab的效果图:

    总结

    整体来看,是不是挺简单的,大家可以直接在gitlab上玩ci/cd,大大降低了成本。所以如果大家现在还没有将CI/CD做起来的,大家可以考虑直接用gitlab来玩。

  • 相关阅读:
    【算法总结】哈夫曼树
    堆栈入门-简单计算器
    堆栈入门-括号匹配问题
    Linux下使用vim命令编辑与修改文本内容
    Ubuntu查看与结束任务进程
    Mac OS X开发者准备工作
    Mac OS X平台上Java环境的配置
    OS X平台上MySQL环境搭建
    2015 Python News
    2015 Open Source News
  • 原文地址:https://www.cnblogs.com/zhouliweiblog/p/12677635.html
Copyright © 2020-2023  润新知