Add TSan and UBSan to sanitize options #1247
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: CI Workflow | |
on: [push, pull_request] | |
jobs: | |
linux: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
config: [debug, release] | |
platform: [x64] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Build | |
run: PLATFORM=${{ matrix.platform }} CONFIG=${{ matrix.config }} ./Bootstrap.sh | |
- name: Test | |
run: bin/${{ matrix.config }}/premake5 test --test-all | |
- name: Docs check | |
run: bin/${{ matrix.config }}/premake5 docs-check | |
- name: Upload Artifacts | |
if: matrix.config == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: premake-linux-${{ matrix.platform }} | |
path: bin/${{ matrix.config }}/ | |
macosx: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
config: [debug, release] | |
platform: [x64] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Build | |
run: PLATFORM=${{ matrix.platform }} CONFIG=${{ matrix.config }} ./Bootstrap.sh | |
- name: Test | |
run: bin/${{ matrix.config }}/premake5 test --test-all | |
- name: Docs check | |
run: bin/${{ matrix.config }}/premake5 docs-check | |
- name: Upload Artifacts | |
if: matrix.config == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: premake-macosx-${{ matrix.platform }} | |
path: bin/${{ matrix.config }}/ | |
windows: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
config: [debug, release] | |
platform: [Win32, x64] | |
msdev: [vs2022] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Build | |
shell: cmd | |
env: | |
PLATFORM: ${{ matrix.platform }} | |
CONFIG: ${{ matrix.config }} | |
run: ./Bootstrap.bat ${{ matrix.msdev }} | |
- name: Test | |
run: bin\${{ matrix.config }}\premake5 test --test-all | |
shell: cmd | |
- name: Docs check | |
run: bin\${{ matrix.config }}\premake5 docs-check | |
shell: cmd | |
- name: Upload Artifacts | |
if: matrix.config == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: premake-windows-${{ matrix.platform }} | |
path: bin\${{ matrix.config }}\ | |
mingw: | |
runs-on: windows-2022 | |
strategy: | |
matrix: | |
config: [debug, release] | |
msystem: [mingw32, mingw64] | |
include: | |
- platform: x86 | |
msystem: mingw32 | |
- platform: x64 | |
msystem: mingw64 | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: 'Setup MSYS2' | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ${{ matrix.msystem }} | |
update: true | |
install: >- | |
git | |
make | |
pacboy: >- | |
toolchain:p | |
- name: Build | |
run: PLATFORM=${{ matrix.platform }} CONFIG=${{ matrix.config }} ./Bootstrap.sh | |
- name: Test | |
run: bin/${{ matrix.config }}/premake5.exe test --test-all | |
- name: Docs check | |
run: bin/${{ matrix.config }}/premake5.exe docs-check | |
- name: Upload Artifacts | |
if: matrix.config == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: premake-${{ matrix.msystem }}-${{ matrix.platform }} | |
path: bin\${{ matrix.config }}\ | |
cosmopolitan: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
config: [debug, release] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: tritao/[email protected] | |
with: | |
version: '3.9.2' | |
- name: Build | |
run: PLATFORM=${{ matrix.platform }} CONFIG=${{ matrix.config }} ./Bootstrap.sh -cosmo | |
- name: Test | |
run: bin/${{ matrix.config }}/premake5 test --test-all | |
- name: Docs check | |
run: bin/${{ matrix.config }}/premake5 docs-check | |
- name: Upload Artifacts | |
if: matrix.config == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: premake-cosmopolitan-universal | |
path: bin/${{ matrix.config }}/premake5 | |
# This job will be required for PRs to be merged. | |
# This should depend on (via needs) all jobs that need to be successful for the PR to be merged. | |
ci: | |
runs-on: ubuntu-latest | |
needs: [linux, macosx, windows] | |
if: always() | |
steps: | |
- name: All builds ok | |
if: ${{ !(contains(needs.*.result, 'failure')) }} | |
run: exit 0 | |
- name: Some builds failed | |
if: ${{ contains(needs.*.result, 'failure') }} | |
run: exit 1 |