From a084f45dd28374134d38f851d726bfdcbe6c9293 Mon Sep 17 00:00:00 2001
From: mueller-ma <mueller-ma@users.noreply.github.com>
Date: Fri, 9 Mar 2018 21:39:06 +0100
Subject: [PATCH] Autobump version and push tag for fdroid (#705)

When creating a tag, travis...
* bumps version name and code
* builds store descriptions
* commits both
* creates a tag with the suffix "-fdroid"
* pushes the tag to github

F-Droid will build a new apk on every "-fdroid" tag.

Signed-off-by: mueller-ma <mueller-ma@users.noreply.github.com>
---
 .gitignore                                    |   4 ++
 .travis.yml                                   |   7 +--
 .../generate_and_validate.sh                  |   0
 fastlane/Appfile                              |   2 +
 fastlane/Fastfile                             |  44 ++++++++++++++++++
 travis/bump-versioncode.sh                    |  31 ++++++++++++
 travis/commit-version-and-metadata.sh         |  26 +++++++++++
 travis/key.enc                                | Bin 0 -> 3248 bytes
 travis/key.pub                                |   1 +
 travis/ssh-config                             |   3 ++
 10 files changed, 113 insertions(+), 5 deletions(-)
 mode change 100644 => 100755 assets/store_descriptions/generate_and_validate.sh
 create mode 100644 fastlane/Appfile
 create mode 100644 fastlane/Fastfile
 create mode 100644 travis/bump-versioncode.sh
 create mode 100644 travis/commit-version-and-metadata.sh
 create mode 100644 travis/key.enc
 create mode 100644 travis/key.pub
 create mode 100644 travis/ssh-config

diff --git a/.gitignore b/.gitignore
index 235ca84f..4a20bb42 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,7 @@ local.properties
 
 # macOS clutter
 .DS_Store
+
+# Fastlane docs and logs
+fastlane/README.md
+fastlane/report.xml
diff --git a/.travis.yml b/.travis.yml
index d7126572..d848e96f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -42,6 +42,7 @@ before_script:
 - android list target
 
 script:
+- bash travis/bump-versioncode.sh
 - ./gradlew build connectedCheck test jacocoTestReport
 - bash assets/store_descriptions/generate_and_validate.sh
 
@@ -49,11 +50,7 @@ after_success:
 - bash <(curl -s https://codecov.io/bash)
 
 before_deploy:
-- git config --local user.name "TravisCI"
-- git config --local user.email "support@openhab.org"
-- git add fastlane/*
-- git commit -m "Update fastlane metadata"
-#- git push origin :refs/heads/master
+- bash travis/commit-version-and-metadata.sh
 - openssl aes-256-cbc -K $encrypted_903a93ed2309_key -iv $encrypted_903a93ed2309_iv
   -in keystore.enc -out keystore -d
 - cp $TRAVIS_BUILD_DIR/keystore $HOME
diff --git a/assets/store_descriptions/generate_and_validate.sh b/assets/store_descriptions/generate_and_validate.sh
old mode 100644
new mode 100755
diff --git a/fastlane/Appfile b/fastlane/Appfile
new file mode 100644
index 00000000..f1cf48cf
--- /dev/null
+++ b/fastlane/Appfile
@@ -0,0 +1,2 @@
+json_key_file "" # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
+package_name "org.openhab.habdroid"
diff --git a/fastlane/Fastfile b/fastlane/Fastfile
new file mode 100644
index 00000000..89d839f6
--- /dev/null
+++ b/fastlane/Fastfile
@@ -0,0 +1,44 @@
+# Customize this file, documentation can be found here:
+# https://docs.fastlane.tools/actions/
+# All available actions: https://docs.fastlane.tools/actions
+# can also be listed using the `fastlane actions` command
+
+# Change the syntax highlighting to Ruby
+# All lines starting with a # are ignored when running `fastlane`
+
+# If you want to automatically update fastlane if a new version is available:
+# update_fastlane
+
+# This is the minimum version number required.
+# Update this, if you use features of a newer version
+fastlane_version "2.69.3"
+
+# Opt out of sending metrics and crash reports
+opt_out_usage
+opt_out_crash_reporting
+
+default_platform :android
+
+platform :android do
+  desc "Deploy a new version to the Google Play"
+  lane :deploy do
+    upload_to_play_store(
+      track: 'production',
+      apk: "$HOME/apks_to_deploy/openhab-android.apk"
+    )
+  end
+
+  desc "Deploy a new beta version to the Google Play"
+  lane :betaDeploy do
+    upload_to_play_store(
+      track: 'beta',
+      apk: "$HOME/apks_to_deploy/openhab-android.apk"
+    )
+  end
+end
+
+# More information about multiple platforms in fastlane: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
+# All available actions: https://docs.fastlane.tools/actions
+
+# fastlane reports which actions are used. No personal data is recorded.
+# Learn more at https://docs.fastlane.tools/#metrics
diff --git a/travis/bump-versioncode.sh b/travis/bump-versioncode.sh
new file mode 100644
index 00000000..e74d92c4
--- /dev/null
+++ b/travis/bump-versioncode.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+
+set -e
+
+if $(echo "$TRAVIS_TAG" | grep -q "fdroid")
+then
+    echo "Tag for F-Droid detected. Nothing to do"
+    exit 1
+fi
+
+manifest="mobile/src/main/AndroidManifest.xml"
+
+currentVersionCode=$(grep 'android:versionCode' $manifest | sed -r 's/(.*)"(.*)"/\2/')
+let currentVersionCode++
+
+if [ -z "$TRAVIS_TAG" ]
+then
+    TRAVIS_TAG=$(git rev-parse HEAD)
+    echo "Tag is empty, use git hash ($TRAVIS_TAG) instead"
+fi
+
+if [ -z "$currentVersionCode" ] || [ -z "$TRAVIS_TAG" ]
+then
+    echo "Code ($currentVersionCode) or tag ($TRAVIS_TAG) are empty! Don't bump anything."
+else
+    echo "New version code is $currentVersionCode and name $TRAVIS_TAG"
+    echo "Replace versionCode"
+    sed --in-place -r "s/android:versionCode=\"(.*)\"/android:versionCode=\"${currentVersionCode}\"/" $manifest
+    echo "Replace versionName"
+    sed --in-place -r "s/android:versionName=\"(.*)\"/android:versionName=\"${TRAVIS_TAG}\"/" $manifest
+fi
diff --git a/travis/commit-version-and-metadata.sh b/travis/commit-version-and-metadata.sh
new file mode 100644
index 00000000..8b37f4c3
--- /dev/null
+++ b/travis/commit-version-and-metadata.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+
+set -e
+
+manifest="mobile/src/main/AndroidManifest.xml"
+
+echo "Configure git"
+git config --local user.name "TravisCI"
+git config --local user.email "support@openhab.org"
+echo "Git add"
+git add fastlane/*
+git add $manifest
+echo "Git commit"
+git commit -m "Bump version to $TRAVIS_TAG and update fastlane metadata"
+echo "Git tag"
+git tag -a "${TRAVIS_TAG}-fdroid" -m "${TRAVIS_TAG} for F-Droid"
+echo "Git decrypt key"
+openssl aes-256-cbc -K $encrypted_c0c05d762590_key -iv $encrypted_c0c05d762590_iv -in travis/key.enc -out travis/key -d > /dev/null 2>&1
+echo "Copy ssh config"
+cp travis/ssh-config ~/.ssh/config
+echo "Git add remote"
+git remote add github git@github.com:openhab/openhab-android
+echo "Git fetch"
+git fetch github
+echo "Git push"
+git push --quiet --set-upstream github :refs/heads/master > /dev/null 2>&1
diff --git a/travis/key.enc b/travis/key.enc
new file mode 100644
index 0000000000000000000000000000000000000000..f421899683c58fa2f1ef61a9254db93372405277
GIT binary patch
literal 3248
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
BSxo={

literal 0
HcmV?d00001

diff --git a/travis/key.pub b/travis/key.pub
new file mode 100644
index 00000000..0b1babef
--- /dev/null
+++ b/travis/key.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGmbjX/U2Li5YdL9smiRif3LNs/PKVuobAZS7Zva0FuApZggVx/V+cvBDyJDJAjw33WHCp/gQ0FeMrYvpZltzwJh/8HcahuBXbp5JEMMZVYdg1vIjMJ4QuIiF512SPJLq974FB4VCcbWgSpnGiMnH/MtX4ETFkYsOz0d2jEgZDH/vl7inMrym/GNJoN7p/UON6aE03RcRbpLIjgxtUQLE1S33pNkUvJQY9bTcbeCxobGR/iSSThEoOJv6hZtF153UBoZIuK5SQFJvBz3DcQi7WAGQyZOa83Drz4iq6OcoO7V6gSxszMbSdeJfaaAw19jD/P2mS0I6MI3k+1sC5cwOJHrpTNbmsXLNn8N3OFDSPagxxLQn1zVTELHp+HvN4zMgLnskEZMavETAmizfYEvmCVKh+/sykf2L40z9ZyimUPVEvgJl4/MYeIjeYnMfwc0xC8txppSI3qkU9ljfe5j9L9nFzYtvE34T9pL3Dd4TuIN3hW0WLnuRHBb4yxaPk/xfCdhLhJI5xqKTE5Y6fXT41g1F+eAqHrd3NrySnkvzJJPmBpYJBj3dEX7rOXnZxw/5NG9cklRVPbS/mQ1zqoLrH6AeI5IcN0FZk8N3uoEpjZglgrtRGhos5OA4Bno5vjxNvVadHbmY6UBCNMIqpP3/nbfS2mMl50CK//jDiaH/++Q== travis
diff --git a/travis/ssh-config b/travis/ssh-config
new file mode 100644
index 00000000..134ac8b5
--- /dev/null
+++ b/travis/ssh-config
@@ -0,0 +1,3 @@
+Host github.com
+    HostName github.com
+    IdentityFile /home/travis/build/openhab/openhab-android/travis/key
-- 
GitLab