diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..f10931681 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,19 @@ +default: + image: "docker.io/abb128/android-build:latest@sha256:8df16e2badb5e42d2f5e3862683c7ff0ebdcc348affe059385e42eebef79302f" + +stages: # List of stages for jobs, and their order of execution + - build + +build: + stage: build + tags: + - docker + script: + - ./setUpKeysCI.sh + - gradle assembleRelease -s + - mv build/outputs/apk/release/LatinIME-release.apk ./LatinIME-release-$CI_COMMIT_SHORT_SHA.apk + artifacts: + name: "LatinIME-release-$CI_COMMIT_SHORT_SHA" + paths: + - ./*.apk + when: manual \ No newline at end of file diff --git a/build.gradle b/build.gradle index 6904b6651..25c39d5d7 100644 --- a/build.gradle +++ b/build.gradle @@ -33,8 +33,6 @@ android { testApplicationId 'org.futo.inputmethod.latin.tests' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = false - - signingConfig signingConfigs.debug } signingConfigs { @@ -43,12 +41,29 @@ android { } } + final def keystorePropertiesFile = rootProject.file("keystore.properties") + def releaseSigning = signingConfigs.debug + if (keystorePropertiesFile.exists()) { + final def keystoreProperties = new Properties() + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) + releaseSigning = signingConfigs.create("release") { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile rootProject.file(keystoreProperties['storeFile']) + storePassword keystoreProperties['storePassword'] + } + } else { + project.logger.lifecycle('keystore.properties not found, APK may not be signed') + } + buildTypes { debug { minifyEnabled false + signingConfig signingConfigs.debug } release { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.flags' + signingConfig releaseSigning } } diff --git a/setUpKeysCI.sh b/setUpKeysCI.sh new file mode 100755 index 000000000..b0fe21133 --- /dev/null +++ b/setUpKeysCI.sh @@ -0,0 +1,6 @@ +#!/bin/sh +echo ${KEYSTORE_FILE?Need keystore file} | base64 --decode > key.jks +echo storePassword=${KEYSTORE_PASSWORD?Need keystore password} > keystore.properties +echo keyPassword=${KEY_PASSWORD?Need key password} >> keystore.properties +echo keyAlias=${KEYSTORE_ALIAS?Need key alias} >> keystore.properties +echo storeFile=key.jks >> keystore.properties \ No newline at end of file