diff --git a/.ci/test-quickstarts.sh b/.ci/test-quickstarts.sh new file mode 100755 index 0000000000..3506173240 --- /dev/null +++ b/.ci/test-quickstarts.sh @@ -0,0 +1,314 @@ +#!/usr/bin/env bash +# ============================================================================= +# test-quickstarts.sh – Run the integration test suite for WildFly quickstarts. +# +# USAGE +# .ci/test-quickstarts.sh [OPTIONS] +# +# MODES +# (no flags) Test all testable quickstarts in alphabetical order. +# -q, --quickstart Test a single named quickstart. +# -r, --resume Test all quickstarts in alphabetical order, starting +# from (inclusive). Useful after a local failure. +# +# OPTIONS +# --version-server Pass -Dversion.server= to every Maven call. +# Combinable with -q or -r. +# -h, --help Print this help and exit. +# +# ENVIRONMENT VARIABLES +# VERSION_SERVER Same as --version-server. CLI flag takes precedence. +# +# HOW IT WORKS +# A quickstart is testable if it has EITHER: +# - .ci/test-quickstart.env — common flow; file is sourced to read optional QS_* overrides. +# - .ci/test-quickstart.sh — fully standalone script (e.g. ejb-txn-remote-call); +# executed directly with bash. No common flow is run. +# +# Common flow (test-quickstart.env quickstarts): +# 1. Sources /.ci/test-quickstart.env (with set -a) to load any QS_* overrides. +# 2. Auto-detects QS_TEST_* flags not set explicitly (scans deployment pom.xml). +# 3. Runs /.ci/before-test-quickstart.sh if present. +# 4. Registers /.ci/after-test-quickstart.sh in a trap (runs even on failure). +# 5. Executes the Maven test phases enabled by the QS_* flags. +# +# EXAMPLES +# .ci/test-quickstarts.sh +# .ci/test-quickstarts.sh -q helloworld +# .ci/test-quickstarts.sh -r kitchensink +# .ci/test-quickstarts.sh -q microprofile-health --version-server 36.0.0.Beta1-SNAPSHOT +# .ci/test-quickstarts.sh -r microprofile-config --version-server 36.0.0.Beta1-SNAPSHOT +# ============================================================================= + +set -euo pipefail + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- +usage() { + sed -n '/^# USAGE/,/^# =====/p' "$0" | sed '$d' | sed 's/^# \{0,3\}//' + exit 0 +} + +die() { echo "ERROR: $*" >&2; exit 1; } +log() { echo "[test-quickstarts] $*"; } +info() { echo ""; log ">>> $*"; echo ""; } + +# --------------------------------------------------------------------------- +# Resolve repo root from this script's location +# --------------------------------------------------------------------------- +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" + +# --------------------------------------------------------------------------- +# Ensure 'docker' is available as a real command in non-interactive subshells. +# On systems where 'docker' is only a shell alias (e.g. aliased to podman on +# macOS), child processes launched with 'bash script.sh' won't see it. +# If 'docker' is not a real binary but 'podman' is, we write a tiny shim into +# a temporary directory and prepend it to PATH so that all before/after scripts +# can use 'docker' transparently. +# --------------------------------------------------------------------------- +if ! command -v docker &>/dev/null; then + if command -v podman &>/dev/null; then + _shim_dir="$(mktemp -d)" + printf '#!/usr/bin/env bash\nexec podman "$@"\n' > "${_shim_dir}/docker" + chmod +x "${_shim_dir}/docker" + export PATH="${_shim_dir}:${PATH}" + log "docker not found as a binary — created podman shim at ${_shim_dir}/docker" + else + log "WARNING: neither 'docker' nor 'podman' found in PATH. Before/after scripts may fail." + fi +fi + +# --------------------------------------------------------------------------- +# Defaults +# --------------------------------------------------------------------------- +MODE="" # "single" | "resume" | "all" +QS_NAME="" +RESUME_FROM="" +VERSION_SERVER="${VERSION_SERVER:-}" + +# --------------------------------------------------------------------------- +# Parse CLI flags +# --------------------------------------------------------------------------- +while [[ $# -gt 0 ]]; do + case "$1" in + -q|--quickstart) MODE=single; QS_NAME="$2"; shift 2 ;; + -r|--resume) MODE=resume; RESUME_FROM="$2"; shift 2 ;; + --version-server) VERSION_SERVER="$2"; shift 2 ;; + -h|--help) usage ;; + *) die "Unknown option: $1" ;; + esac +done + +[[ -z "$MODE" ]] && MODE=all + +# --------------------------------------------------------------------------- +# Build the optional -Dversion.server=... fragment +# --------------------------------------------------------------------------- +version_server_arg="" +[[ -n "${VERSION_SERVER}" ]] && version_server_arg="-Dversion.server=${VERSION_SERVER}" + +# --------------------------------------------------------------------------- +# Profile auto-detection +# --------------------------------------------------------------------------- +has_profile() { + local pom="$1" profile_id="$2" + grep -q "${profile_id}" "${pom}" 2>/dev/null +} + +# --------------------------------------------------------------------------- +# Run a single quickstart by name. +# Checks whether the quickstart's script is standalone (no delegation to this +# runner). Standalone scripts are exec'd directly; delegating scripts have +# their QS_* vars read and then the common flow is executed here. +# --------------------------------------------------------------------------- +run_quickstart() { + local qs="$1" + local qs_dir="${REPO_ROOT}/${qs}" + local qs_script="${qs_dir}/.ci/test-quickstart.sh" + local qs_env="${qs_dir}/.ci/test-quickstart.env" + + [[ -d "${qs_dir}" ]] || die "Quickstart directory not found: ${qs_dir}" + [[ -f "${qs_script}" || -f "${qs_env}" ]] \ + || die "No .ci/test-quickstart.env or .ci/test-quickstart.sh found for: ${qs}" + + info "Testing quickstart: ${qs}" + + cd "${qs_dir}" + + # --- Standalone script: exec directly and return --- + if [[ -f "${qs_script}" ]]; then + log "Standalone script detected — executing directly: ${qs_script}" + [[ -n "${VERSION_SERVER}" ]] && export VERSION_SERVER + bash "${qs_script}" + return + fi + + # --- Common flow: source test-quickstart.env to load any QS_* overrides --- + local QS_TEST_PROVISIONED_SERVER="" QS_TEST_BOOTABLE_JAR="" QS_TEST_OPENSHIFT="" + local QS_LINUX_ONLY="false" QS_MVN_COMMAND="package" QS_DEPLOYMENT_DIR="." QS_EXTRA_RUN_ARGS="" + + set -a + # shellcheck source=/dev/null + source "${qs_env}" + set +a + + local deployment_dir="${QS_DEPLOYMENT_DIR:-.}" + local mvn_command="${QS_MVN_COMMAND:-package}" + local extra_run_args="${QS_EXTRA_RUN_ARGS:-}" + + # Auto-detect QS_TEST_* from pom.xml when not explicitly set + local pom="${qs_dir}/${deployment_dir}/pom.xml" + local test_provisioned_server="${QS_TEST_PROVISIONED_SERVER}" + local test_bootable_jar="${QS_TEST_BOOTABLE_JAR}" + local test_openshift="${QS_TEST_OPENSHIFT}" + + if [[ -z "${test_provisioned_server}" ]]; then + has_profile "${pom}" "provisioned-server" && test_provisioned_server="true" || test_provisioned_server="false" + fi + if [[ -z "${test_bootable_jar}" ]]; then + has_profile "${pom}" "bootable-jar" && test_bootable_jar="true" || test_bootable_jar="false" + fi + if [[ -z "${test_openshift}" ]]; then + has_profile "${pom}" "openshift" && test_openshift="true" || test_openshift="false" + fi + + log "QS_DEPLOYMENT_DIR=${deployment_dir} MVN_COMMAND=${mvn_command} QS_EXTRA_RUN_ARGS=${extra_run_args}" + log "TEST_PROVISIONED_SERVER=${test_provisioned_server} TEST_BOOTABLE_JAR=${test_bootable_jar} TEST_OPENSHIFT=${test_openshift}" + + # --- Before hook --- + local before_script="./.ci/before-test-quickstart.sh" + if [[ -f "${before_script}" ]]; then + log "Running before-test-quickstart.sh..." + bash "${before_script}" + fi + + # --- After hook via trap --- + local after_script="./.ci/after-test-quickstart.sh" + _qs_cleanup() { + if [[ -f "${after_script}" ]]; then + log "Running after-test-quickstart.sh..." + bash "${after_script}" || true + fi + cd "${REPO_ROOT}" + } + trap _qs_cleanup EXIT + + # --- Step 1: Build for release --- + log "=== Step 1: Build for release ===" + # shellcheck disable=SC2086 + mvn -fae clean "${mvn_command}" -Drelease ${version_server_arg} + + # --- Step 2: Provisioned-server --- + if [[ "${test_provisioned_server}" == "true" ]]; then + log "=== Step 2: Run & test with provisioned-server profile ===" + local add_user="${deployment_dir}/target/server/bin/add-user.sh" + if [[ -f "${add_user}" ]]; then + log "Adding quickstartUser..." + "${add_user}" -a -u 'quickstartUser' -p 'quickstartPwd1!' -g 'guest,user,JBossAdmin,Users' + log "Adding quickstartAdmin..." + "${add_user}" -a -u 'quickstartAdmin' -p 'adminPwd1!' -g 'guest,user,admin' + fi + log "Starting provisioned server..." + # shellcheck disable=SC2086 + mvn -f "${deployment_dir}/pom.xml" wildfly:start -Dstartup-timeout=120 ${extra_run_args} ${version_server_arg} + log "Testing provisioned server..." + # shellcheck disable=SC2086 + mvn -fae verify -Pintegration-testing ${version_server_arg} + log "Shutting down provisioned server..." + # shellcheck disable=SC2086 + mvn -f "${deployment_dir}/pom.xml" wildfly:shutdown ${version_server_arg} + fi + + # --- Step 3: Bootable jar --- + if [[ "${test_bootable_jar}" == "true" ]]; then + log "=== Step 3: Run & test with bootable-jar profile ===" + log "Starting bootable jar..." + # shellcheck disable=SC2086 + mvn -f "${deployment_dir}/pom.xml" wildfly:start-jar -Dstartup-timeout=120 ${extra_run_args} ${version_server_arg} + log "Testing bootable jar..." + # shellcheck disable=SC2086 + mvn -fae verify -Pintegration-testing ${version_server_arg} + log "Shutting down bootable jar..." + # shellcheck disable=SC2086 + mvn -f "${deployment_dir}/pom.xml" wildfly:shutdown ${version_server_arg} + fi + + # --- Step 4: OpenShift profile build --- + if [[ "${test_openshift}" == "true" ]]; then + log "=== Step 4: Build with openshift profile ===" + # shellcheck disable=SC2086 + mvn -fae clean "${mvn_command}" -Popenshift ${version_server_arg} + fi + + # Remove trap now that we're done cleanly (cleanup still runs on error via trap) + trap - EXIT + _qs_cleanup + + log "=== Completed: ${qs} ===" +} + +# --------------------------------------------------------------------------- +# Discover all testable quickstarts (alphabetical). +# A quickstart is testable if it has .ci/test-quickstart.env OR .ci/test-quickstart.sh. +# --------------------------------------------------------------------------- +discover_quickstarts() { + local -a result=() + for marker in "${REPO_ROOT}"/*/.ci/test-quickstart.env "${REPO_ROOT}"/*/.ci/test-quickstart.sh; do + [[ -f "${marker}" ]] || continue + local qs + qs="$(basename "$(dirname "$(dirname "${marker}")")")" + result+=("${qs}") + done + # Deduplicate and sort alphabetically + IFS=$'\n' sorted=($(printf '%s\n' "${result[@]}" | sort -u)); unset IFS + echo "${sorted[@]}" +} + +# --------------------------------------------------------------------------- +# Main dispatch +# --------------------------------------------------------------------------- +case "${MODE}" in + + single) + [[ -n "${QS_NAME}" ]] || die "-q requires a quickstart name." + run_quickstart "${QS_NAME}" + ;; + + resume) + [[ -n "${RESUME_FROM}" ]] || die "-r requires a quickstart name." + all=($(discover_quickstarts)) + [[ ${#all[@]} -gt 0 ]] || die "No testable quickstarts found." + found=false + failed=() + for qs in "${all[@]}"; do + if [[ "${qs}" == "${RESUME_FROM}" ]]; then found=true; fi + [[ "${found}" == "true" ]] || continue + set +e; ( set -euo pipefail; run_quickstart "${qs}" ); _rc=$?; set -e + [[ ${_rc} -eq 0 ]] || failed+=("${qs}") + done + [[ "${found}" == "true" ]] || die "Quickstart '${RESUME_FROM}' not found. Available: ${all[*]}" + if [[ ${#failed[@]} -gt 0 ]]; then + log "FAILED quickstarts: ${failed[*]}" + exit 1 + fi + ;; + + all) + all=($(discover_quickstarts)) + [[ ${#all[@]} -gt 0 ]] || { log "No testable quickstarts found."; exit 0; } + log "Found ${#all[@]} testable quickstarts: ${all[*]}" + failed=() + for qs in "${all[@]}"; do + set +e; ( set -euo pipefail; run_quickstart "${qs}" ); _rc=$?; set -e + [[ ${_rc} -eq 0 ]] || failed+=("${qs}") + done + if [[ ${#failed[@]} -gt 0 ]]; then + log "FAILED quickstarts: ${failed[*]}" + exit 1 + fi + ;; +esac + +log "All done." diff --git a/.github/workflows/kubernetes-ci.yml b/.github/workflows/kubernetes-ci.yml index b7e8e5c0cc..1b62a702c6 100644 --- a/.github/workflows/kubernetes-ci.yml +++ b/.github/workflows/kubernetes-ci.yml @@ -128,8 +128,8 @@ jobs: echo "Skipping ${fileName} since it is excluded!" continue fi - if [ ! -f "./.github/workflows/quickstart_${fileName}_ci.yml" ]; then - echo "Skipping ${fileName} since it has no ./.github/workflows/quickstart_${fileName}_ci.yml!" + if [ ! -f "./${fileName}/.ci/test-quickstart.env" ] && [ ! -f "./${fileName}/.ci/test-quickstart.sh" ]; then + echo "Skipping ${fileName} since it has no .ci/test-quickstart.env or .ci/test-quickstart.sh!" continue fi diff --git a/.github/workflows/project_ci.yml b/.github/workflows/project_ci.yml deleted file mode 100644 index 86477b8b96..0000000000 --- a/.github/workflows/project_ci.yml +++ /dev/null @@ -1,85 +0,0 @@ -name: WildFly Quickstarts CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - -# Only run the latest job -concurrency: - group: '${{ github.workflow }} @ ${{ github.ref || github.run_id }}' - cancel-in-progress: true - -jobs: - Test-build-default-matrix: - name: BUILD DEFAULT - 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 - with: - path: quickstarts - - name: Set up JDK ${{ matrix.jdk }} - uses: actions/setup-java@v5 - with: - java-version: ${{ matrix.jdk }} - distribution: 'temurin' - cache: 'maven' - - name: Build Quickstarts Release - run: | - cd quickstarts - mvn -U -B -fae clean install -Drelease -P-provisioned-server,-bootable-jar - shell: bash - - uses: actions/upload-artifact@v7 - if: failure() - with: - name: surefire-reports-JDK${{ matrix.jdk }}-${{ matrix.os }} - path: 'quickstarts/**/surefire-reports/*.txt' - - # Use the shared-wildfly-build workflow to have a consistent WildFly build. Note the branch names MUST match what - # is used in WildFly. - WildFly-build: - uses: wildfly/wildfly/.github/workflows/shared-wildfly-build.yml@main - with: - wildfly-branch: ${{ github.base_ref }} - wildfly-repo: "wildfly/wildfly" - - Test-build-with-deps-matrix: - name: BUILD WITH DEPS - JDK${{ matrix.jdk }} - ${{ matrix.os }} - runs-on: ${{ matrix.os }} - needs: WildFly-build - strategy: - fail-fast: false - matrix: - jdk: [17, 25] - os: [ubuntu-latest, windows-latest] - steps: - - uses: actions/checkout@v7 - with: - path: quickstarts - - uses: actions/download-artifact@v8 - with: - name: wildfly-maven-repository - path: . - - name: Extract Maven Repo - shell: bash - run: tar -xzf wildfly-maven-repository.tar.gz -C ~ - - name: Set up JDK ${{ matrix.jdk }} - uses: actions/setup-java@v5 - with: - java-version: ${{ matrix.jdk }} - distribution: 'temurin' - cache: 'maven' - - name: Build Quickstarts Release with Server and BOMs Versions - run: | - cd quickstarts - 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-reports-JDK${{ matrix.jdk }}-${{ matrix.os }} - path: 'quickstarts/**/surefire-reports/*.txt' diff --git a/.github/workflows/quickstart_batch-processing_ci.yml b/.github/workflows/quickstart_batch-processing_ci.yml deleted file mode 100644 index b800caf2da..0000000000 --- a/.github/workflows/quickstart_batch-processing_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly batch-processing Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'batch-processing/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: batch-processing - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_bmt_ci.yml b/.github/workflows/quickstart_bmt_ci.yml deleted file mode 100644 index 2502157dd9..0000000000 --- a/.github/workflows/quickstart_bmt_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly bmt Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'bmt/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: bmt - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_ci.yml b/.github/workflows/quickstart_ci.yml index e3ab8e8c3e..1a260693f3 100644 --- a/.github/workflows/quickstart_ci.yml +++ b/.github/workflows/quickstart_ci.yml @@ -1,262 +1,303 @@ -# Abstract CI for a specific quickstart -# If you are updating this please note that there are exceptions not using this: ejb-txn-remote-call +# Single CI workflow that tests all quickstarts, and project build. +# +# A quickstart opts in to CI by providing either: +# /.ci/test-quickstart.env — common flow (sourced by the project runner) +# /.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: WildFly Quickstart CI +name: Quickstarts CI on: - workflow_call: - inputs: - QUICKSTART_PATH: - description: 'the path to the quickstart to test' - required: true - type: string - DEPLOYMENT_DIR: - description: 'the path to the deployment dir, relative to QUICKSTART_PATH' - required: false - default: '.' - type: string - TEST_PROVISIONED_SERVER: - description: 'if the quickstart support for provisioned-server profile should be tested' - required: false - default: false - type: boolean - TEST_BOOTABLE_JAR: - description: 'if the quickstart support for bootable jar profile should be tested' - required: false - default: false - type: boolean - TEST_OPENSHIFT: - description: 'if the quickstart support for openshift profile should be tested' - required: false - default: true - type: boolean - MATRIX_JDK: - description: 'the JDKs to be used on the test matrix, i.e. matrix.jdk' - required: false - default: '"17","25"' - type: string - MATRIX_OS: - description: 'the OSes to be used on the test matrix, i.e. matrix.os' - required: false - default: '"ubuntu-latest", "windows-latest"' - type: string - EXTRA_RUN_ARGS: - description: 'optional args to be passed when running the quickstart' - required: false - default: '' - type: string - MVN_COMMAND: - description: 'Maven command to use when building the project. Default is ''package'', ears needs ''install''' - required: false - default: 'package' - type: string - -# Only run the latest job + 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: - Matrix-Setup: + + # --------------------------------------------------------------------------- + # 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: - os: ${{ steps.setup-matrix-os.outputs.os }} - jdk: ${{ steps.setup-matrix-jdk.outputs.jdk }} + 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: - - id: setup-matrix-jdk - run: echo 'jdk=[${{ inputs.MATRIX_JDK }}]' >> $GITHUB_OUTPUT - - id: setup-matrix-os - run: echo 'os=[${{ inputs.MATRIX_OS }}]' >> $GITHUB_OUTPUT + - 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 - Test-build-default-matrix: - name: BUILD DEFAULT - JDK${{ matrix.jdk }} - ${{ matrix.os }} + # 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: Matrix-Setup + needs: [Setup] + if: needs.Setup.outputs.default-matrix != '[]' strategy: fail-fast: false matrix: - jdk: ${{ fromJSON(needs.Matrix-Setup.outputs.jdk) }} - os: ${{ fromJSON(needs.Matrix-Setup.outputs.os) }} + include: ${{ fromJSON(needs.Setup.outputs.default-matrix) }} steps: - uses: actions/checkout@v7 - with: - path: quickstarts + - name: Set up JDK ${{ matrix.jdk }} uses: actions/setup-java@v5 with: java-version: ${{ matrix.jdk }} - distribution: 'temurin' - cache: 'maven' - - name: Run before script - env: - FILE: "./quickstarts/.github/workflows/quickstart_${{ inputs.QUICKSTART_PATH }}_ci_before.sh" - run: | - if test -f $FILE; - then - chmod +x $FILE - bash $FILE - fi - shell: bash - - name: Build ${{ inputs.QUICKSTART_PATH }} Quickstart for Release - run: | - cd quickstarts - cd ${{ inputs.QUICKSTART_PATH }} - # Make sure it builds - mvn -fae clean ${{ inputs.MVN_COMMAND }} -Drelease - shell: bash - - name: Run & test ${{ inputs.QUICKSTART_PATH }} Quickstart with provisioned-server profile - if: ${{ inputs.TEST_PROVISIONED_SERVER }} - run: | - cd quickstarts - cd ${{ inputs.QUICKSTART_PATH }} - if [ -f ${{ inputs.DEPLOYMENT_DIR }}/target/server/bin/add-user.sh ]; then - echo "Add quickstartUser..." - ${{ inputs.DEPLOYMENT_DIR }}/target/server/bin/add-user.sh -a -u 'quickstartUser' -p 'quickstartPwd1!' -g 'guest,user,JBossAdmin,Users' - echo "Add quickstartAdmin..." - ${{ inputs.DEPLOYMENT_DIR }}/target/server/bin/add-user.sh -a -u 'quickstartAdmin' -p 'adminPwd1!' -g 'guest,user,admin' - fi - echo "Starting provisioned server..." - mvn -f ${{ inputs.DEPLOYMENT_DIR }}/pom.xml wildfly:start -Dstartup-timeout=120 ${{ inputs.EXTRA_RUN_ARGS }} - echo "Testing provisioned server..." - mvn -fae verify -Pintegration-testing - echo "Shutting down provisioned server..." - mvn -f ${{ inputs.DEPLOYMENT_DIR }}/pom.xml wildfly:shutdown - shell: bash - - name: Run & test ${{ inputs.QUICKSTART_PATH }} Quickstart with bootable-jar profile - if: ${{ inputs.TEST_BOOTABLE_JAR }} - run: | - cd quickstarts - cd ${{ inputs.QUICKSTART_PATH }} - echo "Starting bootable jar..." - mvn -f ${{ inputs.DEPLOYMENT_DIR }}/pom.xml wildfly:start-jar -Dstartup-timeout=120 ${{ inputs.EXTRA_RUN_ARGS }} - echo "Testing bootable jar..." - mvn -fae verify -Pintegration-testing - echo "Shutting down bootable jar..." - mvn -f ${{ inputs.DEPLOYMENT_DIR }}/pom.xml wildfly:shutdown - shell: bash - - name: Build ${{ inputs.QUICKSTART_PATH }} Quickstart with openshift profile - if: ${{ inputs.TEST_OPENSHIFT }} - run: | - cd quickstarts - cd ${{ inputs.QUICKSTART_PATH }} - mvn -fae clean ${{ inputs.MVN_COMMAND }} -Popenshift - shell: bash - - name: Run after script - env: - FILE: "./quickstarts/.github/workflows/quickstart_${{ inputs.QUICKSTART_PATH }}_ci_after.sh" - run: | - if test -f $FILE; - then - chmod +x $FILE - bash $FILE - fi + 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-reports-JDK${{ matrix.jdk }}-${{ matrix.os }} - path: 'quickstarts/${{ inputs.QUICKSTART_PATH }}/**/surefire-reports/*.txt' - - # Use the shared-wildfly-build workflow to have a consistent WildFly build. Note the branch names MUST match what - # is used in WildFly. - WildFly-build: - uses: wildfly/wildfly/.github/workflows/shared-wildfly-build.yml@main - with: - wildfly-branch: ${{ github.base_ref }} - wildfly-repo: "wildfly/wildfly" + name: surefire-${{ matrix.qs }}-JDK${{ matrix.jdk }}-${{ matrix.os }} + path: "${{ matrix.qs }}/**/surefire-reports/*.txt" - Test-build-with-deps-matrix: - name: BUILD WITH DEPS - JDK${{ matrix.jdk }} - ${{ matrix.os }} + # --------------------------------------------------------------------------- + # 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: [Matrix-Setup, WildFly-build] + needs: [Setup, WildFly-build] + if: needs.Setup.outputs.with-deps-matrix != '[]' strategy: fail-fast: false matrix: - jdk: ${{ fromJSON(needs.Matrix-Setup.outputs.jdk) }} - os: ${{ fromJSON(needs.Matrix-Setup.outputs.os) }} + include: ${{ fromJSON(needs.Setup.outputs.with-deps-matrix) }} steps: - uses: actions/checkout@v7 + + - name: Set up JDK ${{ matrix.jdk }} + uses: actions/setup-java@v5 with: - path: quickstarts - - uses: actions/download-artifact@v8 + 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 Maven Repo - shell: bash + + - 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@v5 with: java-version: ${{ matrix.jdk }} - distribution: 'temurin' - cache: 'maven' - - name: Run before script - env: - FILE: "./quickstarts/.github/workflows/quickstart_${{ inputs.QUICKSTART_PATH }}_ci_before.sh" - run: | - if test -f $FILE; - then - chmod +x $FILE - bash $FILE - fi - shell: bash - - name: Build Quickstart for Release with built Server version - run: | - cd quickstarts - cd ${{ inputs.QUICKSTART_PATH }} - mvn -fae clean ${{ inputs.MVN_COMMAND }} -Drelease -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - shell: bash - - name: Run & test ${{ inputs.QUICKSTART_PATH }} Quickstart with provisioned-server profile, and built Server version - if: ${{ inputs.TEST_PROVISIONED_SERVER }} - run: | - cd quickstarts - cd ${{ inputs.QUICKSTART_PATH }} - if [ -f ${{ inputs.DEPLOYMENT_DIR }}/target/server/bin/add-user.sh ]; then - echo "Add quickstartUser..." - ${{ inputs.DEPLOYMENT_DIR }}/target/server/bin/add-user.sh -a -u 'quickstartUser' -p 'quickstartPwd1!' -g 'guest,user,JBossAdmin,Users' - echo "Add quickstartAdmin..." - ${{ inputs.DEPLOYMENT_DIR }}/target/server/bin/add-user.sh -a -u 'quickstartAdmin' -p 'adminPwd1!' -g 'guest,user,admin' - fi - echo "Starting provisioned server..." - mvn -f ${{ inputs.DEPLOYMENT_DIR }}/pom.xml wildfly:start -Dstartup-timeout=120 ${{ inputs.EXTRA_RUN_ARGS }} -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - echo "Testing provisioned server..." - mvn -fae verify -Pintegration-testing -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - echo "Shutting down provisioned server..." - mvn -f ${{ inputs.DEPLOYMENT_DIR }}/pom.xml wildfly:shutdown -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - shell: bash - - name: Run & test ${{ inputs.QUICKSTART_PATH }} Quickstart with bootable-jar profile, and built Server version - if: ${{ inputs.TEST_BOOTABLE_JAR }} - run: | - cd quickstarts - cd ${{ inputs.QUICKSTART_PATH }} - echo "Starting bootable jar..." - mvn -f ${{ inputs.DEPLOYMENT_DIR }}/pom.xml wildfly:start-jar -Dstartup-timeout=120 ${{ inputs.EXTRA_RUN_ARGS }} -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - echo "Testing bootable jar..." - mvn -fae verify -Pintegration-testing -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - echo "Shutting down bootable jar..." - mvn -f ${{ inputs.DEPLOYMENT_DIR }}/pom.xml wildfly:shutdown -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} + distribution: temurin + cache: maven + + - name: Build project release + run: mvn -U -B -fae clean install -Drelease -P-provisioned-server,-bootable-jar shell: bash - - name: Build ${{ inputs.QUICKSTART_PATH }} Quickstart with openshift profile, and built Server version - if: ${{ inputs.TEST_OPENSHIFT }} - run: | - cd quickstarts - cd ${{ inputs.QUICKSTART_PATH }} - mvn -fae clean ${{ inputs.MVN_COMMAND }} -Popenshift -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} + + - 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@v5 + 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 after script - env: - FILE: "./quickstarts/.github/workflows/quickstart_${{ inputs.QUICKSTART_PATH }}_ci_after.sh" - run: | - if test -f $FILE; - then - chmod +x $FILE - bash $FILE - fi + + - 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-reports-JDK${{ matrix.jdk }}-${{ matrix.os }} - path: 'quickstarts/**/surefire-reports/*.txt' - + name: surefire-project-JDK${{ matrix.jdk }}-${{ matrix.os }}-${{ needs.WildFly-build.outputs.wildfly-version }} + path: "**/surefire-reports/*.txt" diff --git a/.github/workflows/quickstart_cmt_ci.yml b/.github/workflows/quickstart_cmt_ci.yml deleted file mode 100644 index 192556e276..0000000000 --- a/.github/workflows/quickstart_cmt_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly cmt Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'cmt/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: cmt - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_ee-security_ci.yml b/.github/workflows/quickstart_ee-security_ci.yml deleted file mode 100644 index b055c40f25..0000000000 --- a/.github/workflows/quickstart_ee-security_ci.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: WildFly ee-security Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'ee-security/**' - - .github/workflows/quickstart_ci.yml - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: ee-security - TEST_PROVISIONED_SERVER: true \ No newline at end of file diff --git a/.github/workflows/quickstart_ejb-multi-server_ci.yml b/.github/workflows/quickstart_ejb-multi-server_ci.yml deleted file mode 100644 index 649a82bc0b..0000000000 --- a/.github/workflows/quickstart_ejb-multi-server_ci.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: WildFly ejb-multi-server Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'ejb-multi-server/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: ejb-multi-server - TEST_PROVISIONED_SERVER: false - TEST_OPENSHIFT: false diff --git a/.github/workflows/quickstart_ejb-remote_ci.yml b/.github/workflows/quickstart_ejb-remote_ci.yml deleted file mode 100644 index 46ab378b80..0000000000 --- a/.github/workflows/quickstart_ejb-remote_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly ejb-remote Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'ejb-remote/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: ejb-remote - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_ejb-security-context-propagation_ci.yml b/.github/workflows/quickstart_ejb-security-context-propagation_ci.yml deleted file mode 100644 index f5e1038920..0000000000 --- a/.github/workflows/quickstart_ejb-security-context-propagation_ci.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: WildFly ejb-security-context-propagation Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'ejb-security-context-propagation/**' - - '.github/workflows/quickstart_ci.yml' - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: ejb-security-context-propagation - TEST_PROVISIONED_SERVER: true - TEST_OPENSHIFT: false \ No newline at end of file diff --git a/.github/workflows/quickstart_ejb-security-programmatic-auth_ci.yml b/.github/workflows/quickstart_ejb-security-programmatic-auth_ci.yml deleted file mode 100644 index 3546448d1d..0000000000 --- a/.github/workflows/quickstart_ejb-security-programmatic-auth_ci.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: WildFly ejb-security-programmatic-auth Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'ejb-security-programmatic-auth/**' - - .github/workflows/quickstart_ci.yml - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: ejb-security-programmatic-auth - TEST_PROVISIONED_SERVER: true - TEST_OPENSHIFT: false \ No newline at end of file diff --git a/.github/workflows/quickstart_ejb-throws-exception_ci.yml b/.github/workflows/quickstart_ejb-throws-exception_ci.yml deleted file mode 100644 index 90038d175a..0000000000 --- a/.github/workflows/quickstart_ejb-throws-exception_ci.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: WildFly ejb-throws-exception Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'ejb-throws-exception/**' - - '.github/workflows/quickstart_ci.yml' - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: ejb-throws-exception - DEPLOYMENT_DIR: ear - TEST_PROVISIONED_SERVER: true - TEST_OPENSHIFT: false - MVN_COMMAND: install \ No newline at end of file diff --git a/.github/workflows/quickstart_ejb-timer_ci.yml b/.github/workflows/quickstart_ejb-timer_ci.yml deleted file mode 100644 index 5a60959b5a..0000000000 --- a/.github/workflows/quickstart_ejb-timer_ci.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: WildFly ejb-timer Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'ejb-timer/**' - - '.github/workflows/quickstart_ci.yml' - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: ejb-timer - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_ejb-txn-remote-call_ci.yml b/.github/workflows/quickstart_ejb-txn-remote-call_ci.yml deleted file mode 100644 index 8130cfdbd2..0000000000 --- a/.github/workflows/quickstart_ejb-txn-remote-call_ci.yml +++ /dev/null @@ -1,229 +0,0 @@ -name: WildFly ejb-txn-remote-call Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'ejb-txn-remote-call/**' - - .github/workflows/quickstart_ci.yml - -# Only run the latest job -concurrency: - group: '${{ github.workflow }} @ ${{ github.ref || github.run_id }}' - cancel-in-progress: true - -env: - QUICKSTART_PATH: ejb-txn-remote-call - TEST_PROVISIONED_SERVER: true - TEST_BOOTABLE_JAR: false - TEST_OPENSHIFT: true - MATRIX_JDK: '"17","25"' - MATRIX_OS: '"ubuntu-latest"' -jobs: - Matrix-Setup: - runs-on: ubuntu-latest - outputs: - os: ${{ steps.setup-matrix-os.outputs.os }} - jdk: ${{ steps.setup-matrix-jdk.outputs.jdk }} - steps: - - id: setup-matrix-jdk - run: echo 'jdk=[${{ env.MATRIX_JDK }}]' >> $GITHUB_OUTPUT - - id: setup-matrix-os - run: echo 'os=[${{ env.MATRIX_OS }}]' >> $GITHUB_OUTPUT - - Test-build-default-matrix: - name: BUILD DEFAULT - JDK${{ matrix.jdk }} - ${{ matrix.os }} - runs-on: ${{ matrix.os }} - needs: Matrix-Setup - strategy: - fail-fast: false - matrix: - jdk: ${{ fromJSON(needs.Matrix-Setup.outputs.jdk) }} - os: ${{ fromJSON(needs.Matrix-Setup.outputs.os) }} - steps: - - uses: actions/checkout@v7 - with: - path: quickstarts - - name: Set up JDK ${{ matrix.jdk }} - uses: actions/setup-java@v5 - with: - java-version: ${{ matrix.jdk }} - distribution: 'temurin' - cache: 'maven' - - name: Run before script - env: - FILE: "./quickstarts/.github/workflows/quickstart_${{ env.QUICKSTART_PATH }}_ci_before.sh" - run: | - if test -f $FILE; - then - chmod +x $FILE - bash $FILE - fi - shell: bash - - name: Build ${{ env.QUICKSTART_PATH }} Quickstart for Release - run: | - cd quickstarts - cd ${{ env.QUICKSTART_PATH }} - mvn -fae clean package -Drelease - shell: bash - - name: Build, run & test ${{ env.QUICKSTART_PATH }} Quickstart with provisioned-server profile - if: ${{ env.TEST_PROVISIONED_SERVER }} - run: | - cd quickstarts - cd ${{ env.QUICKSTART_PATH }}/client - echo "Building 'client' provisioned server..." - mvn -fae clean package -DremoteServerUsername="quickstartUser" -DremoteServerPassword="quickstartPwd1!" -DpostgresqlUsername="test" -DpostgresqlPassword="test" - mvn wildfly:start -DpostgresqlUsername="test" -DpostgresqlPassword="test" -Dwildfly.javaOpts="-Djboss.tx.node.id=server1 -Djboss.node.name=server1" -Dstartup-timeout=120 - cd ../server - echo "Building 'server' provisioned server..." - mvn -fae clean package -Dwildfly.provisioning.dir=server2 -Djboss-as.home=target/server2 -DpostgresqlUsername="test" -DpostgresqlPassword="test" - mvn -fae package -Dwildfly.provisioning.dir=server3 -Djboss-as.home=target/server3 -DpostgresqlUsername="test" -DpostgresqlPassword="test" - echo "Add quickstartUser to both 'server' builds..." - ./target/server2/bin/add-user.sh -a -u 'quickstartUser' -p 'quickstartPwd1!' - ./target/server3/bin/add-user.sh -a -u 'quickstartUser' -p 'quickstartPwd1!' - echo "Starting provisioned server..." - mvn wildfly:start -DpostgresqlUsername="test" -DpostgresqlPassword="test" -Djboss-as.home=target/server2 -Dwildfly.javaOpts="-Djboss.socket.binding.port-offset=100 -Djboss.tx.node.id=server2 -Djboss.node.name=server2" -Dstartup-timeout=120 - mvn wildfly:start -DpostgresqlUsername="test" -DpostgresqlPassword="test" -Djboss-as.home=target/server3 -Dwildfly.javaOpts="-Djboss.socket.binding.port-offset=200 -Djboss.tx.node.id=server3 -Djboss.node.name=server3" -Dstartup-timeout=120 - echo "Testing provisioned server..." - cd ../client - mvn -fae verify -Pintegration-testing - cd ../server - mvn -fae verify -Dserver.host="http://localhost:8180" -Pintegration-testing - mvn -fae verify -Dserver.host="http://localhost:8280" -Pintegration-testing - echo "Shutting down provisioned server..." - cd ../client - mvn wildfly:shutdown - cd ../server - mvn wildfly:shutdown -Dwildfly.port=10090 - mvn wildfly:shutdown -Dwildfly.port=10190 - shell: bash - - name: Build ${{ env.QUICKSTART_PATH }} Quickstart with openshift profile - if: ${{ env.TEST_OPENSHIFT }} - run: | - cd quickstarts - cd ${{ env.QUICKSTART_PATH }}/client - mvn -fae clean package -Popenshift -DremoteServerUsername="quickstartUser" -DremoteServerPassword="quickstartPwd1!" - cd ../server - mvn -fae clean package -Popenshift - shell: bash - - name: Run after script - env: - FILE: "./quickstarts/.github/workflows/quickstart_${{ env.QUICKSTART_PATH }}_ci_after.sh" - run: | - if test -f $FILE; - then - chmod +x $FILE - bash $FILE - fi - shell: bash - - uses: actions/upload-artifact@v7 - if: failure() - with: - name: surefire-reports-JDK${{ matrix.jdk }}-${{ matrix.os }} - path: 'quickstarts/${{ env.QUICKSTART_PATH }}/**/surefire-reports/*.txt' - - # Use the shared-wildfly-build workflow to have a consistent WildFly build. Note the branch names MUST match what - # is used in WildFly. - WildFly-build: - uses: wildfly/wildfly/.github/workflows/shared-wildfly-build.yml@main - with: - wildfly-branch: ${{ github.base_ref }} - wildfly-repo: "wildfly/wildfly" - - Test-build-with-deps-matrix: - name: BUILD WITH DEPS - JDK${{ matrix.jdk }} - ${{ matrix.os }} - runs-on: ${{ matrix.os }} - needs: [Matrix-Setup, WildFly-build] - strategy: - fail-fast: false - matrix: - jdk: ${{ fromJSON(needs.Matrix-Setup.outputs.jdk) }} - os: ${{ fromJSON(needs.Matrix-Setup.outputs.os) }} - steps: - - uses: actions/checkout@v7 - with: - path: quickstarts - - uses: actions/download-artifact@v8 - with: - name: wildfly-maven-repository - path: . - - name: Extract Maven Repo - shell: bash - run: tar -xzf wildfly-maven-repository.tar.gz -C ~ - - name: Set up JDK ${{ matrix.jdk }} - uses: actions/setup-java@v5 - with: - java-version: ${{ matrix.jdk }} - distribution: 'temurin' - cache: 'maven' - - name: Run before script - env: - FILE: "./quickstarts/.github/workflows/quickstart_${{ env.QUICKSTART_PATH }}_ci_before.sh" - run: | - if test -f $FILE; - then - chmod +x $FILE - bash $FILE - fi - shell: bash - - name: Build Quickstart for Release with built Server version - run: | - cd quickstarts - cd ${{ env.QUICKSTART_PATH }} - mvn -fae clean package -Drelease -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - shell: bash - - name: Build, run & test ${{ env.QUICKSTART_PATH }} Quickstart with provisioned-server profile, and built Server version - if: ${{ env.TEST_PROVISIONED_SERVER }} - run: | - cd quickstarts - cd ${{ env.QUICKSTART_PATH }}/client - echo "Building 'client' provisioned server..." - mvn -fae clean package -DremoteServerUsername="quickstartUser" -DremoteServerPassword="quickstartPwd1!" -DpostgresqlUsername="test" -DpostgresqlPassword="test" -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - mvn wildfly:start -DpostgresqlUsername="test" -DpostgresqlPassword="test" -Dwildfly.javaOpts="-Djboss.tx.node.id=server1 -Djboss.node.name=server1" -Dstartup-timeout=120 -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - cd ../server - echo "Building 'server' provisioned server..." - mvn -fae clean package -Dwildfly.provisioning.dir=server2 -Djboss-as.home=target/server2 -DpostgresqlUsername="test" -DpostgresqlPassword="test" -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - mvn -fae package -Dwildfly.provisioning.dir=server3 -Djboss-as.home=target/server3 -DpostgresqlUsername="test" -DpostgresqlPassword="test" -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - echo "Add quickstartUser to both 'server' builds..." - ./target/server2/bin/add-user.sh -a -u 'quickstartUser' -p 'quickstartPwd1!' - ./target/server3/bin/add-user.sh -a -u 'quickstartUser' -p 'quickstartPwd1!' - echo "Starting provisioned server..." - mvn wildfly:start -DpostgresqlUsername="test" -DpostgresqlPassword="test" -Djboss-as.home=target/server2 -Dwildfly.javaOpts="-Djboss.socket.binding.port-offset=100 -Djboss.tx.node.id=server2 -Djboss.node.name=server2" -Dstartup-timeout=120 -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - mvn wildfly:start -DpostgresqlUsername="test" -DpostgresqlPassword="test" -Djboss-as.home=target/server3 -Dwildfly.javaOpts="-Djboss.socket.binding.port-offset=200 -Djboss.tx.node.id=server3 -Djboss.node.name=server3" -Dstartup-timeout=120 -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - echo "Testing provisioned server..." - cd ../client - mvn -fae verify -Pintegration-testing -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - cd ../server - mvn -fae verify -Dserver.host="http://localhost:8180" -Pintegration-testing -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - mvn -fae verify -Dserver.host="http://localhost:8280" -Pintegration-testing -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - echo "Shutting down provisioned server..." - cd ../client - mvn wildfly:shutdown -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - cd ../server - mvn wildfly:shutdown -Dwildfly.port=10090 -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - mvn wildfly:shutdown -Dwildfly.port=10190 -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - shell: bash - - name: Build ${{ env.QUICKSTART_PATH }} Quickstart with openshift profile, and built Server version - if: ${{ env.TEST_OPENSHIFT }} - run: | - cd quickstarts - cd ${{ env.QUICKSTART_PATH }}/client - mvn -fae clean package -Popenshift -DremoteServerUsername="quickstartUser" -DremoteServerPassword="quickstartPwd1!" -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - cd ../server - mvn -fae clean package -Popenshift -Dversion.server=${{ needs.wildfly-build.outputs.wildfly-version }} - shell: bash - - name: Run after script - env: - FILE: "./quickstarts/.github/workflows/quickstart_${{ env.QUICKSTART_PATH }}_ci_after.sh" - run: | - if test -f $FILE; - then - chmod +x $FILE - bash $FILE - fi - shell: bash - - uses: actions/upload-artifact@v7 - if: failure() - with: - name: surefire-reports-JDK${{ matrix.jdk }}-${{ matrix.os }} - path: 'quickstarts/**/surefire-reports/*.txt' \ No newline at end of file diff --git a/.github/workflows/quickstart_ejb-txn-remote-call_ci_before.sh b/.github/workflows/quickstart_ejb-txn-remote-call_ci_before.sh deleted file mode 100644 index e87bc43ce9..0000000000 --- a/.github/workflows/quickstart_ejb-txn-remote-call_ci_before.sh +++ /dev/null @@ -1 +0,0 @@ -docker run -d -p 5432:5432 --rm -ePOSTGRES_DB=test -ePOSTGRES_USER=test -ePOSTGRES_PASSWORD=test postgres:9.4 -c max-prepared-transactions=110 -c log-statement=all \ No newline at end of file diff --git a/.github/workflows/quickstart_ha-singleton-deployment_ci.yml b/.github/workflows/quickstart_ha-singleton-deployment_ci.yml deleted file mode 100644 index 0657c09a44..0000000000 --- a/.github/workflows/quickstart_ha-singleton-deployment_ci.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: WildFly ha-singleton-deployment Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'ha-singleton-deployment/**' - - '.github/workflows/quickstart_ci.yml' - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: ha-singleton-deployment - TEST_OPENSHIFT: false diff --git a/.github/workflows/quickstart_ha-singleton-service_ci.yml b/.github/workflows/quickstart_ha-singleton-service_ci.yml deleted file mode 100644 index 7c31e1893a..0000000000 --- a/.github/workflows/quickstart_ha-singleton-service_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly ha-singleton-service Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'ha-singleton-service/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: ha-singleton-service - TEST_OPENSHIFT: false diff --git a/.github/workflows/quickstart_helloworld-jms_ci.yml b/.github/workflows/quickstart_helloworld-jms_ci.yml deleted file mode 100644 index f19506d529..0000000000 --- a/.github/workflows/quickstart_helloworld-jms_ci.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: WildFly helloworld-jms Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'helloworld-jms/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: helloworld-jms - TEST_PROVISIONED_SERVER: true - TEST_OPENSHIFT: false \ No newline at end of file diff --git a/.github/workflows/quickstart_helloworld-mdb_ci.yml b/.github/workflows/quickstart_helloworld-mdb_ci.yml deleted file mode 100644 index 7bea06e8a5..0000000000 --- a/.github/workflows/quickstart_helloworld-mdb_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly helloworld-mdb Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'helloworld-mdb/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: helloworld-mdb - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_helloworld-mutual-ssl-secured_ci.yml b/.github/workflows/quickstart_helloworld-mutual-ssl-secured_ci.yml deleted file mode 100644 index bf0c1a6769..0000000000 --- a/.github/workflows/quickstart_helloworld-mutual-ssl-secured_ci.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: WildFly helloworld-mutual-ssl-secured Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'helloworld-mutual-ssl-secured/**' - - '.github/workflows/quickstart_ci.yml' - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: helloworld-mutual-ssl-secured - TEST_PROVISIONED_SERVER: true - TEST_OPENSHIFT: false \ No newline at end of file diff --git a/.github/workflows/quickstart_helloworld-mutual-ssl_ci.yml b/.github/workflows/quickstart_helloworld-mutual-ssl_ci.yml deleted file mode 100644 index e801b228d2..0000000000 --- a/.github/workflows/quickstart_helloworld-mutual-ssl_ci.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: WildFly helloworld-mutual-ssl Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'helloworld-mutual-ssl/**' - - '.github/workflows/quickstart_ci.yml' - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: helloworld-mutual-ssl - TEST_PROVISIONED_SERVER: true - TEST_OPENSHIFT: false \ No newline at end of file diff --git a/.github/workflows/quickstart_helloworld-rs_ci.yml b/.github/workflows/quickstart_helloworld-rs_ci.yml deleted file mode 100644 index e59808d30a..0000000000 --- a/.github/workflows/quickstart_helloworld-rs_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly helloworld-rs Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'helloworld-rs/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: helloworld-rs - TEST_PROVISIONED_SERVER: true \ No newline at end of file diff --git a/.github/workflows/quickstart_helloworld-singleton_ci.yml b/.github/workflows/quickstart_helloworld-singleton_ci.yml deleted file mode 100644 index 4cff5fdb97..0000000000 --- a/.github/workflows/quickstart_helloworld-singleton_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly helloworld-singleton Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'helloworld-singleton/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: helloworld-singleton - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_helloworld-ws_ci.yml b/.github/workflows/quickstart_helloworld-ws_ci.yml deleted file mode 100644 index 87e1bc9ee0..0000000000 --- a/.github/workflows/quickstart_helloworld-ws_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly helloworld-ws Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'helloworld-ws/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: helloworld-ws - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_helloworld_ci.yml b/.github/workflows/quickstart_helloworld_ci.yml deleted file mode 100644 index ddab48845b..0000000000 --- a/.github/workflows/quickstart_helloworld_ci.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: WildFly helloworld Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'helloworld/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: helloworld - TEST_PROVISIONED_SERVER: true - TEST_BOOTABLE_JAR: true diff --git a/.github/workflows/quickstart_hibernate_ci.yml b/.github/workflows/quickstart_hibernate_ci.yml deleted file mode 100644 index 1c3050d7d8..0000000000 --- a/.github/workflows/quickstart_hibernate_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly hibernate Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'hibernate/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: hibernate - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_http-custom-mechanism_ci.yml b/.github/workflows/quickstart_http-custom-mechanism_ci.yml deleted file mode 100644 index 3c8579034b..0000000000 --- a/.github/workflows/quickstart_http-custom-mechanism_ci.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: WildFly http-custom-mechanism Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'http-custom-mechanism/**' - - .github/workflows/quickstart_ci.yml - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: http-custom-mechanism - DEPLOYMENT_DIR: webapp - TEST_PROVISIONED_SERVER: true - TEST_OPENSHIFT: false \ No newline at end of file diff --git a/.github/workflows/quickstart_jaxrs-client_ci.yml b/.github/workflows/quickstart_jaxrs-client_ci.yml deleted file mode 100644 index a45901a4ee..0000000000 --- a/.github/workflows/quickstart_jaxrs-client_ci.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: WildFly jaxrs-client Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - branches-ignore: - - 'dependabot/**' - paths: - - 'jaxrs-client/**' - - '.github/workflows/quickstart_ci.yml' - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: jaxrs-client - TEST_PROVISIONED_SERVER: true \ No newline at end of file diff --git a/.github/workflows/quickstart_jaxrs-jwt_ci.yml b/.github/workflows/quickstart_jaxrs-jwt_ci.yml deleted file mode 100644 index c7ca508e71..0000000000 --- a/.github/workflows/quickstart_jaxrs-jwt_ci.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: WildFly jaxrs-jwt Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - branches-ignore: - - 'dependabot/**' - paths: - - 'jaxrs-jwt/**' - - '.github/workflows/quickstart_ci.yml' - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: jaxrs-jwt - TEST_PROVISIONED_SERVER: true \ No newline at end of file diff --git a/.github/workflows/quickstart_jaxws-ejb_ci.yml b/.github/workflows/quickstart_jaxws-ejb_ci.yml deleted file mode 100644 index dc9fd2186e..0000000000 --- a/.github/workflows/quickstart_jaxws-ejb_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly jaxws-ejb Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'jaxws-ejb/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: jaxws-ejb - TEST_PROVISIONED_SERVER: true \ No newline at end of file diff --git a/.github/workflows/quickstart_jaxws-retail_ci.yml b/.github/workflows/quickstart_jaxws-retail_ci.yml deleted file mode 100644 index 7489354772..0000000000 --- a/.github/workflows/quickstart_jaxws-retail_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly jaxws-retail Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'jaxws-retail/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: jaxws-retail - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_jsonp_ci.yml b/.github/workflows/quickstart_jsonp_ci.yml deleted file mode 100644 index 9385668e46..0000000000 --- a/.github/workflows/quickstart_jsonp_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly jsonp Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'jsonp/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: jsonp - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_jta-crash-rec_ci.yml b/.github/workflows/quickstart_jta-crash-rec_ci.yml deleted file mode 100644 index 28e120f662..0000000000 --- a/.github/workflows/quickstart_jta-crash-rec_ci.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: WildFly jta-crash-rec Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - jta-crash-rec/**' - - .github/workflows/quickstart_ci.yml - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: jta-crash-rec - TEST_OPENSHIFT: false \ No newline at end of file diff --git a/.github/workflows/quickstart_jts_ci.yml b/.github/workflows/quickstart_jts_ci.yml deleted file mode 100644 index b146df578e..0000000000 --- a/.github/workflows/quickstart_jts_ci.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: WildFly jts Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - jts/**' - - .github/workflows/quickstart_ci.yml - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: jts - TEST_PROVISIONED_SERVER: false - TEST_OPENSHIFT: false diff --git a/.github/workflows/quickstart_kitchensink_ci.yml b/.github/workflows/quickstart_kitchensink_ci.yml deleted file mode 100644 index aa09c51b14..0000000000 --- a/.github/workflows/quickstart_kitchensink_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly kitchensink Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'kitchensink/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: kitchensink - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_logging_ci.yml b/.github/workflows/quickstart_logging_ci.yml deleted file mode 100644 index 58be4fcbd6..0000000000 --- a/.github/workflows/quickstart_logging_ci.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: WildFly logging Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - branches-ignore: - - 'dependabot/**' - paths: - - 'logging/**' - - '.github/workflows/quickstart_ci.yml' - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: logging - TEST_PROVISIONED_SERVER: true \ No newline at end of file diff --git a/.github/workflows/quickstart_mail_ci.yml b/.github/workflows/quickstart_mail_ci.yml deleted file mode 100644 index d312254af9..0000000000 --- a/.github/workflows/quickstart_mail_ci.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: WildFly mail Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'mail/**' - - '.github/workflows/quickstart_ci.yml' - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: mail - TEST_PROVISIONED_SERVER: true - TEST_OPENSHIFT: true - MATRIX_OS: '"ubuntu-latest"' diff --git a/.github/workflows/quickstart_mail_ci_before.sh b/.github/workflows/quickstart_mail_ci_before.sh deleted file mode 100755 index d4bd9c22af..0000000000 --- a/.github/workflows/quickstart_mail_ci_before.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -# Start greenmail with the required configuration -docker run -d --rm --name "greenmail" \ - -p 1465:3465 \ - -p 1993:3993 \ - -p 1025:3025 \ - -p 1110:3110 \ - -p 8081:8080 \ - -p 1143:3143 \ - greenmail/standalone:2.0.1 \ No newline at end of file diff --git a/.github/workflows/quickstart_messaging-clustering-singleton_ci.yml b/.github/workflows/quickstart_messaging-clustering-singleton_ci.yml deleted file mode 100644 index e49daf2acd..0000000000 --- a/.github/workflows/quickstart_messaging-clustering-singleton_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly messaging-clustering-singleton Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'messaging-clustering-singleton/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: messaging-clustering-singleton - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_micrometer_ci.yml b/.github/workflows/quickstart_micrometer_ci.yml deleted file mode 100644 index 50fd337419..0000000000 --- a/.github/workflows/quickstart_micrometer_ci.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: WildFly Micrometer Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'micrometer/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: micrometer - TEST_PROVISIONED_SERVER: true - TEST_BOOTABLE_JAR: true diff --git a/.github/workflows/quickstart_microprofile-config_ci.yml b/.github/workflows/quickstart_microprofile-config_ci.yml deleted file mode 100644 index 1803b697bb..0000000000 --- a/.github/workflows/quickstart_microprofile-config_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly microprofile-config Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'microprofile-config/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: microprofile-config - TEST_BOOTABLE_JAR: true diff --git a/.github/workflows/quickstart_microprofile-fault-tolerance_ci.yml b/.github/workflows/quickstart_microprofile-fault-tolerance_ci.yml deleted file mode 100644 index a10f1e9410..0000000000 --- a/.github/workflows/quickstart_microprofile-fault-tolerance_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly microprofile-fault-tolerance Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'microprofile-fault-tolerance/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: microprofile-fault-tolerance - TEST_BOOTABLE_JAR: true diff --git a/.github/workflows/quickstart_microprofile-health_ci.yml b/.github/workflows/quickstart_microprofile-health_ci.yml deleted file mode 100644 index 4a02eeebc4..0000000000 --- a/.github/workflows/quickstart_microprofile-health_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly microprofile-health Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'microprofile-health/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: microprofile-health - TEST_BOOTABLE_JAR: true \ No newline at end of file diff --git a/.github/workflows/quickstart_microprofile-jwt_ci.yml b/.github/workflows/quickstart_microprofile-jwt_ci.yml deleted file mode 100644 index dd284afaae..0000000000 --- a/.github/workflows/quickstart_microprofile-jwt_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly microprofile-jwt Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'microprofile-jwt/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: microprofile-jwt - TEST_BOOTABLE_JAR: true diff --git a/.github/workflows/quickstart_microprofile-lra_ci.yml b/.github/workflows/quickstart_microprofile-lra_ci.yml deleted file mode 100644 index ba62366703..0000000000 --- a/.github/workflows/quickstart_microprofile-lra_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly microprofile-lra Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'microprofile-lra/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: microprofile-lra - TEST_BOOTABLE_JAR: true diff --git a/.github/workflows/quickstart_microprofile-openapi_ci.yml b/.github/workflows/quickstart_microprofile-openapi_ci.yml deleted file mode 100644 index e8daad1b2d..0000000000 --- a/.github/workflows/quickstart_microprofile-openapi_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly microprofile-openapi Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'microprofile-openapi/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: microprofile-openapi - TEST_BOOTABLE_JAR: true diff --git a/.github/workflows/quickstart_microprofile-reactive-messaging-kafka_ci.yml b/.github/workflows/quickstart_microprofile-reactive-messaging-kafka_ci.yml deleted file mode 100644 index 9be7af3eb0..0000000000 --- a/.github/workflows/quickstart_microprofile-reactive-messaging-kafka_ci.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: WildFly microprofile-reactive-messaging-kafka Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'microprofile-reactive-messaging-kafka/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: microprofile-reactive-messaging-kafka - TEST_BOOTABLE_JAR: true - # See https://issues.redhat.com/browse/WFLY-18676 for why we are excluding this on Windows for now. - MATRIX_OS: '"ubuntu-latest"' \ No newline at end of file diff --git a/.github/workflows/quickstart_microprofile-reactive-messaging-kafka_ci_before.sh b/.github/workflows/quickstart_microprofile-reactive-messaging-kafka_ci_before.sh deleted file mode 100755 index a5b7f08ed8..0000000000 --- a/.github/workflows/quickstart_microprofile-reactive-messaging-kafka_ci_before.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -# This image will be moved to SmallRye at some point -docker run -d -p 9092:9092 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 quay.io/ogunalp/kafka-native:0.5.0-kafka-3.6.0 \ No newline at end of file diff --git a/.github/workflows/quickstart_microprofile-rest-client_ci.yml b/.github/workflows/quickstart_microprofile-rest-client_ci.yml deleted file mode 100644 index db0fc3d11a..0000000000 --- a/.github/workflows/quickstart_microprofile-rest-client_ci.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: WildFly microprofile-rest-client Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - branches-ignore: - - 'dependabot/**' - paths: - - 'microprofile-rest-client/**' - - '.github/workflows/quickstart_ci.yml' - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: microprofile-rest-client - TEST_BOOTABLE_JAR: true \ No newline at end of file diff --git a/.github/workflows/quickstart_numberguess_ci.yml b/.github/workflows/quickstart_numberguess_ci.yml deleted file mode 100644 index fc43ace509..0000000000 --- a/.github/workflows/quickstart_numberguess_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly numberguess Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'numberguess/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: numberguess - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_opentelemetry-tracing_ci.yml b/.github/workflows/quickstart_opentelemetry-tracing_ci.yml deleted file mode 100644 index 599f47b0a8..0000000000 --- a/.github/workflows/quickstart_opentelemetry-tracing_ci.yml +++ /dev/null @@ -1,16 +0,0 @@ - -name: WildFly opentelemetry-tracing Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'opentelemetry-tracing/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: opentelemetry-tracing - TEST_PROVISIONED_SERVER: true - TEST_BOOTABLE_JAR: true diff --git a/.github/workflows/quickstart_remote-helloworld-mdb_ci.yml b/.github/workflows/quickstart_remote-helloworld-mdb_ci.yml deleted file mode 100644 index d73d1306dc..0000000000 --- a/.github/workflows/quickstart_remote-helloworld-mdb_ci.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: WildFly remote-helloworld-mdb Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'remote-helloworld-mdb/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: remote-helloworld-mdb - TEST_PROVISIONED_SERVER: true - MATRIX_OS: '"ubuntu-latest"' \ No newline at end of file diff --git a/.github/workflows/quickstart_remote-helloworld-mdb_ci_before.sh b/.github/workflows/quickstart_remote-helloworld-mdb_ci_before.sh deleted file mode 100755 index d31b959819..0000000000 --- a/.github/workflows/quickstart_remote-helloworld-mdb_ci_before.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -docker run -d --rm --name artemis -e AMQ_USER=admin -e AMQ_PASSWORD=admin -p8161:8161 -p61616:61616 -e AMQ_DATA_DIR=/home/jboss/data quay.io/artemiscloud/activemq-artemis-broker-kubernetes \ No newline at end of file diff --git a/.github/workflows/quickstart_security-domain-to-domain_ci.yml b/.github/workflows/quickstart_security-domain-to-domain_ci.yml deleted file mode 100644 index 8cd2ae290d..0000000000 --- a/.github/workflows/quickstart_security-domain-to-domain_ci.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: WildFly security-domain-to-domain Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'security-domain-to-domain/**' - - .github/workflows/quickstart_ci.yml - -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: security-domain-to-domain - DEPLOYMENT_DIR: ear - TEST_PROVISIONED_SERVER: true - TEST_OPENSHIFT: false - MVN_COMMAND: install \ No newline at end of file diff --git a/.github/workflows/quickstart_servlet-async_ci.yml b/.github/workflows/quickstart_servlet-async_ci.yml deleted file mode 100644 index e23fbf4456..0000000000 --- a/.github/workflows/quickstart_servlet-async_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly servlet-async Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'servlet-async/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: servlet-async - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_servlet-filterlistener_ci.yml b/.github/workflows/quickstart_servlet-filterlistener_ci.yml deleted file mode 100644 index 1117434430..0000000000 --- a/.github/workflows/quickstart_servlet-filterlistener_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly servlet-filterlistener Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'servlet-filterlistener/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: servlet-filterlistener - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_servlet-security_ci.yml b/.github/workflows/quickstart_servlet-security_ci.yml deleted file mode 100644 index 96a81bc268..0000000000 --- a/.github/workflows/quickstart_servlet-security_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly servlet-security Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'servlet-security/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: servlet-security - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_spring-resteasy_ci.yml b/.github/workflows/quickstart_spring-resteasy_ci.yml deleted file mode 100644 index 69d43fcdeb..0000000000 --- a/.github/workflows/quickstart_spring-resteasy_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly spring-resteasy Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'spring-resteasy/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: spring-resteasy - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_tasks-jsf_ci.yml b/.github/workflows/quickstart_tasks-jsf_ci.yml deleted file mode 100644 index 009847a769..0000000000 --- a/.github/workflows/quickstart_tasks-jsf_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly tasks-jsf Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'tasks-jsf/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: tasks-jsf - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_temperature-converter_ci.yml b/.github/workflows/quickstart_temperature-converter_ci.yml deleted file mode 100644 index 599804faa0..0000000000 --- a/.github/workflows/quickstart_temperature-converter_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly temperature-converter Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'temperature-converter/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: temperature-converter - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_thread-racing_ci.yml b/.github/workflows/quickstart_thread-racing_ci.yml deleted file mode 100644 index 146c0b2900..0000000000 --- a/.github/workflows/quickstart_thread-racing_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly thread-racing Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'thread-racing/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: thread-racing - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_todo-backend_ci.yml b/.github/workflows/quickstart_todo-backend_ci.yml deleted file mode 100644 index 236463769b..0000000000 --- a/.github/workflows/quickstart_todo-backend_ci.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: WildFly todo-backend Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'todo-backend/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: todo-backend - TEST_PROVISIONED_SERVER: true - TEST_OPENSHIFT: true - MATRIX_OS: '"ubuntu-latest"' - EXTRA_RUN_ARGS: '-DPOSTGRESQL_DATABASE=todos -DPOSTGRESQL_SERVICE_HOST=localhost -DPOSTGRESQL_SERVICE_PORT=5432 -DPOSTGRESQL_USER=todos -DPOSTGRESQL_PASSWORD=mysecretpassword -DPOSTGRESQL_DATASOURCE=ToDos' diff --git a/.github/workflows/quickstart_todo-backend_ci_before.sh b/.github/workflows/quickstart_todo-backend_ci_before.sh deleted file mode 100644 index f101acb10a..0000000000 --- a/.github/workflows/quickstart_todo-backend_ci_before.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -docker run --name todo-backend-db -e POSTGRES_USER=todos -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres diff --git a/.github/workflows/quickstart_websocket-endpoint_ci.yml b/.github/workflows/quickstart_websocket-endpoint_ci.yml deleted file mode 100644 index 8722a279f2..0000000000 --- a/.github/workflows/quickstart_websocket-endpoint_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly websocket-endpoint Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'websocket-endpoint/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: websocket-endpoint - TEST_PROVISIONED_SERVER: true diff --git a/.github/workflows/quickstart_websocket-hello_ci.yml b/.github/workflows/quickstart_websocket-hello_ci.yml deleted file mode 100644 index 54cda879a9..0000000000 --- a/.github/workflows/quickstart_websocket-hello_ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: WildFly websocket-hello Quickstart CI - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - 'websocket-hello/**' - - '.github/workflows/quickstart_ci.yml' -jobs: - call-quickstart_ci: - uses: ./.github/workflows/quickstart_ci.yml - with: - QUICKSTART_PATH: websocket-hello - TEST_PROVISIONED_SERVER: true diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000000..be67ac4c46 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,12 @@ +# Agent Rules + +## Start with the wiki + +At the start of each task, check `_context/wiki/index.md` to decide +whether wiki context is needed before acting. Don't read the wiki in +full. Use the index and follow links only when they are relevant to +the task. + +## Update the wiki + +After completing a task, offer to update the wiki if the task yielded durable knowledge that could benefit future work, then wait for user approval. This includes new processes, architecture decisions, or insights that go beyond the immediate task. diff --git a/_context/wiki/ci-testsuite-redesign.md b/_context/wiki/ci-testsuite-redesign.md new file mode 100644 index 0000000000..814e13bc52 --- /dev/null +++ b/_context/wiki/ci-testsuite-redesign.md @@ -0,0 +1,682 @@ +# WildFly Quickstarts — CI Testsuite Redesign + +Design specification for the WildFly Quickstarts CI Testsuite + +--- + +## 1. Goals + +- Any quickstart can be tested **locally** with a single command, with no knowledge of GitHub Actions. +- The same scripts run identically in GitHub Actions — the workflow is a thin orchestration wrapper, not a test definition. +- A **single GitHub workflow file** replaces ~55 per-quickstart workflow files and the old `project_ci.yml`. +- WildFly is built **once** per PR run; the Maven repository is **cached and shared** across all matrix jobs. +- Only quickstarts **affected by the PR** are tested in GitHub Actions; locally the user decides scope. +- Each quickstart owns its test configuration or logic — no central registry to keep in sync. + +--- + +## 2. Repository layout + +``` +wildfly-quickstarts/ +├── .ci/ +│ └── test-quickstarts.sh ← project runner +│ +├── helloworld/ +│ └── .ci/ +│ └── test-quickstart.env ← per-quickstart env (mandatory to opt-in for Quickstarts to be tested using common logic) +│ +├── microprofile-reactive-messaging-kafka/ +│ └── .ci/ +│ ├── test-quickstart.env +│ ├── before-test-quickstart.sh ← starts Kafka container +│ └── after-test-quickstart.sh ← stops Kafka container +│ +├── micrometer/ +│ └── .ci/ +│ ├── test-quickstart.env +│ ├── before-test-quickstart.sh ← docker compose up -d +│ └── after-test-quickstart.sh ← docker compose down +│ +├── opentelemetry-tracing/ +│ └── .ci/ +│ ├── test-quickstart.env +│ ├── before-test-quickstart.sh ← docker compose up -d +│ └── after-test-quickstart.sh ← docker compose down +│ +├── todo-backend/ +│ └── .ci/ +│ ├── test-quickstart.env +│ ├── before-test-quickstart.sh ← starts Postgres container +│ └── after-test-quickstart.sh ← stops Postgres container +│ +├── mail/ +│ └── .ci/ +│ ├── test-quickstart.env +│ ├── before-test-quickstart.sh ← docker compose up -d (Greenmail) +│ └── after-test-quickstart.sh ← docker compose down +│ +├── remote-helloworld-mdb/ +│ └── .ci/ +│ ├── test-quickstart.env +│ ├── before-test-quickstart.sh ← starts ActiveMQ Artemis container +│ └── after-test-quickstart.sh ← stops ActiveMQ Artemis container +│ +├── ejb-txn-remote-call/ +│ └── .ci/ +│ ├── test-quickstart.sh ← fully standalone (no delegation, mandatory to opt-in for Quickstarts that can't be tested using the common logic) +│ ├── before-test-quickstart.sh ← starts Postgres container +│ └── after-test-quickstart.sh ← stops Postgres container +│ +└── .github/workflows/ + └── quickstart_ci.yml ← THE single workflow +``` + +A quickstart is **opted in to CI** if and only if it has a `/.ci/test-quickstart.env` or a `/.ci/test-quickstart.sh` file. +Quickstarts without one of those files are ignored by both the project runner and the GitHub workflow. + +--- + +## 3. Per-quickstart `.ci/` convention + +### 3.1 Files + +| File | Required | Purpose | +|---|---|---| +| `.ci/test-quickstart.env` | Yes for common quickstarts | Key=value file (no `export`, no shell logic) sourced by the project runner to load `QS_*` overrides. May be empty for quickstarts that use all defaults. | +| `.ci/test-quickstart.sh` | Yes for non common quickstarts | Full self-contained test script (e.g. `ejb-txn-remote-call`). When present, the project runner executes it directly and skips the common flow entirely. | +| `.ci/before-test-quickstart.sh` | No | Run before any Maven step. Used to start Docker services (Kafka, Postgres, Greenmail, Artemis). | +| `.ci/after-test-quickstart.sh` | No | Run at exit, even on failure (via `trap`). Stops Docker services started by the before-script. | + +A quickstart is **testable** if it has either `.ci/test-quickstart.env` or `.ci/test-quickstart.sh`. +Quickstarts that implement common flow use `.ci/test-quickstart.env` exclusively. +Quickstarts with fully custom test logic use `.ci/test-quickstart.sh` exclusively. +Having both in the same quickstart is not valid. + +### 3.2 `QS_*` metadata variables + +These are optionally set in `.ci/test-quickstart.env`. +The project runner sources the file (with `set -a`) to load overrides into the current shell. +The GitHub workflow setup job also sources the file in a subshell to read `QS_LINUX_ONLY`. + +| Variable | Default | Description | +|---|---|---| +| `QS_TEST_PROVISIONED_SERVER` | auto-detected | `true` if `/pom.xml` contains a `provisioned-server` profile. Can be explicitly overridden to `false` to disable even when the profile exists. | +| `QS_TEST_BOOTABLE_JAR` | auto-detected | `true` if `/pom.xml` contains a `bootable-jar` profile. Can be explicitly overridden to `false`. | +| `QS_TEST_OPENSHIFT` | auto-detected | `true` if `/pom.xml` contains an `openshift` profile. Can be explicitly overridden to `false`. | +| `QS_LINUX_ONLY` | `false` | Restrict GitHub matrix to `ubuntu-latest` only. Set `true` for quickstarts that require Docker or have known Windows issues. | +| `QS_MVN_COMMAND` | `package` | Maven lifecycle goal. EAR-based quickstarts need `install`. | +| `QS_DEPLOYMENT_DIR` | `.` | Path to the sub-module containing the deployable artifact, relative to the quickstart root (e.g. `ear`, `webapp`). Also the pom.xml scanned for profile auto-detection. | +| `QS_EXTRA_RUN_ARGS` | _(empty)_ | Extra `-D` arguments forwarded to `wildfly:start` / `wildfly:start-jar`. | + +**Profile auto-detection** is performed by the project runner (not the per-quickstart `.ci/test-quickstart.env`). +When `QS_TEST_*` is not set in `test-quickstart.env`, the runner scans +`//pom.xml` for the presence of the relevant `` element. +A value in `test-quickstart.env` always takes precedence over auto-detection. + +### 3.3 Common-case template + +A quickstart that uses all defaults has an empty `test-quickstart.env`: + +``` +# helloworld/.ci/test-quickstart.env +# (empty — all QS_* variables use their defaults) +``` + +### 3.4 Linux-only testing (docker run) + +``` +# microprofile-reactive-messaging-kafka/.ci/test-quickstart.env +QS_LINUX_ONLY=true +``` + +```bash +#!/usr/bin/env bash +# microprofile-reactive-messaging-kafka/.ci/before-test-quickstart.sh +docker run --rm -d --name "microprofile-reactive-messaging-kafka-kafka" -p 9092:9092 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 quay.io/ogunalp/kafka-native:0.5.0-kafka-3.6.0 +``` + +```bash +#!/usr/bin/env bash +# microprofile-reactive-messaging-kafka/.ci/after-test-quickstart.sh +docker stop microprofile-reactive-messaging-kafka-kafka +``` + +### 3.5 Custom Maven build command + +``` +# ejb-throws-exception/.ci/test-quickstart.env +QS_MVN_COMMAND=install +QS_DEPLOYMENT_DIR=ear +``` + +### 3.6 Disabling a detected profile + +``` +# /.ci/test-quickstart.env +# provisioned-server and/or openshift profiles exist in pom.xml but are not functional +QS_TEST_PROVISIONED_SERVER=false +QS_TEST_OPENSHIFT=false +``` + +### 3.7 docker compose before/after pattern + +Quickstarts that use `docker-compose.yml` in their root (e.g. `micrometer`, `opentelemetry-tracing`, `mail`) use the simplest possible before/after scripts: + +```bash +#!/usr/bin/env bash +# /.ci/before-test-quickstart.sh +docker compose up -d +``` + +```bash +#!/usr/bin/env bash +# /.ci/after-test-quickstart.sh +docker compose down +``` + +The before-script runs from the quickstart directory (the runner `cd`s there before calling it), so `docker compose` picks up the `docker-compose.yml` at the root automatically. + +### 3.8 Fully standalone (ejb-txn-remote-call) + +This quickstart starts **three separate WildFly instances** and cannot use the generic provisioned-server flow. It has a `.ci/test-quickstart.sh` (no `.ci/test-quickstart.env`) which the project runner executes directly. It has its own before/after scripts for the Postgres database it requires: + +```bash +#!/usr/bin/env bash +# ejb-txn-remote-call/.ci/before-test-quickstart.sh +docker run -d --rm --name "ejb-txn-remote-call-db" -p 5432:5432 -e POSTGRES_DB=test -e POSTGRES_USER=test -e POSTGRES_PASSWORD=test postgres:9.4 -c max-prepared-transactions=110 -c log-statement=all +``` + +```bash +#!/usr/bin/env bash +# ejb-txn-remote-call/.ci/after-test-quickstart.sh +docker stop ejb-txn-remote-call-db +``` + +The standalone `test-quickstart.sh` calls these scripts directly (they are not invoked by the project runner for this quickstart). + +> **Rule for standalone scripts:** `QS_LINUX_ONLY` **must be declared as a bare `export` statement +> at the very top** of the standalone script, before `set -euo pipefail` or any executable code. +> The GitHub matrix setup job reads this value with `grep -q "^export QS_LINUX_ONLY=true"` — +> sourcing the script is unsafe because it runs real server/Docker commands. +> +> ```bash +> #!/usr/bin/env bash +> export QS_LINUX_ONLY=true # ← must be line 1 (after shebang), before set -euo pipefail +> set -euo pipefail +> ... +> ``` + +--- + +## 4. Project runner — `.ci/test-quickstarts.sh` + +### 4.1 Modes of operation + +| Invocation | Behaviour | +|---|---| +| `.ci/test-quickstarts.sh` | Discover all testable quickstarts (have `.ci/test-quickstart.env` or `.ci/test-quickstart.sh`) and run each in alphabetical order. | +| `.ci/test-quickstarts.sh -q ` | Run a single named quickstart. This is the recommended way to test any quickstart. | +| `.ci/test-quickstarts.sh -r ` | Resume: run all testable quickstarts in alphabetical order, starting from `` (inclusive). Useful for continuing a local run after a failure without re-testing quickstarts that already passed. | +| `.ci/test-quickstarts.sh --version-server ` | Override `version.server` Maven property (WildFly snapshot builds). Combinable with `-q` or `-r`. | + +When invoked without `-q` or `-r`, the project runner discovers all testable quickstarts by +globbing both `*/.ci/test-quickstart.env` and `*/.ci/test-quickstart.sh` from the repo root, deduplicating, +and running each in alphabetical order. The `-r` flag skips all quickstarts that sort before +`` in that same order. + +### 4.2 Profile auto-detection + +When `QS_TEST_PROVISIONED_SERVER`, `QS_TEST_BOOTABLE_JAR`, or `QS_TEST_OPENSHIFT` are not +set by the per-quickstart script, the runner scans `//pom.xml`: + +```bash +has_profile() { + local pom="$1" profile_id="$2" + grep -q "${profile_id}" "${pom}" +} +``` + +Values set in `.ci/test-quickstart.env` always override auto-detection. + +### 4.3 Single-quickstart execution flow + +``` +1. cd / +2. If .ci/test-quickstart.sh exists → execute it with bash and return (standalone path) +3. Source /.ci/test-quickstart.env (set -a) → load any QS_* overrides +4. Auto-detect any QS_TEST_* not explicitly set (scan deployment pom.xml) +5. If .ci/before-test-quickstart.sh exists → run it +6. Register .ci/after-test-quickstart.sh in trap EXIT (runs even on failure); + cleanup also restores cwd to REPO_ROOT +7. mvn -fae clean ${QS_MVN_COMMAND} -Drelease [version.server] +8. If QS_TEST_PROVISIONED_SERVER=true: + optional: ${QS_DEPLOYMENT_DIR}/target/server/bin/add-user.sh (if present) + wildfly:start → mvn verify -Pintegration-testing → wildfly:shutdown +9. If QS_TEST_BOOTABLE_JAR=true: + wildfly:start-jar → mvn verify -Pintegration-testing → wildfly:shutdown +10. If QS_TEST_OPENSHIFT=true: + mvn -fae clean ${QS_MVN_COMMAND} -Popenshift [version.server] +11. Remove trap, run cleanup explicitly (after-script + cd REPO_ROOT) +``` + +Note: the `cd /` happens first (step 1), before sourcing `test-quickstart.env`. This means the +before-script path is resolved as `./.ci/before-test-quickstart.sh` (relative), and +`docker compose` in before/after scripts correctly picks up the quickstart's own +`docker-compose.yml`. + +### 4.4 Changed-only detection + +The project runner does **not** implement changed-only detection. +That logic lives exclusively in the GitHub workflow's setup job (§5.3). +Locally, the user runs either all quickstarts or a single one via `.ci/test-quickstarts.sh -q `. + +--- + +## 5. Single GitHub Actions workflow + +**File:** `.github/workflows/quickstart_ci.yml` — workflow name: **`Quickstarts CI`** + +### 5.1 Trigger + +```yaml +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + # No paths filter — all PRs trigger; the Setup job decides what actually runs +``` + +### 5.2 Job graph + +``` +PR opened / updated + │ + ▼ + ┌──────────────────────┐ + │ WildFly-build │ + │ (shared workflow, │ + │ always attempted; │ + │ silently skipped if │ + │ branch not found │ + │ in wildfly/wildfly) │ + └──────────┬───────────┘ + │ wildfly-version output + │ (empty if skipped) + ├─────────────────────────────────────┐ + ▼ ▼ + ┌───────────┐ ┌──────────────────────┐ + │ Setup │ │ Project-default │ + │ (ubuntu) │ │ (matrix: jdk × os) │ + │ │ │ no needs │ + │ • detect │ │ always runs │ + │ changed │ └──────────────────────┘ + │ QS list │ + │ • source │ ┌──────────────────────┐ + │ QS_vars │ │ Project-with-deps │ + │ • emit │ │ (matrix: jdk × os) │ + │ matrices│ │ needs: WildFly-build│ + └─────┬─────┘ │ if: version != '' │ + │ two matrix outputs └──────────────────────┘ + │ + ├──────────────────────┐ + ▼ ▼ + ┌────────────────────┐ ┌───────────────────────┐ + │ Quickstart-default│ │ Quickstart-with-deps │ + │ (matrix: │ │ (matrix: │ + │ qs × os × jdk) │ │ qs × os × jdk) │ + │ needs: [Setup] │ │ needs: [Setup, │ + │ │ │ WildFly-build] │ + │ VERSION_SERVER="" │ │ if: with-deps-matrix │ + │ │ │ is not empty │ + │ always runs when │ │ │ + │ matrix non-empty │ │ VERSION_SERVER= │ + │ │ │ │ + └────────────────────┘ └───────────────────────┘ +``` + +### 5.3 Setup job — changed-quickstart detection + +The setup job determines which quickstarts to test and emits a flat JSON matrix of +`(qs, os, jdk)` triples. + +**Shared infrastructure directories** — when any file under these paths changes, +all testable quickstarts are run: + +``` +shared-doc/ +.ci/ +pom.xml +.github/workflows/quickstart_ci.yml +``` + +**Detection logic (pseudocode):** + +```bash +# WILDFLY_VERSION comes from needs.WildFly-build.outputs.wildfly-version +BASE="${{ github.base_ref }}" +changed=$(git diff --name-only origin/${BASE}...HEAD) + +# Check if shared infra changed → run all testable quickstarts +run_all=false +for dir in shared-doc .ci pom.xml .github/workflows/quickstart_ci.yml; do + echo "$changed" | grep -q "^${dir}" && run_all=true && break +done + +# Collect 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 +IFS=$'\n' all_qs=($(printf '%s\n' "${all_qs[@]}" | sort -u)); unset IFS + +# Filter to changed ones unless run_all=true +# For each qualifying QS: read QS_LINUX_ONLY +# .env quickstarts → source test-quickstart.env in a subshell +# standalone .sh → grep -q "^export QS_LINUX_ONLY=true" + +# Build two matrix arrays: one entry per (qs, os, jdk) triple +JDKS=(17 25) +default_entries=() +with_deps_entries=() +for qs in "${to_test[@]}"; do + for jdk in "${JDKS[@]}"; do + default_entries+=("{\"qs\":\"${qs}\",\"os\":\"ubuntu-latest\",\"jdk\":${jdk}}") + [ -n "${WILDFLY_VERSION}" ] && \ + with_deps_entries+=("{\"qs\":\"${qs}\",\"os\":\"ubuntu-latest\",\"jdk\":${jdk}}") + if [ "${QS_LINUX_ONLY}" != "true" ]; then + default_entries+=("{\"qs\":\"${qs}\",\"os\":\"windows-latest\",\"jdk\":${jdk}}") + [ -n "${WILDFLY_VERSION}" ] && \ + with_deps_entries+=("{\"qs\":\"${qs}\",\"os\":\"windows-latest\",\"jdk\":${jdk}}") + fi + done +done + +echo "default-matrix=[$(join , "${default_entries[@]}")]" >> $GITHUB_OUTPUT +echo "with-deps-matrix=[$(join , "${with_deps_entries[@]}")]" >> $GITHUB_OUTPUT +echo "wildfly-version=${WILDFLY_VERSION}" >> $GITHUB_OUTPUT +``` + +> **Empty matrix:** if no quickstarts are in scope (e.g. a docs-only PR), GitHub Actions +> silently skips both Quickstart jobs. No special handling needed. + +### 5.4 WildFly-build job + +```yaml +WildFly-build: + uses: wildfly/wildfly/.github/workflows/shared-wildfly-build.yml@main + with: + wildfly-branch: ${{ github.base_ref }} + wildfly-repo: "wildfly/wildfly" + # Behaviour when the branch does not exist in wildfly/wildfly: + # the reusable workflow silently skips — the job is reported as skipped, + # not failed. Downstream jobs that `needs: WildFly-build` still run; + # the `wildfly-version` output is empty. +``` + +Every PR targeting **any** branch triggers this job. The two test legs are: + +- **Default** (always runs): no `VERSION_SERVER` → each quickstart tests against the released version. +- **With-deps** (conditional): only runs if `wildfly-version` output is non-empty, i.e. the branch exists in `wildfly/wildfly`. Tests run with `-Dversion.server=`. + +### 5.5 Setup job matrix outputs + +The Setup job emits **two separate matrix outputs** — one per leg — both as JSON arrays of +`(qs, os, jdk)` triples. The with-deps matrix is an empty array `[]` when `WildFly-build` +did not produce a version. + +### 5.6 Quickstart-default job + +```yaml +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@v4 + - name: Set up JDK ${{ matrix.jdk }} + uses: actions/setup-java@v4 + 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@v4 + if: failure() + with: + name: surefire-${{ matrix.qs }}-JDK${{ matrix.jdk }}-${{ matrix.os }} + path: "${{ matrix.qs }}/**/surefire-reports/*.txt" +``` + +### 5.7 Quickstart-with-deps job + +```yaml +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@v4 + - name: Set up JDK ${{ matrix.jdk }} + uses: actions/setup-java@v4 + with: + java-version: ${{ matrix.jdk }} + distribution: temurin + cache: maven + - name: Download WildFly Maven repository + uses: actions/download-artifact@v4 + 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@v4 + if: failure() + with: + name: surefire-${{ matrix.qs }}-JDK${{ matrix.jdk }}-${{ matrix.os }}-${{ needs.Setup.outputs.wildfly-version }} + path: "${{ matrix.qs }}/**/surefire-reports/*.txt" +``` + +### 5.8 Project-default job + +```yaml +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@v4 + - name: Set up JDK ${{ matrix.jdk }} + uses: actions/setup-java@v4 + 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@v4 + if: failure() + with: + name: surefire-project-JDK${{ matrix.jdk }}-${{ matrix.os }} + path: "**/surefire-reports/*.txt" +``` + +### 5.9 Project-with-deps job + +```yaml +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@v4 + - name: Set up JDK ${{ matrix.jdk }} + uses: actions/setup-java@v4 + with: + java-version: ${{ matrix.jdk }} + distribution: temurin + cache: maven + - name: Download WildFly Maven repository + uses: actions/download-artifact@v4 + 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@v4 + if: failure() + with: + name: surefire-project-JDK${{ matrix.jdk }}-${{ matrix.os }}-${{ needs.WildFly-build.outputs.wildfly-version }} + path: "**/surefire-reports/*.txt" +``` + +--- + +## 6. Matrix construction + +### 6.1 Flat triple approach + +The setup job emits **two separate** JSON arrays of `(quickstart, os, jdk)` triples — +one per leg — consumed by `Quickstart-default` and `Quickstart-with-deps` respectively. Each combination +becomes an independent job on the correct runner OS. Each matrix stays within the 256-job limit. + +| Quickstart | QS_LINUX_ONLY | Quickstart-default jobs (2 JDKs) | Quickstart-with-deps jobs (when branch exists) | +|---|---|---|---| +| helloworld | false | ubuntu/17, ubuntu/25, windows/17, windows/25 → **4** | same → **4** | +| microprofile-reactive-messaging-kafka | true | ubuntu/17, ubuntu/25 → **2** | same → **2** | +| micrometer | false | ubuntu/17, ubuntu/25, windows/17, windows/25 → **4** | same → **4** | +| opentelemetry-tracing | false | ubuntu/17, ubuntu/25, windows/17, windows/25 → **4** | same → **4** | +| mail | true | ubuntu/17, ubuntu/25 → **2** | same → **2** | +| todo-backend | true | ubuntu/17, ubuntu/25 → **2** | same → **2** | +| ejb-txn-remote-call | true | ubuntu/17, ubuntu/25 → **2** | same → **2** | + +Maximum per matrix when all ~55 quickstarts are in scope: +55 × 2 JDKs × ~1.5 avg OS ≈ **165 jobs** per matrix — well within the 256-job limit. + +### 6.2 Default and with-deps legs + +The two legs run as separate jobs in the same workflow run: + +- **`Quickstart-default`** — always runs when the matrix is non-empty; no `VERSION_SERVER`. +- **`Quickstart-with-deps`** — only runs when `WildFly-build` produced a `wildfly-version` output; `VERSION_SERVER` set to that version. Skipped entirely when the branch does not exist in `wildfly/wildfly`. + +Both jobs share the same step structure; `Quickstart-default` sets no `VERSION_SERVER` and skips the +Maven repository download, while `Quickstart-with-deps` always sets `VERSION_SERVER` and always +downloads the repository (it only runs when the artifact exists). + +The `Project-default` and `Project-with-deps` jobs follow the same default/with-deps split but +run a full `mvn clean install -Drelease` across the whole project tree, skipping +`-P-provisioned-server,-bootable-jar` (those profiles are exercised per-quickstart by the +Quickstart-* jobs). + +--- + +## 7. Resource sharing strategy + +| Resource | How shared | +|---|---| +| WildFly build | Single `WildFly-build` job; `wildfly-version` output consumed by all with-deps jobs via `needs.` expression. Maven repo tarball downloaded per Test job via `actions/download-artifact`. | +| Maven repository cache | `actions/setup-java` with `cache: maven` — keyed on `pom.xml` hash, shared across all matrix jobs on the same OS. Significantly reduces download time for the WildFly dependency set. | +| Checkout | Each job checks out the repo independently (required for parallel runners). | +| Surefire reports | Uploaded per failing job with a name scoped to avoid artifact name collisions. | + +--- + +## 8. Migration map + +| Current | Action | Replacement | +|---|---|---| +| `.ci/test-quickstart.sh` (project runner) | **renamed** | `.ci/test-quickstarts.sh` | +| `.github/workflows/quickstart_ci.yml` | **rewritten** | Single workflow as described in §5 | +| `.github/workflows/project_ci.yml` | **deleted** | `Project-default` / `Project-with-deps` jobs in `quickstart_ci.yml` | +| `.github/workflows/quickstart__ci.yml` (~55 files) | **deleted** | Per-quickstart `/.ci/test-quickstart.env` or `/.ci/test-quickstart.sh` | +| `.github/workflows/quickstart__ci_before.sh` | **deleted** | `/.ci/before-test-quickstart.sh` + `/.ci/after-test-quickstart.sh` | +| `ejb-txn-remote-call` inline workflow logic | **migrated** | `ejb-txn-remote-call/.ci/test-quickstart.sh` (standalone) + separate before/after scripts | +| `.github/workflows/kubernetes-ci.yml` | **updated** | Opt-in check replaced: presence of `/.ci/test-quickstart.env` or `/.ci/test-quickstart.sh` instead of `quickstart_${qs}_ci.yml` | + +### 8.1 Before/after-script migration + +All before-scripts now have a matching after-script that tears down what was started. + +| Quickstart | before-test-quickstart.sh | after-test-quickstart.sh | +|---|---|---| +| `microprofile-reactive-messaging-kafka` | starts Kafka container (`docker run`) | `docker stop microprofile-reactive-messaging-kafka-kafka` | +| `micrometer` | `docker compose up -d` | `docker compose down` | +| `opentelemetry-tracing` | `docker compose up -d` | `docker compose down` | +| `mail` | `docker compose up -d` (Greenmail) | `docker compose down` | +| `remote-helloworld-mdb` | starts Artemis container (`docker run`) | `docker stop artemis` | +| `todo-backend` | starts Postgres container (`docker run`) | `docker stop todo-backend-db` | +| `ejb-txn-remote-call` | starts Postgres container (`docker run`) | `docker stop ejb-txn-remote-call-db` | + +--- + +## 9. Files kept unchanged + +The following GitHub workflow files are **out of scope** and are not touched: + +- `.github/workflows/publish-pages.yml` +- `.github/workflows/reduce_readme.yml` + +`.github/workflows/kubernetes-ci.yml` was updated as part of this redesign — see §8. + +--- + +## 10. Local usage examples + +```bash +# Run all testable quickstarts +.ci/test-quickstarts.sh + +# Run a single quickstart via the project runner +.ci/test-quickstarts.sh -q helloworld + +# Resume all quickstarts from kitchensink onwards (e.g. after a failure at kitchensink) +.ci/test-quickstarts.sh -r kitchensink + +# Test against a locally built WildFly snapshot +.ci/test-quickstarts.sh -q microprofile-health \ + --version-server 36.0.0.Beta1-SNAPSHOT + +# Resume from a specific quickstart with a snapshot version +.ci/test-quickstarts.sh -r microprofile-config \ + --version-server 36.0.0.Beta1-SNAPSHOT + +# Kafka quickstart — Docker must already be running +# (before-test-quickstart.sh starts Kafka automatically when called via the runner) +microprofile-reactive-messaging-kafka/.ci/test-quickstart.sh +``` diff --git a/_context/wiki/index.md b/_context/wiki/index.md new file mode 100644 index 0000000000..d42de88c89 --- /dev/null +++ b/_context/wiki/index.md @@ -0,0 +1,19 @@ +# Wiki Index + +This wiki captures durable context about the WildFly Quickstarts project and working preferences. +Read this index first; follow links only when they are relevant to the task at hand. + +## Files + +| File | Contents | +|------|----------| +| [project.md](project.md) | Project overview, goals, structure, ownership model, and key workflows | +| [preferences.md](preferences.md) | Working standards, AI collaboration preferences, and communication style | +| [ci-testsuite-redesign.md](ci-testsuite-redesign.md) | CI testsuite redesign spec | + +## Quick orientation + +- **Repo**: WildFly Quickstarts — ~60 Jakarta EE / MicroProfile reference examples for the WildFly application server. +- **Project lead**: Responsible for maintenance, cross-cutting enhancements, and coordinating with per-quickstart owners. +- **Active priorities**: Modernisation, OpenShift/Kubernetes compatibility, integration tests, documentation. +- **Key rule**: Always check existing quickstart patterns before suggesting changes; prefer solutions applicable across multiple quickstarts. diff --git a/_context/wiki/preferences.md b/_context/wiki/preferences.md new file mode 100644 index 0000000000..38ea11436a --- /dev/null +++ b/_context/wiki/preferences.md @@ -0,0 +1,37 @@ +# Working Preferences + +## AI Collaboration style + +- **Always check existing patterns first** — Before suggesting any change, examine how similar quickstarts or shared components already handle the problem. Read the relevant `README-source.adoc`, `pom.xml`, and source files in comparable quickstarts. +- **Prefer cross-cutting solutions** — Favour approaches that can be applied consistently across multiple quickstarts over one-off fixes. If a change only makes sense for one quickstart, call that out explicitly. +- **Evolve patterns thoughtfully** — Existing patterns can and should be improved, but deviations must be deliberate and justified. Flag when a suggestion diverges from the current norm. +- **Be proactive** — Raise potential issues, inconsistencies, or improvement opportunities even when not explicitly asked. This includes security concerns, outdated dependencies, documentation gaps, and compatibility issues. +- **Draft PRs automatically** — After completing a code or documentation change, produce a pull request description draft without waiting to be asked. +- **Detailed explanations** — Provide thorough context for recommendations: why a pattern was chosen, what alternatives were considered, and how the change relates to the broader project goals. + +## Code and documentation standards + +- Follow the AsciiDoc conventions established in `shared-doc/` and existing `README-source.adoc` files. +- Ignore README.adoc files, those are flat - no includes - versions of README-source.adoc, which are properly rendered on GitHub, and are automatically rebuilt when README-source.adoc changes are pushed/merged. +- Use attribute substitution (`{productName}`, `{javaVersion}`, etc.) consistently — never hardcode values that are defined as attributes. +- Maven changes should align on all Quickstarts, preferably using dependencies managed by WildFly BOMs. +- Integration tests should use patterns already established in the repo (Arquillian, etc.) and be structured for reuse across quickstarts where possible. +- OpenShift compatibility changes should be validated against the existing compatible quickstarts as reference implementations. + +## Communication preferences + +- **Conciseness in summaries, detail in explanations** — Short summary up front, full reasoning below. Don't pad responses but don't omit rationale either. +- **Structured output** — Use tables, lists, and headers to organise complex information (e.g. comparing options, listing affected quickstarts). +- **Flag scope** — Always note when a change affects only one quickstart vs. multiple vs. the whole repo. +- **Ownership awareness** — When a change touches a quickstart owned by someone other than the project lead, flag this and suggest coordination steps. + +## Workflow preferences + +- Check `CODEOWNERS` and the quickstart's `README-source.adoc` to identify the right owner before proposing changes that belong to a specific quickstart team. +- When modernising, compare against the latest WildFly and Jakarta EE/MicroProfile spec versions — don't assume the existing code is current. +- For documentation changes, verify that shared fragments in `shared-doc/` aren't a better place for the content than inline in a specific quickstart. +- Prefer batch improvements: if fixing a pattern in one quickstart, identify all other quickstarts with the same issue and address them together. + +## GitHub Actions canonical versions + +Always prefer the versions used in existent `.github/workflows/` files. Align any new or updated workflow to these before committing. \ No newline at end of file diff --git a/_context/wiki/project.md b/_context/wiki/project.md new file mode 100644 index 0000000000..ee4c7f01ff --- /dev/null +++ b/_context/wiki/project.md @@ -0,0 +1,52 @@ +# Project Overview + +## What this project is + +The **WildFly Quickstarts** repository is the official collection of ~60 reference applications demonstrating Jakarta EE and MicroProfile technologies running on the [WildFly application server](https://www.wildfly.org/). Each quickstart is a small, focused, working example that developers can use as a starting point or reference for their own projects. + +The quickstarts cover a wide range of technologies: CDI, EJB, JPA, JSF, Jakarta REST, JMS, Security (Elytron), MicroProfile (Config, Health, Fault Tolerance, JWT, LRA, OpenAPI, Reactive Messaging, REST Client), OpenTelemetry, Micrometer, WebSockets, and more. + +## Goals and priorities + +1. **Modernisation** — Keep quickstarts aligned with the latest Jakarta EE and MicroProfile specifications and WildFly releases. +2. **OpenShift / Kubernetes compatibility** — Ensure quickstarts marked as OpenShift-compatible work reliably on container platforms; expand compatibility where feasible. +3. **Integration tests** — Improve test coverage and reliability across quickstarts. +4. **Documentation** — Improve clarity, completeness, and consistency of `README-source.adoc` files across all quickstarts. +5. **Cross-cutting improvements** — Prefer enhancements that can be applied uniformly to multiple quickstarts over one-off fixes. + +## Ownership model + +- **Project lead** owns the overall repository: maintenance, release procedures, cross-cutting enhancements, and coordination. +- **Each quickstart has an owner** — typically the team responsible for the main WildFly component the quickstart targets. Owners are identified in the quickstart's own `README-source.adoc`. +- Cross-cutting changes (shared docs, parent POM, CI, build tooling) are the project lead's direct responsibility. + +## Repository structure + +| Path | Purpose | +|------|---------| +| `/` | Each quickstart lives in its own top-level folder | +| `shared-doc/` | Shared AsciiDoc fragments included by quickstart READMEs | +| `pom.xml` | Parent Maven POM; defines common dependency management | +| `README-source.adoc` | Master README with the full quickstart table | +| `CODEOWNERS` | GitHub CODEOWNERS for per-quickstart ownership | +| `CONTRIBUTING.adoc` | Contribution guidelines | +| `RELEASE_PROCEDURE.adoc` | Release process documentation | +| `.github/` | CI workflows (GitHub Actions) | +| `.ci/` | Local CI scripts and configuration | +| `guide/` | Extended guide documentation | + +## Key workflows + +- **Adding a quickstart**: Create a new top-level folder, add `README-source.adoc`, wire into the parent `pom.xml`, and update `CODEOWNERS`. Maven profiles and sahred-docs includes should be reused. At least a basic integration test should be included, activated by Maven profile named "integration-testing" +- **Updating shared content**: Edit files under `shared-doc/` — changes propagate to all quickstarts that include those fragments. +- **Generating READMEs**: `README.adoc` / `README.html` files are generated from `README-source.adoc` using the Asciidoctor toolchain with attribute substitution, same for the `Table of Available Quickstarts` in the root `README`. +- **CI**: GitHub Actions runs builds and tests; OpenShift-compatible quickstarts are also tested on OpenShift. +- **Releases**: Follow `RELEASE_PROCEDURE.adoc`. + +## OpenShift compatibility + +Quickstarts flagged `Yes` in the *Openshift Compatible* column of the main table are expected to deploy and run on OpenShift without modification. Expanding this flag is an active goal. + +## Technology tags (quick reference) + +`CDI` · `EJB` · `JPA` · `JSF` · `Jakarta REST` · `JMS` · `MDB` · `Security / Elytron` · `MicroProfile` · `OpenTelemetry` · `Micrometer` · `WebSocket` · `Hibernate` · `Spring` · `Batch` · `JTA` · `Clustering` diff --git a/batch-processing/.ci/test-quickstart.env b/batch-processing/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/bmt/.ci/test-quickstart.env b/bmt/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cmt/.ci/test-quickstart.env b/cmt/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ee-security/.ci/test-quickstart.env b/ee-security/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ejb-multi-server/.ci/test-quickstart.env b/ejb-multi-server/.ci/test-quickstart.env new file mode 100644 index 0000000000..bb80c68315 --- /dev/null +++ b/ejb-multi-server/.ci/test-quickstart.env @@ -0,0 +1,2 @@ +QS_TEST_PROVISIONED_SERVER=false +QS_TEST_OPENSHIFT=false diff --git a/ejb-remote/.ci/test-quickstart.env b/ejb-remote/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ejb-security-context-propagation/.ci/test-quickstart.env b/ejb-security-context-propagation/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ejb-security-programmatic-auth/.ci/test-quickstart.env b/ejb-security-programmatic-auth/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ejb-throws-exception/.ci/test-quickstart.env b/ejb-throws-exception/.ci/test-quickstart.env new file mode 100644 index 0000000000..9da53b48a0 --- /dev/null +++ b/ejb-throws-exception/.ci/test-quickstart.env @@ -0,0 +1,2 @@ +QS_MVN_COMMAND=install +QS_DEPLOYMENT_DIR=ear diff --git a/ejb-timer/.ci/test-quickstart.env b/ejb-timer/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ejb-txn-remote-call/.ci/after-test-quickstart.sh b/ejb-txn-remote-call/.ci/after-test-quickstart.sh new file mode 100755 index 0000000000..bebc5a761d --- /dev/null +++ b/ejb-txn-remote-call/.ci/after-test-quickstart.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker stop ejb-txn-remote-call-db \ No newline at end of file diff --git a/ejb-txn-remote-call/.ci/before-test-quickstart.sh b/ejb-txn-remote-call/.ci/before-test-quickstart.sh new file mode 100755 index 0000000000..0b4e323456 --- /dev/null +++ b/ejb-txn-remote-call/.ci/before-test-quickstart.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker run -d --rm --name "ejb-txn-remote-call-db" -p 5432:5432 -e POSTGRES_DB=test -e POSTGRES_USER=test -e POSTGRES_PASSWORD=test postgres:9.4 -c max-prepared-transactions=110 -c log-statement=all diff --git a/ejb-txn-remote-call/.ci/test-quickstart.sh b/ejb-txn-remote-call/.ci/test-quickstart.sh new file mode 100755 index 0000000000..bdaab4f4a4 --- /dev/null +++ b/ejb-txn-remote-call/.ci/test-quickstart.sh @@ -0,0 +1,180 @@ +#!/usr/bin/env bash +# Standalone — does NOT delegate to the project runner. +# This quickstart starts three separate WildFly instances and cannot +# use the generic provisioned-server flow. + +# QS_LINUX_ONLY is read by the GitHub matrix setup job before any other code runs +export QS_LINUX_ONLY=true + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Quickstart root is always one directory above this script's .ci/ directory +QUICKSTART_ROOT="$SCRIPT_DIR/.." +cd "${QUICKSTART_ROOT}" + +log() { echo "[ejb-txn-remote-call] $*"; } + +version_server_arg="" +[[ -n "${VERSION_SERVER:-}" ]] && version_server_arg="-Dversion.server=${VERSION_SERVER}" + +# --------------------------------------------------------------------------- +# Ensure 'docker' is available as a real command in non-interactive subshells. +# On systems where 'docker' is only a shell alias (e.g. aliased to podman on +# macOS), child processes launched with 'bash script.sh' won't see it. +# If 'docker' is not a real binary but 'podman' is, we write a tiny shim into +# a temporary directory and prepend it to PATH so that all before/after scripts +# can use 'docker' transparently. +# --------------------------------------------------------------------------- +if ! command -v docker &>/dev/null; then + if command -v podman &>/dev/null; then + _shim_dir="$(mktemp -d)" + printf '#!/usr/bin/env bash\nexec podman "$@"\n' > "${_shim_dir}/docker" + chmod +x "${_shim_dir}/docker" + export PATH="${_shim_dir}:${PATH}" + log "docker not found as a binary — created podman shim at ${_shim_dir}/docker" + else + log "WARNING: neither 'docker' nor 'podman' found in PATH. Before/after scripts may fail." + fi +fi + +# --------------------------------------------------------------------------- +# Before hook — run directly when this script is invoked standalone; +# the project runner also calls it, but running it twice is harmless since +# the container is started with --rm and a fixed name would conflict, so we +# only run it here if the runner has not already done so. +# --------------------------------------------------------------------------- +BEFORE_SCRIPT="$SCRIPT_DIR/before-test-quickstart.sh" +if [[ -f "${BEFORE_SCRIPT}" ]]; then + log "Running before-test-quickstart.sh..." + bash "${BEFORE_SCRIPT}" +fi + +# --------------------------------------------------------------------------- +# After hook (Postgres container) — runs on exit even on failure +# --------------------------------------------------------------------------- +AFTER_SCRIPT="$SCRIPT_DIR/after-test-quickstart.sh" +after_hook() { + if [[ -f "${AFTER_SCRIPT}" ]]; then + log "Running after-test-quickstart.sh..." + bash "${AFTER_SCRIPT}" || true + fi +} +trap after_hook EXIT + +# --------------------------------------------------------------------------- +# Helper: shut down the three provisioned WildFly servers +# --------------------------------------------------------------------------- +shutdown_servers() { + log "Shutting down client (server1)..." + # shellcheck disable=SC2086 + (cd "${QUICKSTART_ROOT}/client" && mvn wildfly:shutdown ${version_server_arg}) || true + log "Shutting down server2 (port 10090)..." + # shellcheck disable=SC2086 + (cd "${QUICKSTART_ROOT}/server" && mvn wildfly:shutdown -Dwildfly.port=10090 ${version_server_arg}) || true + log "Shutting down server3 (port 10190)..." + # shellcheck disable=SC2086 + (cd "${QUICKSTART_ROOT}/server" && mvn wildfly:shutdown -Dwildfly.port=10190 ${version_server_arg}) || true +} + +# --------------------------------------------------------------------------- +# Step 1 – Build for release +# --------------------------------------------------------------------------- +log "=== Step 1: Build for release ===" +# shellcheck disable=SC2086 +mvn -fae clean package -Drelease ${version_server_arg} + +# --------------------------------------------------------------------------- +# Step 2 – Provisioned-server: client + two server instances +# --------------------------------------------------------------------------- +log "=== Step 2: Build, run & test with provisioned-server profile ===" + +cd client +log "Building 'client' provisioned server..." +# shellcheck disable=SC2086 +mvn -fae clean package \ + -DremoteServerUsername="quickstartUser" \ + -DremoteServerPassword="quickstartPwd1!" \ + -DpostgresqlUsername="test" \ + -DpostgresqlPassword="test" \ + ${version_server_arg} + +log "Starting 'client' provisioned server (server1)..." +# shellcheck disable=SC2086 +mvn wildfly:start \ + -DpostgresqlUsername="test" \ + -DpostgresqlPassword="test" \ + -Dwildfly.javaOpts="-Djboss.tx.node.id=server1 -Djboss.node.name=server1" \ + -Dstartup-timeout=120 \ + ${version_server_arg} + +cd ../server +log "Building 'server' provisioned server (server2 + server3)..." +# shellcheck disable=SC2086 +mvn -fae clean package \ + -Dwildfly.provisioning.dir=server2 \ + -Djboss-as.home=target/server2 \ + -DpostgresqlUsername="test" \ + -DpostgresqlPassword="test" \ + ${version_server_arg} +# shellcheck disable=SC2086 +mvn -fae package \ + -Dwildfly.provisioning.dir=server3 \ + -Djboss-as.home=target/server3 \ + -DpostgresqlUsername="test" \ + -DpostgresqlPassword="test" \ + ${version_server_arg} + +log "Adding quickstartUser to server2 and server3..." +./target/server2/bin/add-user.sh -a -u 'quickstartUser' -p 'quickstartPwd1!' +./target/server3/bin/add-user.sh -a -u 'quickstartUser' -p 'quickstartPwd1!' + +log "Starting provisioned server2 (port-offset 100)..." +# shellcheck disable=SC2086 +mvn wildfly:start \ + -DpostgresqlUsername="test" \ + -DpostgresqlPassword="test" \ + -Djboss-as.home=target/server2 \ + -Dwildfly.javaOpts="-Djboss.socket.binding.port-offset=100 -Djboss.tx.node.id=server2 -Djboss.node.name=server2" \ + -Dstartup-timeout=120 \ + ${version_server_arg} + +log "Starting provisioned server3 (port-offset 200)..." +# shellcheck disable=SC2086 +mvn wildfly:start \ + -DpostgresqlUsername="test" \ + -DpostgresqlPassword="test" \ + -Djboss-as.home=target/server3 \ + -Dwildfly.javaOpts="-Djboss.socket.binding.port-offset=200 -Djboss.tx.node.id=server3 -Djboss.node.name=server3" \ + -Dstartup-timeout=120 \ + ${version_server_arg} + +log "Testing provisioned servers..." +cd ../client +# shellcheck disable=SC2086 +mvn -fae verify -Pintegration-testing ${version_server_arg} +cd ../server +# shellcheck disable=SC2086 +mvn -fae verify -Dserver.host="http://localhost:8180" -Pintegration-testing ${version_server_arg} +# shellcheck disable=SC2086 +mvn -fae verify -Dserver.host="http://localhost:8280" -Pintegration-testing ${version_server_arg} + +shutdown_servers + +# --------------------------------------------------------------------------- +# Step 3 – OpenShift profile build (no servers needed) +# --------------------------------------------------------------------------- +log "=== Step 3: Build with openshift profile ===" +cd "${QUICKSTART_ROOT}/client" +# shellcheck disable=SC2086 +mvn -fae clean package \ + -Popenshift \ + -DremoteServerUsername="quickstartUser" \ + -DremoteServerPassword="quickstartPwd1!" \ + ${version_server_arg} +cd ../server +# shellcheck disable=SC2086 +mvn -fae clean package -Popenshift ${version_server_arg} + +log "=== Completed: ejb-txn-remote-call ===" diff --git a/ha-singleton-deployment/.ci/test-quickstart.env b/ha-singleton-deployment/.ci/test-quickstart.env new file mode 100644 index 0000000000..1dad3e7c38 --- /dev/null +++ b/ha-singleton-deployment/.ci/test-quickstart.env @@ -0,0 +1 @@ +QS_TEST_OPENSHIFT=false diff --git a/ha-singleton-service/.ci/test-quickstart.env b/ha-singleton-service/.ci/test-quickstart.env new file mode 100644 index 0000000000..1dad3e7c38 --- /dev/null +++ b/ha-singleton-service/.ci/test-quickstart.env @@ -0,0 +1 @@ +QS_TEST_OPENSHIFT=false diff --git a/helloworld-jms/.ci/test-quickstart.env b/helloworld-jms/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/helloworld-mdb/.ci/test-quickstart.env b/helloworld-mdb/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/helloworld-mutual-ssl-secured/.ci/test-quickstart.env b/helloworld-mutual-ssl-secured/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/helloworld-mutual-ssl/.ci/test-quickstart.env b/helloworld-mutual-ssl/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/helloworld-rs/.ci/test-quickstart.env b/helloworld-rs/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/helloworld-singleton/.ci/test-quickstart.env b/helloworld-singleton/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/helloworld-ws/.ci/test-quickstart.env b/helloworld-ws/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/helloworld/.ci/test-quickstart.env b/helloworld/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/hibernate/.ci/test-quickstart.env b/hibernate/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/http-custom-mechanism/.ci/test-quickstart.env b/http-custom-mechanism/.ci/test-quickstart.env new file mode 100644 index 0000000000..8d3b123f3a --- /dev/null +++ b/http-custom-mechanism/.ci/test-quickstart.env @@ -0,0 +1 @@ +QS_DEPLOYMENT_DIR=webapp diff --git a/jaxrs-client/.ci/test-quickstart.env b/jaxrs-client/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/jaxrs-jwt/.ci/test-quickstart.env b/jaxrs-jwt/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/jaxws-ejb/.ci/test-quickstart.env b/jaxws-ejb/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/jaxws-retail/.ci/test-quickstart.env b/jaxws-retail/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/jsonp/.ci/test-quickstart.env b/jsonp/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/jta-crash-rec/.ci/test-quickstart.env b/jta-crash-rec/.ci/test-quickstart.env new file mode 100644 index 0000000000..1dad3e7c38 --- /dev/null +++ b/jta-crash-rec/.ci/test-quickstart.env @@ -0,0 +1 @@ +QS_TEST_OPENSHIFT=false diff --git a/jts/.ci/test-quickstart.env b/jts/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/kitchensink/.ci/test-quickstart.env b/kitchensink/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/logging/.ci/test-quickstart.env b/logging/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/mail/.ci/after-test-quickstart.sh b/mail/.ci/after-test-quickstart.sh new file mode 100755 index 0000000000..0a66d1d6eb --- /dev/null +++ b/mail/.ci/after-test-quickstart.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker compose down \ No newline at end of file diff --git a/mail/.ci/before-test-quickstart.sh b/mail/.ci/before-test-quickstart.sh new file mode 100755 index 0000000000..e6b485c002 --- /dev/null +++ b/mail/.ci/before-test-quickstart.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker compose up -d \ No newline at end of file diff --git a/mail/.ci/test-quickstart.env b/mail/.ci/test-quickstart.env new file mode 100644 index 0000000000..1af1887d4c --- /dev/null +++ b/mail/.ci/test-quickstart.env @@ -0,0 +1 @@ +QS_LINUX_ONLY=true diff --git a/messaging-clustering-singleton/.ci/test-quickstart.env b/messaging-clustering-singleton/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/micrometer/.ci/after-test-quickstart.sh b/micrometer/.ci/after-test-quickstart.sh new file mode 100755 index 0000000000..0a66d1d6eb --- /dev/null +++ b/micrometer/.ci/after-test-quickstart.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker compose down \ No newline at end of file diff --git a/micrometer/.ci/before-test-quickstart.sh b/micrometer/.ci/before-test-quickstart.sh new file mode 100755 index 0000000000..e6b485c002 --- /dev/null +++ b/micrometer/.ci/before-test-quickstart.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker compose up -d \ No newline at end of file diff --git a/micrometer/.ci/test-quickstart.env b/micrometer/.ci/test-quickstart.env new file mode 100644 index 0000000000..ead7d3e482 --- /dev/null +++ b/micrometer/.ci/test-quickstart.env @@ -0,0 +1 @@ +QS_LINUX_ONLY=true \ No newline at end of file diff --git a/microprofile-config/.ci/test-quickstart.env b/microprofile-config/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/microprofile-fault-tolerance/.ci/test-quickstart.env b/microprofile-fault-tolerance/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/microprofile-health/.ci/test-quickstart.env b/microprofile-health/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/microprofile-jwt/.ci/test-quickstart.env b/microprofile-jwt/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/microprofile-lra/.ci/test-quickstart.env b/microprofile-lra/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/microprofile-openapi/.ci/test-quickstart.env b/microprofile-openapi/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/microprofile-reactive-messaging-kafka/.ci/after-test-quickstart.sh b/microprofile-reactive-messaging-kafka/.ci/after-test-quickstart.sh new file mode 100755 index 0000000000..d3dafdfd6e --- /dev/null +++ b/microprofile-reactive-messaging-kafka/.ci/after-test-quickstart.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +# microprofile-reactive-messaging-kafka/.ci/after-test-quickstart.sh +docker stop microprofile-reactive-messaging-kafka-kafka diff --git a/microprofile-reactive-messaging-kafka/.ci/before-test-quickstart.sh b/microprofile-reactive-messaging-kafka/.ci/before-test-quickstart.sh new file mode 100755 index 0000000000..c972641a62 --- /dev/null +++ b/microprofile-reactive-messaging-kafka/.ci/before-test-quickstart.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +# microprofile-reactive-messaging-kafka/.ci/before-test-quickstart.sh +# This image will be moved to SmallRye at some point +docker run --rm -d --name "microprofile-reactive-messaging-kafka-kafka" -p 9092:9092 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 quay.io/ogunalp/kafka-native:0.5.0-kafka-3.6.0 diff --git a/microprofile-reactive-messaging-kafka/.ci/test-quickstart.env b/microprofile-reactive-messaging-kafka/.ci/test-quickstart.env new file mode 100644 index 0000000000..1af1887d4c --- /dev/null +++ b/microprofile-reactive-messaging-kafka/.ci/test-quickstart.env @@ -0,0 +1 @@ +QS_LINUX_ONLY=true diff --git a/microprofile-rest-client/.ci/test-quickstart.env b/microprofile-rest-client/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/numberguess/.ci/test-quickstart.env b/numberguess/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/opentelemetry-tracing/.ci/after-test-quickstart.sh b/opentelemetry-tracing/.ci/after-test-quickstart.sh new file mode 100755 index 0000000000..0a66d1d6eb --- /dev/null +++ b/opentelemetry-tracing/.ci/after-test-quickstart.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker compose down \ No newline at end of file diff --git a/opentelemetry-tracing/.ci/before-test-quickstart.sh b/opentelemetry-tracing/.ci/before-test-quickstart.sh new file mode 100755 index 0000000000..e6b485c002 --- /dev/null +++ b/opentelemetry-tracing/.ci/before-test-quickstart.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker compose up -d \ No newline at end of file diff --git a/opentelemetry-tracing/.ci/test-quickstart.env b/opentelemetry-tracing/.ci/test-quickstart.env new file mode 100644 index 0000000000..ead7d3e482 --- /dev/null +++ b/opentelemetry-tracing/.ci/test-quickstart.env @@ -0,0 +1 @@ +QS_LINUX_ONLY=true \ No newline at end of file diff --git a/remote-helloworld-mdb/.ci/after-test-quickstart.sh b/remote-helloworld-mdb/.ci/after-test-quickstart.sh new file mode 100755 index 0000000000..95593bd8e0 --- /dev/null +++ b/remote-helloworld-mdb/.ci/after-test-quickstart.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker stop artemis diff --git a/remote-helloworld-mdb/.ci/before-test-quickstart.sh b/remote-helloworld-mdb/.ci/before-test-quickstart.sh new file mode 100755 index 0000000000..8b05b8e5a6 --- /dev/null +++ b/remote-helloworld-mdb/.ci/before-test-quickstart.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker run --rm -d --name "artemis" -e AMQ_USER=admin -e AMQ_PASSWORD=admin -p8161:8161 -p61616:61616 -e AMQ_DATA_DIR=/home/jboss/data quay.io/artemiscloud/activemq-artemis-broker-kubernetes \ No newline at end of file diff --git a/remote-helloworld-mdb/.ci/test-quickstart.env b/remote-helloworld-mdb/.ci/test-quickstart.env new file mode 100644 index 0000000000..1904c84d47 --- /dev/null +++ b/remote-helloworld-mdb/.ci/test-quickstart.env @@ -0,0 +1,2 @@ +QS_LINUX_ONLY=true +QS_TEST_PROVISIONED_SERVER=false diff --git a/security-domain-to-domain/.ci/test-quickstart.env b/security-domain-to-domain/.ci/test-quickstart.env new file mode 100644 index 0000000000..9da53b48a0 --- /dev/null +++ b/security-domain-to-domain/.ci/test-quickstart.env @@ -0,0 +1,2 @@ +QS_MVN_COMMAND=install +QS_DEPLOYMENT_DIR=ear diff --git a/servlet-async/.ci/test-quickstart.env b/servlet-async/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/servlet-filterlistener/.ci/test-quickstart.env b/servlet-filterlistener/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/servlet-security/.ci/test-quickstart.env b/servlet-security/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/spring-resteasy/.ci/test-quickstart.env b/spring-resteasy/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tasks-jsf/.ci/test-quickstart.env b/tasks-jsf/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/temperature-converter/.ci/test-quickstart.env b/temperature-converter/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/thread-racing/.ci/test-quickstart.env b/thread-racing/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/todo-backend/.ci/after-test-quickstart.sh b/todo-backend/.ci/after-test-quickstart.sh new file mode 100755 index 0000000000..f1ddecebf0 --- /dev/null +++ b/todo-backend/.ci/after-test-quickstart.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +# todo-backend/.ci/after-test-quickstart.sh +docker stop todo-backend-db diff --git a/todo-backend/.ci/before-test-quickstart.sh b/todo-backend/.ci/before-test-quickstart.sh new file mode 100755 index 0000000000..6af85e2c47 --- /dev/null +++ b/todo-backend/.ci/before-test-quickstart.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +# todo-backend/.ci/before-test-quickstart.sh +docker run --rm -d --name todo-backend-db -e POSTGRES_USER=todos -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 postgres \ No newline at end of file diff --git a/todo-backend/.ci/test-quickstart.env b/todo-backend/.ci/test-quickstart.env new file mode 100644 index 0000000000..e214acb2d9 --- /dev/null +++ b/todo-backend/.ci/test-quickstart.env @@ -0,0 +1,2 @@ +QS_LINUX_ONLY=true +QS_EXTRA_RUN_ARGS="-DPOSTGRESQL_DATABASE=todos -DPOSTGRESQL_DATASOURCE=ToDos -DPOSTGRESQL_SERVICE_HOST=localhost -DPOSTGRESQL_SERVICE_PORT=5432 -DPOSTGRESQL_USER=todos -DPOSTGRESQL_PASSWORD=mysecretpassword" diff --git a/websocket-endpoint/.ci/test-quickstart.env b/websocket-endpoint/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2 diff --git a/websocket-hello/.ci/test-quickstart.env b/websocket-hello/.ci/test-quickstart.env new file mode 100644 index 0000000000..e69de29bb2