Skip to content

[WFLY-19812] move to junit 6 #13

[WFLY-19812] move to junit 6

[WFLY-19812] move to junit 6 #13

Workflow file for this run

# Single CI workflow that tests all quickstarts, and project build.
#
# A quickstart opts in to CI by providing either:
# <qs>/.ci/test-quickstart.env — common flow (sourced by the project runner)
# <qs>/.ci/test-quickstart.sh — fully standalone script
#
# All test logic lives in per-quickstart .ci/ files and the shared project runner
# .ci/test-quickstarts.sh. This workflow handles only GitHub-specific concerns:
# change detection, matrix construction, JDK setup, the WildFly snapshot build,
# and artifact upload on failure.
#
# Job order:
# WildFly-build → Setup → Quickstart-default (always)
# → Quickstart-with-deps (only when WildFly branch exists)
# → Project-default (always)
# → Project-with-deps (only when WildFly branch exists)
name: Quickstarts CI
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
# No paths filter — all PRs trigger; the Setup job decides what actually runs.
# Cancel in-progress runs for the same workflow + ref
concurrency:
group: '${{ github.workflow }} @ ${{ github.ref || github.run_id }}'
cancel-in-progress: true
jobs:
# ---------------------------------------------------------------------------
# Build WildFly from the PR's target branch (if that branch exists in
# wildfly/wildfly). Silently skipped when the branch is not found; downstream
# jobs still run with an empty wildfly-version output.
# ---------------------------------------------------------------------------
WildFly-build:
uses: wildfly/wildfly/.github/workflows/shared-wildfly-build.yml@main
with:
wildfly-branch: ${{ github.base_ref }}
wildfly-repo: "wildfly/wildfly"
# ---------------------------------------------------------------------------
# Detect which quickstarts changed and build two matrix JSON arrays:
# default-matrix — always populated (tests against released WildFly)
# with-deps-matrix — populated only when WildFly-build produced a version
# ---------------------------------------------------------------------------
Setup:
runs-on: ubuntu-latest
needs: [WildFly-build]
outputs:
default-matrix: ${{ steps.build-matrix.outputs.default-matrix }}
with-deps-matrix: ${{ steps.build-matrix.outputs.with-deps-matrix }}
wildfly-version: ${{ steps.build-matrix.outputs.wildfly-version }}
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Build test matrices
id: build-matrix
env:
WILDFLY_VERSION: ${{ needs.WildFly-build.outputs.wildfly-version }}
run: |
BASE="${{ github.base_ref }}"
changed=$(git diff --name-only "origin/${BASE}...HEAD" 2>/dev/null || git diff --name-only HEAD~1)
# Shared infrastructure paths — any change here runs all quickstarts
run_all=false
for path in shared-doc .ci pom.xml .github/workflows/quickstart_ci.yml; do
if echo "${changed}" | grep -q "^${path}"; then
run_all=true
echo "Shared infra change detected (${path}) — running all quickstarts"
break
fi
done
# Collect all testable quickstarts (have .ci/test-quickstart.env OR
# .ci/test-quickstart.sh), deduplicated and sorted
all_qs=()
for marker in */.ci/test-quickstart.env */.ci/test-quickstart.sh; do
[[ -f "${marker}" ]] || continue
qs="$(dirname "$(dirname "${marker}")")"
all_qs+=("${qs}")
done
# Deduplicate and sort
IFS=$'\n' all_qs=($(printf '%s\n' "${all_qs[@]}" | sort -u)); unset IFS
# Filter to changed quickstarts unless run_all=true
to_test=()
for qs in "${all_qs[@]}"; do
if ${run_all} || echo "${changed}" | grep -q "^${qs}/"; then
to_test+=("${qs}")
fi
done
echo "Quickstarts to test: ${to_test[*]:-none}"
JDKS=(17 25)
default_entries=()
with_deps_entries=()
for qs in "${to_test[@]}"; do
# Read QS_LINUX_ONLY:
# .env quickstarts → source test-quickstart.env in a subshell
# standalone .sh → grep for 'export QS_LINUX_ONLY=true' near the top
# (sourcing is unsafe: the script uses set -euo pipefail
# and runs server/docker commands on execution)
qs_linux_only="false"
if [[ -f "${qs}/.ci/test-quickstart.env" ]]; then
qs_linux_only=$(set -a; source "${qs}/.ci/test-quickstart.env" 2>/dev/null; echo "${QS_LINUX_ONLY:-false}")
elif [[ -f "${qs}/.ci/test-quickstart.sh" ]]; then
grep -q "^export QS_LINUX_ONLY=true" "${qs}/.ci/test-quickstart.sh" && qs_linux_only="true"
fi
for jdk in "${JDKS[@]}"; do
entry_ubuntu="{\"qs\":\"${qs}\",\"os\":\"ubuntu-latest\",\"jdk\":${jdk}}"
entry_windows="{\"qs\":\"${qs}\",\"os\":\"windows-latest\",\"jdk\":${jdk}}"
default_entries+=("${entry_ubuntu}")
[[ -n "${WILDFLY_VERSION}" ]] && with_deps_entries+=("${entry_ubuntu}")
if [[ "${qs_linux_only}" != "true" ]]; then
default_entries+=("${entry_windows}")
[[ -n "${WILDFLY_VERSION}" ]] && with_deps_entries+=("${entry_windows}")
fi
done
done
# Emit outputs
if [[ ${#default_entries[@]} -gt 0 ]]; then
default_json="[$(IFS=,; echo "${default_entries[*]}")]"
else
default_json="[]"
fi
if [[ ${#with_deps_entries[@]} -gt 0 ]]; then
with_deps_json="[$(IFS=,; echo "${with_deps_entries[*]}")]"
else
with_deps_json="[]"
fi
echo "default-matrix=${default_json}" >> "$GITHUB_OUTPUT"
echo "with-deps-matrix=${with_deps_json}" >> "$GITHUB_OUTPUT"
echo "wildfly-version=${WILDFLY_VERSION}" >> "$GITHUB_OUTPUT"
echo "default-matrix entries: ${#default_entries[@]}"
echo "with-deps-matrix entries: ${#with_deps_entries[@]}"
shell: bash
# ---------------------------------------------------------------------------
# Test against the released WildFly version (always runs when matrix non-empty)
# ---------------------------------------------------------------------------
Quickstart-default:
name: "${{ matrix.qs }} — JDK ${{ matrix.jdk }} — ${{ matrix.os }}"
runs-on: ${{ matrix.os }}
needs: [Setup]
if: needs.Setup.outputs.default-matrix != '[]'
strategy:
fail-fast: false
matrix:
include: ${{ fromJSON(needs.Setup.outputs.default-matrix) }}
steps:
- uses: actions/checkout@v7
- name: Set up JDK ${{ matrix.jdk }}
uses: actions/setup-java@v6
with:
java-version: ${{ matrix.jdk }}
distribution: temurin
cache: maven
- name: Run quickstart tests
run: .ci/test-quickstarts.sh -q ${{ matrix.qs }}
shell: bash
- uses: actions/upload-artifact@v7
if: failure()
with:
name: surefire-${{ matrix.qs }}-JDK${{ matrix.jdk }}-${{ matrix.os }}
path: "${{ matrix.qs }}/**/surefire-reports/*.txt"
# ---------------------------------------------------------------------------
# Test against the WildFly snapshot built from the same branch name
# (only runs when WildFly-build produced a wildfly-version output)
# ---------------------------------------------------------------------------
Quickstart-with-deps:
name: "${{ matrix.qs }} — JDK ${{ matrix.jdk }} — ${{ matrix.os }} — ${{ needs.Setup.outputs.wildfly-version }}"
runs-on: ${{ matrix.os }}
needs: [Setup, WildFly-build]
if: needs.Setup.outputs.with-deps-matrix != '[]'
strategy:
fail-fast: false
matrix:
include: ${{ fromJSON(needs.Setup.outputs.with-deps-matrix) }}
steps:
- uses: actions/checkout@v7
- name: Set up JDK ${{ matrix.jdk }}
uses: actions/setup-java@v6
with:
java-version: ${{ matrix.jdk }}
distribution: temurin
cache: maven
- name: Download WildFly Maven repository
uses: actions/download-artifact@v8
with:
name: wildfly-maven-repository
path: .
- name: Extract WildFly Maven repository
run: tar -xzf wildfly-maven-repository.tar.gz -C ~
shell: bash
- name: Run quickstart tests
env:
VERSION_SERVER: ${{ needs.Setup.outputs.wildfly-version }}
run: .ci/test-quickstarts.sh -q ${{ matrix.qs }}
shell: bash
- uses: actions/upload-artifact@v7
if: failure()
with:
name: surefire-${{ matrix.qs }}-JDK${{ matrix.jdk }}-${{ matrix.os }}-${{ needs.Setup.outputs.wildfly-version }}
path: "${{ matrix.qs }}/**/surefire-reports/*.txt"
# ---------------------------------------------------------------------------
# Project release build against the released WildFly version (always runs).
# Runs mvn clean install -Drelease skipping provisioned-server and bootable-jar
# profiles, which are covered by the per-quickstart Test-* jobs.
# ---------------------------------------------------------------------------
Project-default:
name: "Project: JDK ${{ matrix.jdk }} — ${{ matrix.os }}"
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
jdk: [17, 25]
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v7
- name: Set up JDK ${{ matrix.jdk }}
uses: actions/setup-java@v6
with:
java-version: ${{ matrix.jdk }}
distribution: temurin
cache: maven
- name: Build project release
run: mvn -U -B -fae clean install -Drelease -P-provisioned-server,-bootable-jar
shell: bash
- uses: actions/upload-artifact@v7
if: failure()
with:
name: surefire-project-JDK${{ matrix.jdk }}-${{ matrix.os }}
path: "**/surefire-reports/*.txt"
# ---------------------------------------------------------------------------
# Project release build against the WildFly snapshot (only when WildFly-build
# produced a wildfly-version output).
# ---------------------------------------------------------------------------
Project-with-deps:
name: "Project: JDK ${{ matrix.jdk }} — ${{ matrix.os }} — ${{ needs.WildFly-build.outputs.wildfly-version }}"
runs-on: ${{ matrix.os }}
needs: [WildFly-build]
if: needs.WildFly-build.outputs.wildfly-version != ''
strategy:
fail-fast: false
matrix:
jdk: [17, 25]
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v7
- name: Set up JDK ${{ matrix.jdk }}
uses: actions/setup-java@v6
with:
java-version: ${{ matrix.jdk }}
distribution: temurin
cache: maven
- name: Download WildFly Maven repository
uses: actions/download-artifact@v8
with:
name: wildfly-maven-repository
path: .
- name: Extract WildFly Maven repository
run: tar -xzf wildfly-maven-repository.tar.gz -C ~
shell: bash
- name: Build project release with snapshot server
run: mvn -U -B -fae clean install -Drelease -P-provisioned-server,-bootable-jar -Dversion.server=${{ needs.WildFly-build.outputs.wildfly-version }}
shell: bash
- uses: actions/upload-artifact@v7
if: failure()
with:
name: surefire-project-JDK${{ matrix.jdk }}-${{ matrix.os }}-${{ needs.WildFly-build.outputs.wildfly-version }}
path: "**/surefire-reports/*.txt"