fedilab-Android-App/.gitlab-ci.yml

86 lines
3.7 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

image: hatsoftwares/mastalab-ci:latest
before_script:
- export ANDROID_HOME=/opt/android-sdk-linux
- export PATH=$PATH:/opt/android-sdk-linux/platform-tools/
- chmod +x gradlew
stages:
- build-and-test
- tag
.no-upload: &no-upload
stage: build-and-test
retry: 2
assembleDebug:
<<: *no-upload
cache:
key: "${CI_COMMIT_TAG}"
paths:
- app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk
- app/build/outputs/apk/playstore/debug/app-playstore-debug.apk
policy: push
script:
- ./gradlew assembleDebug
lintDebug:
<<: *no-upload
script:
- ./gradlew -Pci --console=plain :app:lintFdroidDebug -PbuildDir=lint
except:
- tags
debugTests:
<<: *no-upload
script:
- ./gradlew -Pci --console=plain :app:testFdroidDebugUnitTest
except:
- tags
## PROTECTED VARIABLES TO SET IN GITLAB:
# - GITLAB_API_TOKEN: token you create on Gitlab
# - NC_REMOTE_DIR: like https://YOUR_NEXTCLOUD/remote.php/dav/files/YOUR_USER/mastalab (no trailing slash)
# - NC_SHARE_URL: share the folder in Nextcloud with public link and put your public link here (no trailing slash)
# - NC_USER: nextcloud user
# - NC_PASSWORD: nextcloud password
## Protect all tags in Gitlab repo settings (do a wildcard, ie '*')
# For now, it uses the assembleDebug builds, you'll need to create a job in build-and-test to create the apks, with only: - tags and add except: - tags to assembleDebug (like in debugTests)
# In it, put something like this to get your signature key file:
# - curl -s --output signature.jsk -u "${NC_USER}:${NC_PASSWORD}" "https://YOUR_NEXTCLOUD/remote.php/dav/files/YOUR_USER/signature.jsk"
putApkOnTags:
image: hatsoftwares/curl-jq:latest
stage: tag
retry: 2
cache:
key: "${CI_COMMIT_TAG}"
paths:
- app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk
- app/build/outputs/apk/playstore/debug/app-playstore-debug.apk
policy: pull
script:
- export PROJECT_API_URL="https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}"
- export DESCRIPTION_URL="${PROJECT_API_URL}/repository/tags/${CI_COMMIT_TAG}"
- export RELEASE_URL="${DESCRIPTION_URL}/release"
- export NC_UPLOAD_URL="${NC_REMOTE_DIR}/${CI_COMMIT_TAG}"
- export NC_DOWNLOAD_URL="${NC_SHARE_URL}/download?path=%2F${CI_COMMIT_TAG}%2F&files="
- 'export HEADER="Private-Token: ${GITLAB_API_TOKEN}"'
- export fdroidUrl="${NC_DOWNLOAD_URL}app-fdroid-debug.apk"
- export playstoreUrl="${NC_DOWNLOAD_URL}app-playstore-debug.apk"
- 'curl -s -u "${NC_USER}:${NC_PASSWORD}" -X MKCOL "${NC_UPLOAD_URL}"'
- 'curl -s -u "${NC_USER}:${NC_PASSWORD}" -T app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk "${NC_UPLOAD_URL}/app-fdroid-debug.apk"'
- 'curl -s -u "${NC_USER}:${NC_PASSWORD}" -T app/build/outputs/apk/playstore/debug/app-playstore-debug.apk "${NC_UPLOAD_URL}/app-playstore-debug.apk"'
- export description=$(curl -s --header "${HEADER}" "${DESCRIPTION_URL}" | jq .release.description | sed -e 's@"@@g')
- if [[ $description == 'null' ]]; then export METHOD="POST"; echo -e "[Get the fdroid apk](${fdroidUrl})\n\n[Get the play store apk](${playstoreUrl})" > /tmp/text; fi
- if [[ $description != 'null' ]]; then export METHOD="PUT"; echo -e "${description}\n\n[Get the fdroid apk](${fdroidUrl})\n\n[Get the play store apk](${playstoreUrl})" > /tmp/text; fi
- curl -s --request $METHOD --data-urlencode "description@/tmp/text" --header "${HEADER}" "${RELEASE_URL}"
only:
- tags
pouet-it:
image: hatsoftwares/pouet-it-from-ci:latest
script:
- cd /opt/pouet-it-from-ci
- export MESSAGE=$(echo -e "I just released a new version of ${CI_PROJECT_NAME} !\n${CI_PROJECT_URL}/tags/${CI_COMMIT_TAG}")
- carton exec ./pouet-it-from-ci.pl
only:
- tags