mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 01:34:01 +00:00
## About The Pull Request  This warning thing has been annoying me for a while when I scour CI logs looking for oranges/reds, let's remove this needless emission by confabulating a `.cfg` file and using that to run any necessary commands. This worked on my local repository and should pass CI without any issues on this repo as well. ## Why It's Good For The Game In case we really wanna start cracking down on failing due to warnings in CI it's helpful to ensure that the standard case is normal. Also just cleaner in general. ## Changelog Not needed.
100 lines
3.9 KiB
YAML
100 lines
3.9 KiB
YAML
# This is a reusable workflow to run integration tests on a single map.
|
|
# This is run for every single map in ci_suite.yml. You might want to edit that instead.
|
|
name: Run Integration Tests
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
map:
|
|
required: true
|
|
type: string
|
|
major:
|
|
required: false
|
|
type: string
|
|
minor:
|
|
required: false
|
|
type: string
|
|
max_required_byond_client:
|
|
required: true
|
|
type: string
|
|
|
|
jobs:
|
|
run_integration_tests:
|
|
# If `inputs.major` is specified, this will output `Run Tests (major.minor; map; max)`.
|
|
# For example, `Run Tests (515.1627; runtimestation; 515)`.
|
|
#
|
|
# Otherwise, it will output `Run Tests (map; max)`.
|
|
# For example, `Run Tests (runtimestation; 515)`.
|
|
name: Run Tests (${{ inputs.major && format('{0}.{1}; ', inputs.major, inputs.minor) || '' }}${{ inputs.map }}; ${{ inputs.max_required_byond_client }})
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 25
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Restore BYOND from Cache
|
|
uses: ./.github/actions/restore_or_install_byond
|
|
with:
|
|
major: ${{ inputs.major }}
|
|
minor: ${{ inputs.minor }}
|
|
- name: Download build outputs
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: build-artifact-${{ inputs.major || env.BYOND_MAJOR }}-${{ inputs.minor || env.BYOND_MINOR}}
|
|
path: ./
|
|
- name: Setup database
|
|
env:
|
|
MYSQL_CONFIG_FILE: tools/ci/mysql_config.cnf
|
|
run: |
|
|
sudo systemctl start mysql
|
|
mysql --defaults-extra-file=${{ env.MYSQL_CONFIG_FILE }} -e 'CREATE DATABASE tg_ci;'
|
|
mysql --defaults-extra-file=${{ env.MYSQL_CONFIG_FILE }} tg_ci < SQL/tgstation_schema.sql
|
|
mysql --defaults-extra-file=${{ env.MYSQL_CONFIG_FILE }} -e 'CREATE DATABASE tg_ci_prefixed;'
|
|
mysql --defaults-extra-file=${{ env.MYSQL_CONFIG_FILE }} tg_ci_prefixed < SQL/tgstation_schema_prefixed.sql
|
|
echo "Sucessful MySQL Database Setup"
|
|
- name: Install rust-g
|
|
run: |
|
|
bash tools/ci/install_rust_g.sh
|
|
- name: Install dreamluau
|
|
run: |
|
|
bash tools/ci/install_dreamluau.sh
|
|
- name: Run Tests
|
|
id: run_tests
|
|
run: |
|
|
source $HOME/BYOND/byond/bin/byondsetup
|
|
bash tools/ci/run_server.sh ${{ inputs.map }}
|
|
- name: Upload screenshot tests
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test_artifacts_${{ inputs.map }}_${{ inputs.major }}_${{ inputs.minor }}
|
|
path: data/screenshots_new/
|
|
retention-days: 1
|
|
- name: On test fail, write a step summary
|
|
if: always() && steps.run_tests.outcome == 'failure'
|
|
run: |
|
|
# Get a JSON array of failed unit tests
|
|
FAILED_UNIT_TESTS=$(jq 'to_entries | map(.value | select(.status == 1))' data/unit_tests.json)
|
|
|
|
FAIL_COUNT=$(echo $FAILED_UNIT_TESTS | jq 'length')
|
|
|
|
echo "# Test failures" >> $GITHUB_STEP_SUMMARY
|
|
echo "$FAIL_COUNT tests failed." >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
|
|
for i in $( seq $FAIL_COUNT ); do
|
|
CURRENT_FAIL=$(echo $FAILED_UNIT_TESTS | jq --arg i $i '.[($i | tonumber) - 1]')
|
|
|
|
TEST=$(echo $CURRENT_FAIL | jq --raw-output '.name')
|
|
|
|
echo "### $TEST" >> $GITHUB_STEP_SUMMARY
|
|
echo '```' >> $GITHUB_STEP_SUMMARY
|
|
echo $CURRENT_FAIL | jq --raw-output '.message' >> $GITHUB_STEP_SUMMARY
|
|
echo '```' >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
done
|
|
- name: Check client Compatibility
|
|
if: always() && steps.compile_tests.outcome == 'success'
|
|
uses: tgstation/byond-client-compatibility-check@v3
|
|
with:
|
|
dmb-location: tgstation.dmb
|
|
max-required-client-version: ${{inputs.max_required_byond_client}}
|