.craft_android_base: stage: deploy when: manual image: invent-registry.kde.org/sysadmin/ci-images/android-qt515:latest needs: [] tags: - Linux variables: GIT_STRATEGY: none # KDECI_CRAFT_PLATFORM is specified in the derived jobs KDECI_CRAFT_CACHE: /mnt/craft-cache/$KDECI_CRAFT_PLATFORM/ KDECI_CRAFT_CONFIG: ci-utilities/resources/CraftConfig.ini KDECI_CRAFT_PROJECT_CONFIG: $CI_PROJECT_DIR/src/.craft.ini interruptible: true before_script: - git clone $CI_REPOSITORY_URL --branch=$CI_COMMIT_REF_NAME src/ # Create empty .craft.ini if none exists - touch $KDECI_CRAFT_PROJECT_CONFIG - git clone https://invent.kde.org/packaging/craftmaster --branch=master - git clone https://invent.kde.org/sysadmin/ci-utilities # Define a short cut for the lengthy CraftMaster command line - function craftmaster { python3 craftmaster/CraftMaster.py --config $KDECI_CRAFT_CONFIG --config-override $KDECI_CRAFT_PROJECT_CONFIG --target $KDECI_CRAFT_PLATFORM $@; } script: # Set up craft settings and blueprint settings - craftmaster --setup # Get Craft itself ready - craftmaster -c -i craft # Install all of our dependencies - craftmaster -c --install-deps $CI_PROJECT_NAME # Build the actual application - craftmaster -c --no-cache --target master --src-dir $CI_PROJECT_DIR/src/ $CI_PROJECT_NAME # Package it up! - craftmaster -c --package --target master --src-dir $CI_PROJECT_DIR/src/ $CI_PROJECT_NAME # Save our package - packageDir=$(craftmaster -c -q --get "packageDestinationDir()" virtual/base) - mkdir $CI_PROJECT_DIR/.kde-ci-packages/ - cp -vrf $packageDir/*.apk $packageDir/metadata/*.zip $CI_PROJECT_DIR/.kde-ci-packages/ # Archive the artifacts we need for creating an application bundle - cd $CI_PROJECT_DIR # Get the relative path of the build directory - buildDir=$(craftmaster -c -q --get "buildDir()" --target master --src-dir $CI_PROJECT_DIR/src/ $CI_PROJECT_NAME) - buildDir=${buildDir#$(pwd)/} # Get the Android target (we assume a single target) - androidTarget=$(craftmaster -c -q --get "androidApkTargets" --target master --src-dir $CI_PROJECT_DIR/src/ $CI_PROJECT_NAME | cut -d "'" -f 2) - buildApkDir=${buildDir}/${androidTarget}_build_apk - mkdir app-bundle-artifacts # Archive the architecture-specific artifacts (relative to the build_apk directory) - (cd ${buildApkDir} && tar czf ${CI_PROJECT_DIR}/app-bundle-artifacts/${KDECI_CRAFT_PLATFORM}.tar.gz libs) # Remove build artifacts that we do not want to archive - rm -rf ${buildApkDir}/{build,libs,.gradle} # Archive the architecture-independent artifacts (only for android-arm64-clang) - echo ${KDECI_CRAFT_PLATFORM}/src/android/java >.files_to_archive - echo ${buildApkDir} >>.files_to_archive - if [ -f ${buildDir}/version.gradle ]; then echo ${buildDir}/version.gradle >>.files_to_archive; fi - if [ ${KDECI_CRAFT_PLATFORM} = "android-arm64-clang" ]; then tar czf app-bundle-artifacts/common.tar.gz --exclude-backups --files-from .files_to_archive; fi # Remember the build_apk path for subsequent jobs - echo "${CI_PROJECT_DIR}/${buildApkDir}" >app-bundle-artifacts/build-apk-path-${KDECI_CRAFT_PLATFORM}