From 72f711f8e59867c6de77d78fedf3b69e1432833a Mon Sep 17 00:00:00 2001
From: librelois <c@elo.tf>
Date: Thu, 25 Feb 2021 21:44:59 +0100
Subject: [PATCH] ci: create job package

---
 .gitlab-ci.yml               | 27 +++++++++++++++++++++++++++
 release/android/build-apk.sh | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+)
 create mode 100755 release/android/build-apk.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e5e87ecb..41b1255f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,6 +2,7 @@ stages:
   - format
   - build_and_test
   - quality
+  - package
 
 .env:
   image: axiomteam/gecko-ci:v0.0.5
@@ -44,3 +45,29 @@ audit_dependencies:
   script:
     - cargo deny -V
     - cargo deny check
+
+releases:test:
+  extends: .env
+  stage: package
+  allow_failure: true
+  rules:
+    - if: $CI_COMMIT_TAG
+      when: never
+    - when: manual
+  script:
+    - bash "release/android/build-apk.sh" "$(date +%Y%m%d).$(date +%H%M).$(date +%S)+0"
+  artifacts:
+    paths: &releases_artifacts
+      - work/bin/
+    expire_in: 72h
+
+releases:x64:
+  extends: .env
+  stage: package
+  rules:
+    - if: $CI_COMMIT_TAG
+  script:
+    - bash "release/android/build-apk.sh" "${CI_COMMIT_TAG#v}"
+  artifacts:
+    paths: *releases_artifacts
+    expire_in: 1 mos
diff --git a/release/android/build-apk.sh b/release/android/build-apk.sh
new file mode 100755
index 00000000..8589f33c
--- /dev/null
+++ b/release/android/build-apk.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+if [[ -z "${1}" ]]; then
+	echo "Fatal: no version given to build script"
+	exit 1
+fi
+
+APPNAME="gecko"
+VERSION=$(awk -F '+' '{ print $1 }' <<<${1})
+BUILD=$(awk -F '+' '{ print $2 }' <<<${1})
+ORI_APP="app-release.apk"
+APK_FILENAME="${APPNAME}-${VERSION}+${BUILD}.apk"
+
+echo "artifact name: ${APK_FILENAME}"
+
+## Build Rust dependancies
+echo "Compile Rust binding..."
+cargo make
+
+# Build APK
+echo "Build APK..."
+flutter clean
+flutter build apk --release --build-name $VERSION --build-number $BUILD
+
+# Create artifacts folder
+ARTIFACTS_FOLDER="work/bin"
+mkdir -p ${ARTIFACTS_FOLDER}
+
+# Move APK in artifacts folder
+APK_PATH="${ARTIFACTS_FOLDER}/${APK_FILENAME}"
+mv build/app/outputs/flutter-apk/$ORI_APP "$APK_PATH" || exit 1
+
+exit 0
-- 
GitLab