-
-
Notifications
You must be signed in to change notification settings - Fork 0
120 lines (107 loc) · 3.58 KB
/
tests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
name: Test Suites
# We are a reusable Workflow only
on:
workflow_call:
secrets:
SLACK_WEBHOOK_URL:
required: false
env:
MODULE_ID: ${{ github.event.repository.name }}
jobs:
tests:
name: Tests ${{ github.event.repository.name }}
runs-on: ${{ matrix.os }}
env:
DB_USER: root
DB_PASSWORD: root
continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: false
matrix:
os: [ "ubuntu-latest", "windows-latest" ]
jdkVersion: [ "21" ]
experimental: [false]
#include:
#- jdkVersion: "21"
# os: "windows-latest"
# experimental: true
# Disabled for now until we can figure out the gradle matrix
#- jdkVersion: "21"
# os: "ubuntu-latest"
# experimental: true
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: ${{ matrix.jdkVersion }}
- name: Setup Gradle
uses: gradle/gradle-build-action@v3
with:
gradle-version: "8.7"
# - name: Setup Database and Fixtures
# run: |
# sudo systemctl start mysql.service
# mysql -u${{ env.DB_USER }} -p${{ env.DB_PASSWORD }} -e 'CREATE DATABASE mementifier;'
# mysql -u${{ env.DB_USER }} -p${{ env.DB_PASSWORD }} < test-harness/tests/resources/coolblog.sql
#- name: Setup CommandBox CLI
# uses: Ortus-Solutions/setup-commandbox@v2.0.1
# Not Needed in this module
#- name: Setup Environment For Testing Process
# run: |
# # Setup .env
# touch .env
# # ENV
# printf "DB_HOST=localhost\n" >> .env
# printf "DB_DATABASE=mydatabase\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: Test Module
run: |
gradle downloadBoxLang
gradle test --stacktrace --console=plain
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: tests-${{ matrix.os }}-${{ matrix.jdkVersion }}
path: |
**/build/reports/tests/**
**/build/test-results/**
- name: Inform Slack
if: ${{ failure() && github.ref == 'refs/heads/development' }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: boxlang
SLACK_COLOR: ${{ job.status }} # or a specific color like 'green' or '#ff00ff'
SLACK_ICON_EMOJI: ":bell:"
SLACK_MESSAGE: "${{ github.repository }} Tests FAILED! You broke the build! :("
SLACK_TITLE: "${{ github.repository }} Build Failure"
SLACK_USERNAME: CI
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
publish-test-results:
name: Publish Test Results
runs-on: ubuntu-latest
needs: tests
if: always()
permissions:
checks: write
pull-requests: write
contents: read
issues: read
steps:
- name: Download 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