Skip to content
This repository has been archived by the owner on Aug 19, 2023. It is now read-only.

Commit

Permalink
Improve CI and setup automatic releases on tag.
Browse files Browse the repository at this point in the history
  • Loading branch information
d4rken committed Jul 22, 2022
1 parent ca5fa9e commit 49b5a50
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 10 deletions.
14 changes: 14 additions & 0 deletions .github/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
changelog:
exclude:
labels:
- changelog-ignore
categories:
- title: ":rocket: Enhancements"
labels:
- enhancement
- title: ":lady_beetle: Bug fixes"
labels:
- bug
- title: ":shrug: Other changes"
labels:
- "*"
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Android CI
name: Code tests & eval

on:
push:
Expand All @@ -8,12 +8,12 @@ on:

jobs:
build:

name: Build and test
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: set up JDK 11
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
Expand All @@ -22,7 +22,7 @@ jobs:

- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Run tests
run: ./gradlew testRelease
- name: Build with Gradle
run: ./gradlew assembleDebug
- name: Run tests
run: ./gradlew testDebugUnitTest
83 changes: 83 additions & 0 deletions .github/workflows/release-tag.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: Tagged releases

on:
push:
tags:
- 'v*'

jobs:
release-github:
name: Create GitHub release
runs-on: ubuntu-latest
environment: foss-production
steps:
- name: Decode Keystore
env:
ENCODED_KEYSTORE: ${{ secrets.SIGNING_KEYSTORE_BASE64 }}
run: |
TMP_KEYSTORE_FILE_PATH="${RUNNER_TEMP}"/keystore
mkdir -p "${TMP_KEYSTORE_FILE_PATH}"
KEYSTORE_PATH="${TMP_KEYSTORE_FILE_PATH}"/keystore.jks
echo $ENCODED_KEYSTORE | base64 -di > "${KEYSTORE_PATH}"
echo "STORE_PATH=$(echo $KEYSTORE_PATH)" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Get the version
id: tagger
uses: jimschubert/query-tag-action@v2
with:
skip-unshallow: 'true'
abbrev: false
commit-ish: HEAD

- name: Install JDK ${{ matrix.java_version }}
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: 11

- name: Assemble beta APK
if: contains(steps.tagger.outputs.tag, '-beta')
run: ./gradlew assembleBeta
env:
VERSION: ${{ github.ref }}
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
KEY_ALIAS: release
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}

- name: Assemble release APK
if: "!contains(steps.tagger.outputs.tag, '-beta')"
run: ./gradlew assembleRelease
env:
VERSION: ${{ github.ref }}
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
KEY_ALIAS: release
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}

- name: Create pre-release
if: contains(steps.tagger.outputs.tag, '-beta')
uses: softprops/action-gh-release@v1
with:
prerelease: true
tag_name: ${{ steps.tagger.outputs.tag }}
name: ${{ steps.tagger.outputs.tag }}
generate_release_notes: true
files: app/build/outputs/apk/beta/*.apk
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Create release
if: "!contains(steps.tagger.outputs.tag, '-beta')"
uses: softprops/action-gh-release@v1
with:
prerelease: false
tag_name: ${{ steps.tagger.outputs.tag }}
name: ${{ steps.tagger.outputs.tag }}
generate_release_notes: true
files: app/build/outputs/apk/release/*.apk
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
14 changes: 9 additions & 5 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,20 @@ android {
signingConfigs {
release {}
}
Properties signingProps = new Properties()
def signingPropFile = new File(System.properties['user.home'], ".appconfig/${packageName}/signing.properties")
if (signingPropFile.canRead()) {
Properties signingProps = new Properties()
signingProps.load(new FileInputStream(signingPropFile))
}
String keyStorePath = System.getenv("STORE_PATH") ?: signingProps["release.storePath"]
File keyStore = keyStorePath ? new File(keyStorePath) : null
if (keyStore?.canRead()) {
signingConfigs {
release {
storeFile new File(signingProps['release.storePath'])
keyAlias signingProps['release.keyAlias']
storePassword signingProps['release.storePassword']
keyPassword signingProps['release.keyPassword']
storeFile keyStore
storePassword System.getenv("STORE_PASSWORD") ?: signingProps['release.storePassword']
keyAlias System.getenv("KEY_ALIAS") ?: signingProps['release.keyAlias']
keyPassword System.getenv("KEY_PASSWORD") ?: signingProps['release.keyPassword']
}
}
}
Expand Down

0 comments on commit 49b5a50

Please sign in to comment.