|
|
- 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
|