Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
90 changes: 39 additions & 51 deletions .github/actions/compute_changed_modules/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,99 +10,87 @@ inputs:
outputs:
value:
description: "JSON array of module paths"
value: ${{ steps.matrix.outputs.value }}
value: ${{ steps.resolve.outputs.value }}

hasModules:
description: "Whether modules exist"
value: ${{ steps.matrix.outputs.hasModules }}
value: ${{ steps.resolve.outputs.hasModules }}

runs:
using: "composite"
steps:

- name: Changed files in libraries
# --------------------------------
# Detect changed files (only if needed)
# --------------------------------
- name: Detect changed files
id: changed
if: ${{ inputs.modules == '' }}
uses: tj-actions/changed-files@v45
with:
files: |
libraries/**

- name: Compute modules (matrix json)
id: matrix
# --------------------------------
# Resolve modules
# --------------------------------
- name: Resolve modules
id: resolve
shell: bash
run: |
set -euo pipefail

# -----------------------------
# -------------------------
# Manual override
# -----------------------------
# -------------------------
if [[ -n '${{ inputs.modules }}' ]]; then
modules='${{ inputs.modules }}'

if [[ "$modules" == "[]" ]]; then
hasModules=false
else
hasModules=true
fi

{
echo "value=$modules"
echo "hasModules=$hasModules"
} >> "$GITHUB_OUTPUT"
# Validate JSON
echo "$modules" | jq empty

exit 0
fi

# -----------------------------
# No changes detected
# -----------------------------
if [[ "${{ steps.changed.outputs.any_changed || 'false' }}" != "true" ]]; then
{
echo "value=[]"
echo "hasModules=false"
} >> "$GITHUB_OUTPUT"
exit 0
fi
else
# -------------------------
# No changed files
# -------------------------
if [[ "${{ steps.changed.outputs.any_changed }}" != "true" ]]; then
modules="[]"

files_raw='${{ steps.changed.outputs.all_changed_files }}'

files_list=$(printf "%s" "$files_raw" | tr ' \n' '\n' | sed '/^$/d')
else
files_raw='${{ steps.changed.outputs.all_changed_files }}'

modules=$(printf "%s\n" "$files_list" \
| sed -n 's|^libraries/\([^/]*\)/.*|:libraries:\1|p' \
| sort -u)
files_list=$(printf "%s" "$files_raw" | tr ' \n' '\n' | sed '/^$/d')

if [[ -z "$modules" ]]; then
{
echo "value=[]"
echo "hasModules=false"
} >> "$GITHUB_OUTPUT"
exit 0
modules=$(printf "%s\n" "$files_list" \
| sed -n 's|^libraries/\([^/]*\)/.*|:libraries:\1|p' \
| sort -u \
| jq -R . \
| jq -s -c .)
fi
fi

json=$(printf "%s\n" "$modules" | jq -R . | jq -s .)
hasModules=$(echo "$modules" | jq 'length > 0')

echo "Matrix JSON: $json"
echo "Modules JSON: $modules"

{
echo "value=$json"
echo "hasModules=true"
} >> "$GITHUB_OUTPUT"
echo "value=$modules" >> "$GITHUB_OUTPUT"
echo "hasModules=$hasModules" >> "$GITHUB_OUTPUT"

# --------------------------------
# Summary
# --------------------------------
- name: Write modules to job summary
shell: bash
run: |
set -euo pipefail

matrix='${{ steps.matrix.outputs.value }}'
matrix='${{ steps.resolve.outputs.value }}'
count=$(echo "$matrix" | jq 'length')

{
echo "## 🔍 Modules with Changes"
echo ""

count=$(echo "$matrix" | jq 'length')

if [[ "$count" -eq 0 ]]; then
echo "✅ **No modules changed**"
echo ""
Expand Down
58 changes: 41 additions & 17 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
@@ -1,53 +1,77 @@
name: 'Common machine setup'
description: 'Prepares the machine (JDK + Gradle)'
name: Common machine setup
description: Prepares the machine (JDK + Gradle)

inputs:
java-version:
description: 'Java version'
description: Java version
required: false
default: '17'
default: "17"

distribution:
description: 'JDK distribution'
description: JDK distribution
required: false
default: 'temurin'
default: "temurin"

gradle-cache:
description: 'Enable Gradle cache (true/false)'
description: Enable Gradle cache
required: false
default: 'true'
default: "true"

gradle-cache-cleanup:
description: 'Cleanup old Gradle cache entries (true/false)'
description: Cleanup old Gradle cache entries
required: false
default: 'true'
default: "true"

runs:
using: 'composite'
using: composite
steps:
- name: Set up JDK

- name: Setup JDK
uses: actions/setup-java@v5
with:
distribution: ${{ inputs.distribution }}
java-version: ${{ inputs.java-version }}
cache: gradle

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
with:
cache-disabled: ${{ inputs.gradle-cache != 'true' }}
gradle-home-cache-cleanup: ${{ inputs.gradle-cache-cleanup == 'true' }}

- name: Summary
- name: Environment summary
shell: bash
run: |
set -euo pipefail

{
echo "## Setup"
echo "## ⚙️ Build Environment"
echo ""
echo "- Java: ${{ inputs.distribution }} ${{ inputs.java-version }}"
echo "- Gradle cache: ${{ inputs.gradle-cache }}"

echo "- JDK distribution: ${{ inputs.distribution }}"
echo "- Java version: ${{ inputs.java-version }}"
echo "- Gradle cache enabled: ${{ inputs.gradle-cache }}"
echo "- Gradle cache cleanup: ${{ inputs.gradle-cache-cleanup }}"
echo ""

echo "### Java"
echo '```'
java -version 2>&1 || true
java -version 2>&1
echo '```'

echo ""

echo "### Gradle"
echo '```'
./gradlew --version || gradle --version || true
echo '```'

echo ""

echo "### Gradle user home"
echo '```'
echo "$HOME/.gradle"
du -sh "$HOME/.gradle" || true
echo '```'

} >> "$GITHUB_STEP_SUMMARY"
4 changes: 4 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ permissions:
env:
# Increment to invalidate Gradle cache when needed
CACHE_VERSION: 1
# Increase Gradle heap size to prevent OOM errors in large builds
GRADLE_OPTS: >
-Dorg.gradle.jvmargs=-Xmx4g
-Dkotlin.daemon.jvm.options=-Xmx2g
# Enable debug for Gradle cache action
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
# Artifact retention
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/ci_bump.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ permissions:
env:
# Increment this to invalidate the cache.
CACHE_VERSION: 1
# Increase Gradle heap size to prevent OOM errors in large builds
GRADLE_OPTS: >
-Dorg.gradle.jvmargs=-Xmx4g
-Dkotlin.daemon.jvm.options=-Xmx2g
# Enable debug for the `gradle-build-action` cache operations
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
# Retention days used for output files
Expand Down
Loading
Loading