Skip to content

ColdBox Test Suites

ColdBox Test Suites #5

Workflow file for this run

# This is a reusable workflow for executing the full ColdBox Test Suites
name: ColdBox Test Suites
# We are a reusable Workflow only
on:
workflow_call:
secrets:
SLACK_WEBHOOK_URL:
required: false
# Allow manual triggering
workflow_dispatch:
jobs:
tests:
name: Test Suites
runs-on: ubuntu-24.04
timeout-minutes: ${{ matrix.timeoutMinutes }}
env:
DB_USER: root
DB_PASSWORD: root
continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: false
matrix:
commandbox_version: [ "6.2.0" ]
cfengine: [ "boxlang-cfml@1", "lucee@5", "lucee@6", "adobe@2023", "adobe@2025" ]
jdkVersion: [ "21" ]
experimental: [ false ]
timeoutMinutes: [ 8 ]
include:
- commandbox_version: "6.2.0"
cfengine: "boxlang-cfml@be"
jdkVersion: "21"
experimental: true
timeoutMinutes: 8
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Database and Fixtures
run: |
sudo systemctl start mysql.service
mysql -u${{ env.DB_USER }} -p${{ env.DB_PASSWORD }} -e 'CREATE DATABASE coolblog;'
mysql -u${{ env.DB_USER }} -p${{ env.DB_PASSWORD }} < tests/resources/coolblog.sql
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: ${{ matrix.jdkVersion }}
- name: Setup CommandBox CLI
uses: Ortus-Solutions/setup-commandbox@v2.0.1
with:
version: ${{ matrix.commandbox_version }}
install: commandbox-boxlang
- name: Setup .env For Runner
run: |
touch .env
printf "DB_HOST=127.0.0.1\n" >> .env
printf "DB_DATABASE=coolblog\n" >> .env
printf "DB_DRIVER=MySQL\n" >> .env
printf "DB_USER=${{ env.DB_USER }}\n" >> .env
printf "DB_PASSWORD=${{ env.DB_PASSWORD }}\n" >> .env
printf "DB_CLASS=com.mysql.cj.jdbc.Driver\n" >> .env
printf "DB_BUNDLEVERSION=8.0.19\n" >> .env
printf "DB_BUNDLENAME=com.mysql.cj\n" >> .env
- name: Install Dependencies
run: |
# Core dependencies
box install --verbose
- name: Start ${{ matrix.cfengine }} Server
run: |
box server start serverConfigFile="server-${{ matrix.cfengine }}.json" --noSaveSettings --debug
# Test the harness
curl http://127.0.0.1:8599/test-harness
- name: Run Tests
run: |
box run-script tests
- name: Set cfengine version env
run: echo "CFENGINE_VERSION=$(box echo ${serverInfo.engineName@coldbox-${{ matrix.cfengine }}}@${serverInfo.engineVersion@coldbox-${{ matrix.cfengine }}})" >> $GITHUB_ENV
- name: Upload Test Results Artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: Test Results Engine ${{ matrix.cfengine }} JDK ${{ matrix.jdkVersion }}
path: |
tests/results/**/*
- name: Slack Notification
# Only on failures and NOT in pull requests
if: ${{ failure() && !startsWith( 'pull_request', github.event_name ) }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: coding
SLACK_COLOR: ${{ job.status }} # or a specific color like 'green' or '#ff00ff'
SLACK_ICON_EMOJI: ":bell:"
SLACK_MESSAGE: 'ColdBox tests failed :cry:, check them out here: https://github.com/coldbox/coldbox-platform/actions'
SLACK_TITLE: ColdBox Tests For ${{ matrix.cfengine }} failed
SLACK_USERNAME: CI
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Output Failure Debugging Info
if: ${{ failure() }}
run: |
box version
box server info serverConfigFile="server-${{ matrix.cfengine }}.json" --json
box server log serverConfigFile="server-${{ matrix.cfengine }}.json"
- name: Upload Debugging Info To Artifacts
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: Failure Debugging Info - ${{ matrix.cfengine }} - ${{ matrix.jdkVersion }}
path: |
.engine/**/logs/*
.engine/**/WEB-INF/cfusion/logs/*
# Publish the test results
publish-test-results:
name: Publish Test Results
needs: tests
runs-on: ubuntu-latest
if: always()
steps:
- name: Download Test Results Artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
files: artifacts/**/*.xml