Skip to content

Instantly share code, notes, and snippets.

@JGeraldoLima
Created April 17, 2019 11:26
Show Gist options
  • Save JGeraldoLima/19d02275dd74cdc723fb8dadae823384 to your computer and use it in GitHub Desktop.
Save JGeraldoLima/19d02275dd74cdc723fb8dadae823384 to your computer and use it in GitHub Desktop.
Android .gitlab-ci.yml Gitlab CI/CD example file
image: openjdk:8-jdk
variables:
ANDROID_COMPILE_SDK: "28"
ANDROID_BUILD_TOOLS: "29.0.0-rc2"
ANDROID_SDK_TOOLS: "26.1.1" # only to register, because since some version, the link to download does not follow a pattern with the desired SDK version
APP_NAME: "MyProject"
before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --output-document=android-sdk.tgz https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
- mkdir android-sdk-linux && unzip android-sdk.tgz -d android-sdk-linux
- echo y | ./android-sdk-linux/tools/bin/sdkmanager "platform-tools"
- echo y | ./android-sdk-linux/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}"
- echo y | ./android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}"
- echo y | ./android-sdk-linux/tools/bin/sdkmanager "tools"
- echo y | ./android-sdk-linux/tools/bin/sdkmanager "extras;android;m2repository"
- echo y | ./android-sdk-linux/tools/bin/sdkmanager "extras;google;google_play_services"
- echo y | ./android-sdk-linux/tools/bin/sdkmanager "extras;google;m2repository"
- echo y | ./android-sdk-linux/tools/bin/sdkmanager "ndk-bundle"
- export ANDROID_HOME=$PWD/android-sdk-linux
- export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
- chmod +x ./gradlew
stages:
- build
- lint
- test
- package
.build_template: &build
stage: build
artifacts:
expire_in: 8 hours
paths:
- app/build/outputs/
build:release:
<<: *build
script:
- ./gradlew assembleRelease -PversionCode=$VERSION_CODE -PversionName=$VERSION_NAME
lint:
stage: lint
script:
- ./gradlew lint
########################################################################
# TESTS
.test_template: &test
stage: test
only:
- master
test:unit:
<<: *test
script:
- ./gradlew test
# TODO: add functional (Espresso) tests config in the future
########################################################################
# PACKAGE
.package_template: &package
before_script:
- mkdir -p exported
# TODO: explicit package:release:unsigned and package:release:signed in the future
package:release:
<<: *package
stage: package
environment: Release
script:
- mv app/build/outputs/apk/release/app-release.apk ./exported/${APP_NAME}-$VERSION_NAME-release.apk
dependencies:
- build:release
artifacts:
paths:
- exported
@JGeraldoLima
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment