|
image: openjdk:8-jdk
|
|
|
|
stages:
|
|
- test
|
|
- build
|
|
- deploy
|
|
|
|
variables:
|
|
GIT_SUBMODULE_STRATEGY: recursive
|
|
GITLAB_URL: "framagit.org"
|
|
ANDROID_SDK_TOOLS: "4333796"
|
|
ANDROID_HOME: "$CI_PROJECT_DIR/.android-sdk"
|
|
|
|
cache:
|
|
key: ${CI_PIPELINE_ID}
|
|
paths:
|
|
- "$ANDROID_HOME/"
|
|
- .gradle/
|
|
|
|
before_script:
|
|
# Get sdk version from project
|
|
- export ANDROID_COMPILE_SDK=`egrep '^[[:blank:]]+compileSdkVersion' app/build.gradle | awk '{print $2}'`
|
|
# Explict output for logging purpose only
|
|
- echo $ANDROID_HOME
|
|
- echo $ANDROID_SDK_TOOLS
|
|
- echo $ANDROID_COMPILE_SDK
|
|
# Fetch the specified SDK tools version to build with
|
|
# Currently framagit.org have all runner with the same tag and don't use a distributed cache, so validate if restored the cache per pipeline ID
|
|
- if [ ! -d "$ANDROID_HOME" ]; then
|
|
- wget --quiet --output-document=/tmp/android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_TOOLS}.zip
|
|
- unzip -q -o -d $ANDROID_HOME /tmp/android-sdk.zip
|
|
# Install platform tools and Android SDK for the compile target
|
|
- echo y | $ANDROID_HOME/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
|
|
- fi
|
|
# Adds to environment path
|
|
- echo $CI_PROJECT_DIR
|
|
- export PATH=$PATH:$ANDROID_HOME/platform-tools/
|
|
- chmod +x ./gradlew
|
|
|
|
lintAll:
|
|
stage: test
|
|
except:
|
|
- main
|
|
script:
|
|
- ./gradlew --console=plain lint
|
|
- ./gradlew --console=plain checkstyle
|
|
|
|
lintRelease:
|
|
stage: test
|
|
only:
|
|
- main
|
|
script:
|
|
- ./gradlew --console=plain lintRelease
|
|
- ./gradlew --console=plain checkstyle
|
|
|
|
testAll:
|
|
stage: test
|
|
except:
|
|
- main
|
|
script:
|
|
- ./gradlew --console=plain test
|
|
|
|
testRelease:
|
|
stage: test
|
|
only:
|
|
- main
|
|
script:
|
|
- ./gradlew --console=plain testReleaseUnitTest
|
|
|
|
buildDebug:
|
|
stage: build
|
|
except:
|
|
- main
|
|
script:
|
|
- ./gradlew assembleDebug
|
|
artifacts:
|
|
expire_in: 1 week
|
|
paths:
|
|
- app/build/outputs/
|
|
|
|
buildRelease:
|
|
stage: build
|
|
only:
|
|
- main
|
|
script:
|
|
- ./gradlew assembleRelease
|
|
artifacts:
|
|
expire_in: 1 week
|
|
paths:
|
|
- app/build/outputs/
|
|
|
|
release:
|
|
stage: deploy
|
|
only:
|
|
- main
|
|
before_script:
|
|
- apt-get update -qq && apt-get install -y -qq pandoc wget
|
|
- wget --quiet --output-document=/tmp/nvm-install.sh https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh
|
|
- bash /tmp/nvm-install.sh
|
|
- export NVM_DIR="$HOME/.nvm" &&. "$NVM_DIR/nvm.sh" && nvm install --lts
|
|
- eval $(ssh-agent -s)
|
|
- ssh-add <(echo "$GIT_SSH_KEY")
|
|
- mkdir -p ~/.ssh && ssh-keyscan $GITLAB_URL >> ~/.ssh/known_hosts
|
|
- git config --global user.email $GIT_AUTHOR_EMAIL
|
|
- git config --global user.name $GIT_AUTHOR_NAME
|
|
cache: {}
|
|
script:
|
|
- npm install -g semantic-release @semantic-release/commit-analyzer @semantic-release/release-notes-generator @semantic-release/changelog @semantic-release/exec @semantic-release/git @semantic-release/gitlab
|
|
- semantic-release
|
|
- git fetch
|
|
- git checkout develop
|
|
- git rebase origin/main
|
|
- git push git@${GITLAB_URL}:${CI_PROJECT_PATH}.git develop
|