Skip to content

Ports VisualChat (and some other random crap from the PRs that made it in cus nice atomization, idiot) #14165

Ports VisualChat (and some other random crap from the PRs that made it in cus nice atomization, idiot)

Ports VisualChat (and some other random crap from the PRs that made it in cus nice atomization, idiot) #14165

Workflow file for this run

name: CI Suite
on:
push:
branches:
- master
pull_request:
branches:
- master
env:
toolchain: stable
target: i686-unknown-linux-gnu
jobs:
run_linters:
if: "!contains(github.event.head_commit.message, '[ci skip]')"
name: Run Linters
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Setup cache
uses: actions/cache@v3
with:
path: ~/SpacemanDMM
key: ${{ runner.os }}-spacemandmm-${{ secrets.CACHE_PURGE_KEY }}
- name: Install Tools
run: |
pip3 install setuptools
bash tools/ci/install_node.sh
bash tools/ci/install_spaceman_dmm.sh dreamchecker
tools/bootstrap/python -c ''
- name: Run Linters
run: |
bash tools/ci/check_filedirs.sh fortune13.dme
bash tools/ci/check_changelogs.sh
find . -name "*.php" -print0 | xargs -0 -n1 php -l
find . -name "*.json" -not -path "*/node_modules/*" -print0 | xargs -0 python3 ./tools/json_verifier.py
tgui/bin/tgui --lint
tgui/bin/tgui --test
bash tools/ci/check_grep.sh
tools/bootstrap/python -m dmi.test
tools/bootstrap/python -m mapmerge2.dmm_test
~/dreamchecker > ${GITHUB_WORKSPACE}/output-annotations.txt 2>&1
- name: Annotate Lints
uses: yogstation13/DreamAnnotate@v2
if: always()
with:
outputFile: output-annotations.txt
compile_all_maps:
if: "!contains(github.event.head_commit.message, '[ci skip]')"
name: Compile Maps
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Setup cache
uses: actions/cache@v3
with:
path: ~/BYOND
key: ${{ runner.os }}-byond-${{ secrets.CACHE_PURGE_KEY }}
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '^18'
- name: Compile All Maps
run: |
bash tools/ci/install_byond.sh
source $HOME/BYOND/byond/bin/byondsetup
python3 tools/ci/template_dm_generator.py
tools/build/build dm -DCIBUILDING -DCITESTING -DALL_MAPS
auxmos:
if: "!contains(github.event.head_commit.message, '[ci skip]')"
name: Build Auxmos
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
with:
repository: 'Putnam3145/auxmos'
ref: '6be702ec36d8024bfb93b4277004a9a755f5e92e'
path: 'auxmos'
- name: Cache cargo registry
uses: actions/cache@v3
with:
path: ~/.cargo/registry
key: auxmos-registry-${{ hashFiles('auxmos/Cargo.lock') }}
- name: Cache cargo index
uses: actions/cache@v3
with:
path: ~/.cargo/git
key: auxmos-index-${{ hashFiles('auxmos/Cargo.lock') }}
- name: Cache cargo build
id: auxmos-cache
uses: actions/cache@v3
with:
path: auxmos/target
key: auxmos-build-target-${{ hashFiles('auxmos/Cargo.lock') }}
- name: Install Ubuntu Deps
if: steps.auxmos-cache.outputs.cache-hit != 'true'
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt install build-essential g++-multilib libc6-i386 libstdc++6:i386
- uses: actions-rs/toolchain@v1
if: steps.auxmos-cache.outputs.cache-hit != 'true'
with:
profile: minimal
toolchain: ${{env.toolchain}}
target: ${{env.target}}
override: true
- name: Build
if: steps.auxmos-cache.outputs.cache-hit != 'true'
run: |
cargo build --manifest-path auxmos/Cargo.toml --target=${{env.target}} --release --verbose
ldd auxmos/target/${{env.target}}/release/libauxmos.so
- name: Upload libauxmos artifact
uses: actions/upload-artifact@v3
with:
name: libauxmos
path: auxmos/target/${{env.target}}/release/libauxmos.so
run_all_tests:
if: "!contains(github.event.head_commit.message, '[ci skip]')"
name: Integration Tests
runs-on: ubuntu-20.04
services:
mysql:
image: mysql:latest
env:
MYSQL_ROOT_PASSWORD: root
ports:
- 3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- uses: actions/checkout@v3
- name: Restore BYOND cache
uses: actions/cache@v3
with:
path: ~/BYOND
key: ${{ runner.os }}-byond-${{ secrets.CACHE_PURGE_KEY }}
- name: Restore Yarn cache
uses: actions/cache@v3
with:
path: tgui/.yarn/cache
key: ${{ runner.os }}-yarn-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('tgui/yarn.lock') }}
restore-keys: |
${{ runner.os }}-build-${{ secrets.CACHE_PURGE_KEY }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Setup database
run: |
sudo systemctl start mysql
mysql -u root -proot -e 'CREATE DATABASE tg_ci;'
mysql -u root -proot tg_ci < SQL/tgstation_schema.sql
mysql -u root -proot -e 'CREATE DATABASE tg_ci_prefixed;'
mysql -u root -proot tg_ci_prefixed < SQL/tgstation_schema_prefixed.sql
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '^18'
- name: Install rust-g
run: |
sudo dpkg --add-architecture i386
sudo apt update || true
sudo apt install -o APT::Immediate-Configure=false libssl1.1:i386
bash tools/ci/install_rust_g.sh
- name: Install auxmos
run: |
sudo apt update || true
bash tools/ci/install_auxmos.sh
- name: Compile and run tests
run: |
bash tools/ci/install_byond.sh
source $HOME/BYOND/byond/bin/byondsetup
tools/build/build --ci -DCIBUILDING
bash tools/ci/run_server.sh
- name: Upload screenshot tests
if: always()
uses: actions/upload-artifact@v3
with:
name: test_artifacts_${{ matrix.map }}
path: data/screenshots_new/
retention-days: 1
# compare_screenshots: # Disabled for now.
# if: "!contains(github.event.head_commit.message, '[ci skip]') && always()"
# needs: [run_all_tests]
# name: Compare Screenshot Tests
# runs-on: ubuntu-20.04
# steps:
# - uses: actions/checkout@v2
# # If we ever add more artifacts, this is going to break, but it'll be obvious.
# - name: Download screenshot tests
# uses: actions/download-artifact@v3
# with:
# path: artifacts
# - name: ls -R
# run: ls -R artifacts
# - name: Setup screenshot comparison
# run: npm i
# working-directory: tools/screenshot-test-comparison
# - name: Run screenshot comparison
# run: node tools/screenshot-test-comparison/index.js artifacts code/modules/unit_tests/screenshots artifacts/screenshot_comparisons
# # workflow_run does not give you the PR it ran on,
# # even through the thing literally named "matching pull requests".
# # However, in GraphQL, you can check if the check suite was ran
# # by a specific PR, so trusting the (user controlled) action here is okay,
# # as long as we check it later in show_screenshot_test_results
# - name: Save PR ID
# if: failure() && github.event.pull_request
# run: |
# echo ${{ github.event.pull_request.number }} > artifacts/screenshot_comparisons/pull_request_number.txt
# - name: Upload bad screenshots
# if: failure()
# uses: actions/upload-artifact@v3
# with:
# name: bad-screenshots
# path: artifacts/screenshot_comparisons
test_windows:
if: "!contains(github.event.head_commit.message, '[ci skip]')"
name: Windows Build
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '^18'
- name: Compile
run: pwsh tools/ci/build.ps1
env:
DM_EXE: "C:\\byond\\bin\\dm.exe"
- name: Create artifact
run: |
md deploy
bash tools/deploy.sh ./deploy
- name: Deploy artifact
uses: actions/upload-artifact@v3
with:
name: deploy
path: deploy