Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
d9392fa
initial gradle workflows
david-igbinedion Jul 31, 2026
2a27742
Modify to match maven style
david-igbinedion Aug 1, 2026
e068fd4
implement actionlint recommendations
david-igbinedion Aug 1, 2026
607b626
Update action versions
david-igbinedion Aug 3, 2026
e419e07
do not publish for now
david-igbinedion Aug 3, 2026
f3ec5d6
change build command
david-igbinedion Aug 3, 2026
d20f3ee
correct secret names
david-igbinedion Aug 3, 2026
83b6591
dependency submission path
david-igbinedion Aug 3, 2026
b1f86ad
recalculate build number
david-igbinedion Aug 4, 2026
58ceab8
read app version directly from gradle.properties instead of calling .…
david-igbinedion Aug 4, 2026
9cecfbd
uncomment publish
david-igbinedion Aug 4, 2026
699dfc3
confirm tag matches appversion
david-igbinedion Aug 4, 2026
a470997
rm .DS_Store
david-igbinedion Aug 4, 2026
d67990b
remove blank spaces
david-igbinedion Aug 5, 2026
7ed1c41
Merge branch 'master' into FOLIO-4554-gradle-workflows
david-igbinedion Aug 5, 2026
d10dfaa
remove trailing whitespaces and add missing-final-newline
david-igbinedion Aug 5, 2026
5bd6345
double quote to prevent globbing and word splitting
david-igbinedion Aug 5, 2026
80e5af6
Update CHANGELOG
david-igbinedion Aug 5, 2026
9ac506d
Fix the CHANGELOG
dcrossleyau Aug 6, 2026
c3c2c1c
Merge branch 'master' into FOLIO-4554-gradle-workflows
dcrossleyau Aug 6, 2026
3a4fcf7
add image description publish and modify inputs
david-igbinedion Aug 7, 2026
a308b4d
Merge branch 'FOLIO-4554-gradle-workflows' of https://github.com/foli…
david-igbinedion Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions .github/workflows/gradle-build-metadata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
name: Build Metadata

on:
workflow_call:
inputs:
gradle-version:
description: Version returned from get-gradle-version workflow.
required: true
type: string

outputs:
artifact-version:
description: Final artifact version.
value: ${{ jobs.metadata.outputs.artifact-version }}
docker-registry:
description: Docker Hub organization.
value: ${{ jobs.metadata.outputs.docker-registry }}
is-release:
description: Whether this is a release build.
value: ${{ jobs.metadata.outputs.is-release }}
is-main-branch:
description: Whether this build is running on the default branch.
value: ${{ jobs.metadata.outputs.is-main-branch }}
do-docker-push:
description: Whether Docker images should be pushed.
value: ${{ jobs.metadata.outputs.do-docker-push }}
repo-name:
description: Name of the GitHub Repository.
value: ${{ jobs.metadata.outputs.repo-name}}
repo-description:
description: Description of the GitHub Repository.
value: ${{ jobs.metadata.outputs.repo-description }}

jobs:
metadata:
name: Generate Build Metadata
runs-on: ubuntu-latest
timeout-minutes: 10

outputs:
artifact-version: ${{ steps.metadata.outputs.artifact-version }}
docker-registry: ${{ steps.metadata.outputs.docker-registry }}
is-release: ${{ steps.metadata.outputs.is-release }}
is-main-branch: ${{ steps.metadata.outputs.is-main-branch }}
do-docker-push: ${{ steps.metadata.outputs.do-docker-push }}
repo-name: ${{ steps.metadata.outputs.repo-name }}
repo-description: ${{ steps.metadata.outputs.repo-description }}

steps:
- name: Generate metadata
id: metadata
shell: bash
env:
GRADLE_VERSION: ${{ inputs.gradle-version }}
RUN_NUMBER: ${{ github.run_number }}
REF_TYPE: ${{ github.ref_type }}
REF_NAME: ${{ github.ref_name }}
EVENT_NAME: ${{ github.event_name }}
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
REPO_DESC: ${{ github.event.repository.description }}
run: |
BASE_NUMBER=2000
BUILD_NUMBER=$(( BASE_NUMBER + RUN_NUMBER ))
echo "Gradle version: ${GRADLE_VERSION}"
echo "Git ref: ${REF_NAME} (${REF_TYPE})"

if [[ "${REF_TYPE}" == "tag" ]]; then
TAG_VERSION="${REF_NAME#v}"
if [[ "${TAG_VERSION}" != "${GRADLE_VERSION}" ]]; then
echo "ERROR: Git tag '${REF_NAME}' does not match project version '${GRADLE_VERSION} from gradle.properties."
exit 1
fi
ARTIFACT_VERSION="${GRADLE_VERSION}"
IS_RELEASE=true
DOCKER_REGISTRY="folioorg"
elif [[ "${GRADLE_VERSION}" == *"-SNAPSHOT" ]]; then
ARTIFACT_VERSION="${GRADLE_VERSION}.${BUILD_NUMBER}"
IS_RELEASE=false
DOCKER_REGISTRY="folioci"
else
ARTIFACT_VERSION="${GRADLE_VERSION}"
IS_RELEASE=false
DOCKER_REGISTRY="folioci"
fi

if [[ "${REF_NAME}" == "${DEFAULT_BRANCH}" ]]; then
IS_MAIN_BRANCH=true
else
IS_MAIN_BRANCH=false
fi

if [[ "${EVENT_NAME}" == "pull_request" ]]; then
DO_DOCKER_PUSH=false
elif [[ "${IS_RELEASE}" == "true" ]]; then
DO_DOCKER_PUSH=true
elif [[ "${GRADLE_VERSION}" == *"-SNAPSHOT" && "${IS_MAIN_BRANCH}" == "true" ]]; then
DO_DOCKER_PUSH=true
else
DO_DOCKER_PUSH=false
fi

{
echo "artifact-version=${ARTIFACT_VERSION}"
echo "docker-registry=${DOCKER_REGISTRY}"
echo "is-release=${IS_RELEASE}"
echo "is-main-branch=${IS_MAIN_BRANCH}"
echo "do-docker-push=${DO_DOCKER_PUSH}"
echo "repo-name=${GITHUB_REPOSITORY##*/}"
echo "repo-description=${REPO_DESC}"
} >> "$GITHUB_OUTPUT"

{
echo "### Build Metadata"
echo ""
echo "| Property | Value |"
echo "|----------|-------|"
echo "| Artifact Version | ${ARTIFACT_VERSION} |"
echo "| Docker Registry | ${DOCKER_REGISTRY} |"
echo "| Release Build | ${IS_RELEASE} |"
echo "| Main Branch | ${IS_MAIN_BRANCH} |"
echo "| Docker Push | ${DO_DOCKER_PUSH} |"
echo "| Git Ref | ${REF_NAME} (${REF_TYPE}) |"
} >> "$GITHUB_STEP_SUMMARY"
69 changes: 69 additions & 0 deletions .github/workflows/gradle-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Gradle Build

on:
workflow_call:
inputs:
gradle-directory:
description: Directory containing the Gradle project.
required: true
type: string
java-version:
description: Java version.
required: true
type: string
build-command:
description: Gradle command.
required: false
type: string
default: "assemble"

jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
defaults:
run:
shell: bash
working-directory: ${{ inputs.gradle-directory }}

steps:
- name: Checkout source
uses: actions/checkout@v6
with:
fetch-depth: 1
submodules: recursive

- name: Validate Gradle Wrapper
uses: gradle/actions/wrapper-validation@v6

- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: ${{ inputs.java-version }}

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6

- name: Build Project
run: |
./gradlew \
${{ inputs.build-command }} \
--console plain \
--no-daemon

- name: Upload application JAR
uses: actions/upload-artifact@v7
with:
name: built-jars
path: |
${{ inputs.gradle-directory }}/build/libs/*.jar

- name: Upload ModuleDescriptor
uses: actions/upload-artifact@v7
with:
name: ModuleDescriptor.json
path: |
${{ inputs.gradle-directory }}/build/resources/main/okapi/ModuleDescriptor.json
48 changes: 48 additions & 0 deletions .github/workflows/gradle-dependency-submission.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Dependency Submission

on:
workflow_call:
inputs:
gradle-directory:
description: Directory containing the Gradle project.
required: true
type: string
java-version:
description: Java version.
required: true
type: string

jobs:
dependency-submission:
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
contents: write
defaults:
run:
shell: bash
working-directory: ${{ inputs.gradle-directory }}

steps:
- name: Checkout source
uses: actions/checkout@v6
with:
fetch-depth: 1
submodules: recursive

- name: Validate Gradle Wrapper
uses: gradle/actions/wrapper-validation@v6

- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: ${{ inputs.java-version }}

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6

- name: Submit Dependency Graph
uses: gradle/actions/dependency-submission@v6
with:
build-root-directory: ${{ inputs.gradle-directory }}
Loading