一、项目根目录下创建一个 .gitlab-ci.yml
文件
然后在 .gitlab-ci.yml 中配置持续集成的脚本:
脚本配置详细可以看:
Configuration of your jobs with .gitlab-ci.yml
Setting up GitLab CI for Android projects
二、为项目配置 gitlab-runner
我用的 windows 电脑,可以看这篇配置 : Windows 下 docker 部署 gitlab ci
三、说明
红框中有两个对勾,说明有两个 job,顺序与 文件中定义的顺序一致。
文件内容:
image: openjdk:8-jdk
variables:
ANDROID_COMPILE_SDK: "28"
ANDROID_BUILD_TOOLS: "28.0.2"
ANDROID_SDK_TOOLS: "4333796"
before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_TOOLS}.zip
- unzip -d android-sdk-linux android-sdk.zip
- echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
- export ANDROID_HOME=$PWD/android-sdk-linux
- export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
- chmod +x ./gradlew
# temporarily disable checking for EPIPE error and use yes to accept all licenses
- set +o pipefail
- yes | android-sdk-linux/tools/bin/sdkmanager --licenses
- set -o pipefail
stages:
- build
- test
lintDebug:
stage: build
script:
- ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint
assembleDebug:
stage: build
script:
- ./gradlew assembleDebug
artifacts:
paths:
- app/build/outputs/
debugTests:
stage: test
script:
- ./gradlew -Pci --console=plain :app:testDebug
如果集成中出现错误:
可以点击进去查看错误原因,解决之后重新加载一遍:
推荐一个 Docker Android 镜像:
docker-android-sdk( https://hub.docker.com/r/runmymind/docker-android-sdk )
Update : 2019/1/15
对 CI .gitlab-ci.yml 文件内容修改,更换镜像,避免每次都下载 Android SDK :
image: runmymind/docker-android-sdk
before_script:
- chmod +x ./gradlew
stages:
- build
assembleDebug:
stage: build
script:
- ./gradlew clean
- ./gradlew assembleDebug
artifacts:
paths:
- app/build/outputs/
only:
- master
assembleRelease:
stage: build
script:
- ./gradlew clean
- ./gradlew assembleRelease
artifacts:
paths:
- app/build/outputs/
only:
- master
脚本自动化打包测试结果: