Merge pull request #96 from coldbox-modules/dependabot/npm_and_yarn/c… #16
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: relax CI | |
# Only on Development we build snapshots | |
on: | |
push: | |
branches: | |
- development | |
- master | |
env: | |
MODULE_ID: relax | |
jobs: | |
############################################# | |
# Tests First baby! We fail, no build :( | |
############################################# | |
tests: | |
name: Tests | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
cfengine: [ "lucee@5", "adobe@2018", "adobe@2021" ] | |
steps: | |
- name: Checkout Repository | |
uses: actions/[email protected] | |
- name: Setup Java | |
uses: actions/[email protected] | |
with: | |
distribution: "adopt" | |
java-version: "11" | |
- name: Cache CommandBox Dependencies | |
uses: actions/cache@v3 | |
if: ${{ true }} | |
with: | |
path: ~/.CommandBox/artifacts | |
key: ${{ runner.OS }}-commandbox-cache-${{ hashFiles( 'box.json' ) }}-${{ hashFiles( 'test-harness/box.json' ) }} | |
restore-keys: | | |
${{ runner.OS }}-commandbox-cache-${{ hashFiles( 'box.json' ) }}-${{ hashFiles( 'test-harness/box.json' ) }} | |
- name: Setup CommandBox | |
uses: elpete/[email protected] | |
- name: Install Test Harness Dependencies | |
working-directory: ./test-harness | |
run: | | |
box install | |
- name: Start ${{ matrix.cfengine }} Server | |
working-directory: ./test-harness | |
run: | | |
echo "matrix.cfengine=${{ matrix.cfengine }}" > ./.env | |
box server start serverConfigFile="server-${{ matrix.cfengine }}.json" --noSaveSettings --debug | |
# Install Adobe 2021 cfpm modules | |
if [[ "${{ matrix.cfengine }}" == "adobe@2021" ]] ; then | |
box run-script install:2021 | |
fi | |
curl http://127.0.0.1:60299 | |
- name: Run Tests | |
working-directory: ./test-harness | |
run: | | |
mkdir tests/results | |
box package set testbox.runner="http://localhost:60299/tests/runner.cfm" | |
box testbox run --verbose outputFile=tests/results/test-results outputFormats=json,antjunit | |
- name: Publish Test Results | |
uses: EnricoMi/publish-unit-test-result-action@v2 | |
if: always() | |
with: | |
junit_files: test-harness/tests/results/**/*.xml | |
check_name: "${{ matrix.cfengine }} Test Results" | |
- name: Upload Test Results Artifacts | |
if: always() | |
uses: actions/[email protected] | |
with: | |
name: test-results-${{ matrix.cfengine }} | |
path: | | |
test-harness/tests/results/**/* | |
- name: Slack Notification | |
if: failure() | |
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: '${{ env.MODULE_ID }} tests failed :cry:' | |
SLACK_TITLE: ${{ env.MODULE_ID }} Tests For ${{ matrix.cfengine }} failed | |
SLACK_USERNAME: CI | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} | |
- name: Failure Debugging Info | |
if: ${{ failure() }} | |
working-directory: ./test-harness | |
run: | | |
box server log serverConfigFile="server-${{ matrix.cfengine }}.json" | |
- name: Upload Debugging Info To Artifacts | |
if: ${{ failure() }} | |
uses: actions/[email protected] | |
with: | |
name: Failure Debugging Info - ${{ matrix.cfengine }} | |
path: | | |
test-harness/.engine/**/logs/* | |
test-harness/.engine/**/WEB-INF/cfusion/logs/* | |
############################################# | |
# Build Module | |
############################################# | |
build: | |
name: Build & Publish | |
needs: tests | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout Repository | |
uses: actions/[email protected] | |
with: | |
fetch-depth: 0 | |
- name: Setup Java | |
uses: actions/[email protected] | |
with: | |
distribution: "adopt" | |
java-version: "11" | |
- name: Cache CommandBox Dependencies | |
uses: actions/cache@v3 | |
if: ${{ true }} | |
with: | |
path: ~/.CommandBox/artifacts | |
key: ${{ runner.OS }}-commandbox-cache-${{ hashFiles( 'box.json' ) }}-${{ hashFiles( 'test-harness/box.json' ) }} | |
restore-keys: | | |
${{ runner.OS }}-commandbox-cache-${{ hashFiles( 'box.json' ) }}-${{ hashFiles( 'test-harness/box.json' ) }} | |
- name: Setup CommandBox | |
uses: elpete/[email protected] | |
with: | |
forgeboxAPIKey: ${{ secrets.FORGEBOX_TOKEN }} | |
- name: Setup Environment Variables For Build Process | |
id: current_version | |
run: | | |
echo "VERSION=`cat box.json | jq '.version' -r`" >> $GITHUB_ENV | |
box package set [email protected]@[email protected]@ | |
# master or snapshot | |
echo "Github Ref is $GITHUB_REF" | |
echo "BRANCH=master" >> $GITHUB_ENV | |
if [ $GITHUB_REF == 'refs/heads/development' ] | |
then | |
echo "BRANCH=development" >> $GITHUB_ENV | |
fi | |
- name: Build ${{ env.MODULE_ID }} | |
run: | | |
box install commandbox-docbox | |
box task run taskfile=build/Build target=run :version=${{ env.VERSION }} :projectName=${{ env.MODULE_ID }} :buildID=${{ github.run_number }} :branch=${{ env.BRANCH }} | |
- name: Upload Build Artifacts | |
if: success() | |
uses: actions/[email protected] | |
with: | |
name: ${{ env.MODULE_ID }} | |
path: | | |
.artifacts/**/* | |
- name: Upload Binaries to S3 | |
uses: jakejarvis/s3-sync-action@master | |
with: | |
args: --acl public-read | |
env: | |
AWS_S3_BUCKET: "downloads.ortussolutions.com" | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_ACCESS_SECRET }} | |
SOURCE_DIR: ".artifacts/${{ env.MODULE_ID }}" | |
DEST_DIR: "ortussolutions/coldbox-modules/${{ env.MODULE_ID }}" | |
- name: Upload API Docs to S3 | |
uses: jakejarvis/s3-sync-action@master | |
with: | |
args: --acl public-read | |
env: | |
AWS_S3_BUCKET: "apidocs.ortussolutions.com" | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_ACCESS_SECRET }} | |
SOURCE_DIR: ".tmp/apidocs" | |
DEST_DIR: "coldbox-modules/${{ env.MODULE_ID }}/${{ env.VERSION }}" | |
- name: Publish To ForgeBox | |
run: | | |
cd .tmp/${{ env.MODULE_ID }} | |
cat box.json | |
box forgebox publish | |
- name: Inform Slack | |
if: ${{ always() }} | |
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: '${{ env.MODULE_ID }} Built with ${{ job.status }}!' | |
SLACK_TITLE: "${{ env.MODULE_ID }} Build" | |
SLACK_USERNAME: CI | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} |