Skip to content

Commit

Permalink
Streamline various setups of gradle and java into a github action for…
Browse files Browse the repository at this point in the history
… reuse
  • Loading branch information
eyedol committed Aug 13, 2024
1 parent 2be0b7d commit 924ab09
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 23 deletions.
43 changes: 43 additions & 0 deletions .github/actions/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: "setup"
description: "Setups App Version, JDK and Gradle for the project"
author: "Henry Addo"

inputs:
java-version:
description: "Java version"
default: "21"
java-distribution:
description: "Java distribution"
default: "zulu"

runs:
using: "composite"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Validate Gradle Wrapper
uses: gradle/actions/wrapper-validation@v3
- name: Setup JDK ${{ inputs.java-version }} from ${{ inputs.java-distribution }} distribution
uses: actions/setup-java@v4
with:
distribution: ${{ inputs.java-distribution }}
java-version: ${{ inputs.java-version }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
gradle-version: wrapper
- name: Setup Konan cache key # Kotlin native dependencies
id: konan-cache-key
shell: bash
run: echo "KOTLIN_VERSION=$(grep -oE 'kotlin\s*=\s*"[0-9.]*"' gradle/libs.versions.toml | grep -oE '[0-9.]+')" >> $GITHUB_OUTPUT

- name: Cache Konan # Kotlin native dependencies
uses: actions/cache@v4
with:
path: |
~/.konan
key: v1-konan-${{ runner.os }}-${{ hashFiles('.sdkmanrc') }}-${{ steps.konan-cache-key.outputs.KOTLIN_VERSION }}
- name: Setup App Version Number
shell: bash
run: |
echo "VERSION_NAME=$(./gradlew -q --no-configuration-cache printVersionName)" >> $GITHUB_ENV
34 changes: 11 additions & 23 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,30 +28,11 @@ jobs:
os: macos-latest
- target: testDebugUnitTest
os: ubuntu-latest
- snapshot-target: publishIosArm64PublicationToSonatypeRepository
os: macos-latest
- snapshot-target: publishAndroidReleasePublicationToSonatypeRepository
os: ubuntu-latest
- snapshot-target: publishKotlinMultiplatformPublicationToSonatypeRepository
os: ubuntu-latest
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v4
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v3
- uses: actions/cache@v4
with:
path: |
~/.konan
key: ${{ runner.os }}-${{ hashFiles('**/.lock') }}
- name: Retrieve Version
run: echo "VERSION_NAME=$(./gradlew -q --no-configuration-cache printVersionName)" >> $GITHUB_ENV
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Setup
uses: ./.github/actions/setup
- name: Spotless Check
run: ./gradlew spotlessKtsCheck --stacktrace
- name: Lint
Expand All @@ -60,9 +41,16 @@ jobs:
uses: gradle/actions/setup-gradle@v3
with:
arguments: ${{ matrix.target }}
publish-snapshots:
runs-on: macos-latest
if: github.repository == 'addhen/klocation' && github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
needs: [build]
steps:
- name: Setup
uses: ./.github/actions/setup
- name: Upload Snapshot
uses: gradle/actions/setup-gradle@v3
if: endsWith(env.VERSION_NAME, '-SNAPSHOT')
if: success() && endsWith(env.VERSION_NAME, '-SNAPSHOT')
env:
OSSRH_GPG_SECRET_KEY_PASSWORD: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}
OSSRH_GPG_SECRET_KEY_ID: ${{ secrets.OSSRH_GPG_SECRET_KEY_ID }}
Expand All @@ -72,6 +60,6 @@ jobs:
with:
arguments: |
--no-configuration-cache
${{ matrix.snapshot-target }}
publishAllPublicationsToSonatypeRepository
closeSonatypeStagingRepository
-Psigning.gnupg.keyName='${{secrets.OSSRH_GPG_SECRET_KEY_ID}}'
5 changes: 5 additions & 0 deletions .sdkmanrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Enable auto-env through the sdkman_auto_env config
# See https://sdkman.io/usage#config
# Add key=value pairs of SDKs to use below
# https://sdkman.io/usage#env for usage
java=21.0.2-zulu

0 comments on commit 924ab09

Please sign in to comment.