From d996621d3cf3e302271d8fec983c91bfdcc186a6 Mon Sep 17 00:00:00 2001 From: scheleaap Date: Sat, 3 Apr 2021 17:56:02 +0200 Subject: [PATCH 1/5] ci: Configure GitHub Actions --- .github/workflows/main.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..6519365 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,15 @@ +name: Main +on: [push] +jobs: + compile-test-package: + name: Compile, test, package + runs-on: ubuntu-20.04 + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Compile, test and package + run: ./gradlew clean compile test bundleRelease From a016a3381dcc01521379a65aa5d0a61b7b09df3d Mon Sep 17 00:00:00 2001 From: scheleaap Date: Sat, 3 Apr 2021 18:04:09 +0200 Subject: [PATCH 2/5] wip --- .travis.yml => .github/workflows/old.travis.yml | 0 app/build.gradle | 16 ++++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) rename .travis.yml => .github/workflows/old.travis.yml (100%) diff --git a/.travis.yml b/.github/workflows/old.travis.yml similarity index 100% rename from .travis.yml rename to .github/workflows/old.travis.yml diff --git a/app/build.gradle b/app/build.gradle index 05f2e2d..7cef357 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,14 +24,14 @@ android { versionName "0.0.29" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - signingConfigs { - release { - storeFile rootProject.file(keystoreProperties["storeFile"]) - storePassword keystoreProperties["storePassword"] - keyAlias keystoreProperties["keyAlias"] - keyPassword keystoreProperties["keyPassword"] - } - } + // signingConfigs { + // release { + // storeFile rootProject.file(keystoreProperties["storeFile"]) + // storePassword keystoreProperties["storePassword"] + // keyAlias keystoreProperties["keyAlias"] + // keyPassword keystoreProperties["keyPassword"] + // } + // } buildTypes { release { minifyEnabled false From f23097be9a06de8c88224208b6913db47029f8fb Mon Sep 17 00:00:00 2001 From: scheleaap Date: Sat, 3 Apr 2021 18:09:38 +0200 Subject: [PATCH 3/5] wip --- .../{old.travis.yml => .travis.yml.bak} | 0 app/build.gradle | 16 ++++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) rename .github/workflows/{old.travis.yml => .travis.yml.bak} (100%) diff --git a/.github/workflows/old.travis.yml b/.github/workflows/.travis.yml.bak similarity index 100% rename from .github/workflows/old.travis.yml rename to .github/workflows/.travis.yml.bak diff --git a/app/build.gradle b/app/build.gradle index 7cef357..05f2e2d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,14 +24,14 @@ android { versionName "0.0.29" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - // signingConfigs { - // release { - // storeFile rootProject.file(keystoreProperties["storeFile"]) - // storePassword keystoreProperties["storePassword"] - // keyAlias keystoreProperties["keyAlias"] - // keyPassword keystoreProperties["keyPassword"] - // } - // } + signingConfigs { + release { + storeFile rootProject.file(keystoreProperties["storeFile"]) + storePassword keystoreProperties["storePassword"] + keyAlias keystoreProperties["keyAlias"] + keyPassword keystoreProperties["keyPassword"] + } + } buildTypes { release { minifyEnabled false From 70ab0e7518c6e0b99fdcb9a921c4dfa372dff354 Mon Sep 17 00:00:00 2001 From: scheleaap Date: Sat, 3 Apr 2021 20:32:22 +0200 Subject: [PATCH 4/5] wip --- build.sh => .build/release.sh | 28 ++++++++++++------- build-helpers.sh => .build/travis-utils.sh | 0 .github/workflows/main.yml | 13 ++++++++- .../.travis.yml.bak => .travis.yml.bak | 0 dev.md | 8 ++++++ 5 files changed, 38 insertions(+), 11 deletions(-) rename build.sh => .build/release.sh (78%) rename build-helpers.sh => .build/travis-utils.sh (100%) rename .github/workflows/.travis.yml.bak => .travis.yml.bak (100%) diff --git a/build.sh b/.build/release.sh similarity index 78% rename from build.sh rename to .build/release.sh index f79c691..718eb5d 100755 --- a/build.sh +++ b/.build/release.sh @@ -20,8 +20,6 @@ function create_changelogs_if_not_present() { create_changelog_if_not_present ${version_code} "en-US" create_changelog_if_not_present ${version_code} "nl-NL" local changelog_path="fastlane/metadata/android/*/changelogs" - # travis_add_and_commit "$changelog_path" "chore: Added default changelogs for version code ${version_code}." - # travis_push "$TRAVIS_BRANCH" } function get_version_code_from_gradle() { @@ -35,11 +33,10 @@ function get_version_number_from_gradle() { function tag_git_with_version_number() { local version_number="$1" - if [[ "$version_number" != "" ]]; then + if [[ -n "$version_number" ]]; then echo "Tagging version $version_number" git tag -a "$version_number" -m"Version $version_number [ci skip]" - # travis_push $TRAVIS_BRANCH - travis_push "$version_number" + git push "$version_number" else >&2 echo "Version number not tagged!" fi @@ -50,12 +47,23 @@ set -ex basedir=$(dirname $0) source $basedir/build-helpers.sh -# travis_checkout_branch version_code=$(get_version_code_from_gradle) version_number=$(get_version_number_from_gradle) + +# Create changelogs create_changelogs_if_not_present ${version_code} + +# Decrypt and unpack secrets +openssl aes-256-cbc -K $encrypted_3b9f0b9d36d1_key -iv $encrypted_3b9f0b9d36d1_iv -in secrets.tar.enc -out secrets.tar -d +tar xvf secrets.tar + +# Create release ./gradlew clean bundleRelease -if [[ "${TRAVIS_BRANCH}" == "master" ]]; then - bundle exec fastlane deploy version_code:${version_code} - tag_git_with_version_number ${version_number} -fi + +# Upload to Google Play +# TODO +# bundle exec fastlane deploy version_code:${version_code} + +# Create a Git tag +# TODO +# tag_git_with_version_number ${version_number} diff --git a/build-helpers.sh b/.build/travis-utils.sh similarity index 100% rename from build-helpers.sh rename to .build/travis-utils.sh diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6519365..e31882b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,6 +10,17 @@ jobs: - name: Set up JDK uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: "1.8" - name: Compile, test and package run: ./gradlew clean compile test bundleRelease + release: + name: Release + runs-on: ubuntu-20.04 + needs: compile-test-package + if: ${{ github.ref == 'refs/heads/master' }} + steps: + - uses: actions/setup-ruby@v1 + with: + ruby-version: "2.7" + bundler-cache: true + - run: .build/release.sh diff --git a/.github/workflows/.travis.yml.bak b/.travis.yml.bak similarity index 100% rename from .github/workflows/.travis.yml.bak rename to .travis.yml.bak diff --git a/dev.md b/dev.md index cc00686..c96338c 100644 --- a/dev.md +++ b/dev.md @@ -2,6 +2,14 @@ ## Signing and Deploying +TODO: See +https://www.raywenderlich.com/19407406-continuous-delivery-for-android-using-github-actions +Steps: +* Configure GitHub token + + + + The Travis CLI was installed as follows (on Ubuntu 16.04): ```sh sudo apt-get install ruby ruby-dev From 08528ed56a8f53533178bad5bd13115d04f31195 Mon Sep 17 00:00:00 2001 From: scheleaap Date: Sat, 3 Apr 2021 20:54:04 +0200 Subject: [PATCH 5/5] wip --- .build/release.sh | 3 ++- .github/workflows/main.yml | 5 ++++- dev.md | 29 +++++++++++++++++++++++++---- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/.build/release.sh b/.build/release.sh index 718eb5d..128c881 100755 --- a/.build/release.sh +++ b/.build/release.sh @@ -54,7 +54,8 @@ version_number=$(get_version_number_from_gradle) create_changelogs_if_not_present ${version_code} # Decrypt and unpack secrets -openssl aes-256-cbc -K $encrypted_3b9f0b9d36d1_key -iv $encrypted_3b9f0b9d36d1_iv -in secrets.tar.enc -out secrets.tar -d +gpg --quiet --batch --yes --decrypt --passphrase="$SECRETS_FILE_PASSPHRASE" \ + --output secrets.tar secrets.tar.gpg tar xvf secrets.tar # Create release diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e31882b..d871128 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -23,4 +23,7 @@ jobs: with: ruby-version: "2.7" bundler-cache: true - - run: .build/release.sh + - name: Create a release + run: .build/release.sh + env: + SECRETS_FILE_PASSPHRASE: ${{ secrets.SECRETS_FILE_PASSPHRASE }} diff --git a/dev.md b/dev.md index c96338c..4c381fb 100644 --- a/dev.md +++ b/dev.md @@ -1,13 +1,34 @@ # Documentation -## Signing and Deploying - TODO: See https://www.raywenderlich.com/19407406-continuous-delivery-for-android-using-github-actions -Steps: -* Configure GitHub token +TODO: Search for "TODO" in the entire repository +TODO: Delete secrets.tar.enc + + +## Signing and Deploying (GitHub Actions) + +<-- Reference: https://docs.github.com/en/actions/reference/encrypted-secrets#limits-for-secrets --> + +1. Create the signing key: + ```sh + keytool -genkey -v -keystore scheleaap.jks -alias wmsnotes -keyalg RSA -keysize 2048 -validity 10000 + ``` +1. Create a file containing all secrets: + ```sh + tar cvf secrets.tar scheleaap.jks keystore.properties google-services.json + travis login --com + travis encrypt-file --com --add secrets.tar + ``` +1. Encrypt the secrets file: + ```sh + gpg --symmetric --cipher-algo AES256 secrets.tar + ``` + You will be asked to enter a passphrase. +1. [Create a repository secret](https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository) named `SECRETS_FILE_PASSPHRASE` containing the passphrase. +## Singing and Deploying (Travis CI) The Travis CLI was installed as follows (on Ubuntu 16.04):