Enables the @lute libraries in spawned VMs by implementing a new LuteVfs
#2425
Workflow file for this run
This file contains hidden or 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 | |
| on: | |
| push: | |
| branches: ["primary"] | |
| pull_request: | |
| branches: ["primary"] | |
| # CI on the "primary" branch opts out of concurrency grouping by using the run's | |
| # unique run_id. | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/primary' && github.run_id || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| run-lutecli-luau-tests: | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 15 | |
| strategy: | |
| matrix: | |
| include: | |
| - os: windows-latest | |
| options: --c-compiler cl.exe --cxx-compiler cl.exe | |
| - os: ubuntu-latest | |
| options: --c-compiler gcc --cxx-compiler g++ --enable-sanitizers | |
| - os: ubuntu-latest | |
| options: --c-compiler clang --cxx-compiler clang++ --enable-sanitizers | |
| - os: macos-latest | |
| options: --enable-sanitizers | |
| - os: ubuntu-latest | |
| options: --c-compiler gcc --cxx-compiler g++ --enable-sanitizers | |
| use-bootstrap: true | |
| - os: ubuntu-latest | |
| options: --c-compiler clang --cxx-compiler clang++ --enable-sanitizers | |
| use-bootstrap: true | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup and Build Lute | |
| id: build_lute | |
| uses: ./.github/actions/setup-and-build | |
| with: | |
| target: Lute.CLI | |
| config: debug | |
| options: ${{ matrix.options }} | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| use-bootstrap: ${{ matrix.use-bootstrap || 'false' }} | |
| - name: Use CI .luaurc file | |
| run: rm .luaurc && mv .luaurc.ci .luaurc | |
| - name: Run Luau Tests (POSIX) | |
| if: runner.os != 'Windows' | |
| shell: bash | |
| run: find tests -name "*.test.luau" | xargs -I {} "${{ steps.build_lute.outputs.exe_path }}" run {} | |
| - name: Run Luau Tests (Windows) | |
| if: runner.os == 'Windows' | |
| shell: cmd | |
| run: | | |
| set _errorFlag=0 | |
| for /r tests %%f in (*.test.luau) do "${{ steps.build_lute.outputs.exe_path }}" run "%%f" || (set _errorFlag=1) | |
| if %_errorFlag% neq 0 exit /b 1 | |
| run-lute-cxx-unittests: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| include: | |
| - os: windows-latest | |
| options: --c-compiler cl.exe --cxx-compiler cl.exe | |
| - os: ubuntu-latest | |
| options: --c-compiler gcc --cxx-compiler g++ --enable-sanitizers | |
| - os: ubuntu-latest | |
| options: --c-compiler clang --cxx-compiler clang++ --enable-sanitizers | |
| - os: macos-latest | |
| options: --enable-sanitizers | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup and Build C++ Unit Tests | |
| id: build_tests | |
| uses: ./.github/actions/setup-and-build | |
| with: | |
| target: Lute.Test | |
| config: debug | |
| options: ${{ matrix.options }} | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Remove .luaurc file | |
| run: rm .luaurc | |
| - name: Run C++ Tests | |
| run: ${{ steps.build_tests.outputs.exe_path }} | |
| check-format: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install tools | |
| uses: Roblox/setup-foreman@v3 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| allow-external-github-orgs: true | |
| - name: Run StyLua | |
| run: stylua --check . | |
| build-docs-site: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| - name: Install tools | |
| uses: Roblox/setup-foreman@v3 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| allow-external-github-orgs: true | |
| - name: Install dependencies | |
| run: npm install | |
| working-directory: docs | |
| - name: Build docs site | |
| run: npm run build | |
| working-directory: docs | |
| - name: Upload docs artifact | |
| id: deployment | |
| uses: actions/upload-pages-artifact@v3 | |
| with: | |
| path: docs/.vitepress/dist/ | |
| lute-lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup and Build Lute | |
| id: build_lute | |
| uses: ./.github/actions/setup-and-build | |
| with: | |
| target: Lute.CLI | |
| config: debug | |
| options: ${{ matrix.options }} | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| use-bootstrap: true | |
| - name: Run Lute Lint | |
| run: ${{ steps.build_lute.outputs.exe_path }} lint -v . | |
| aggregator: | |
| name: Gated Commits | |
| runs-on: ubuntu-latest | |
| needs: [run-lutecli-luau-tests, run-lute-cxx-unittests, check-format, build-docs-site, lute-lint] | |
| if: ${{ always() }} | |
| steps: | |
| - name: Aggregator | |
| run: | | |
| if [ "${{ needs.run-lutecli-luau-tests.result }}" == "success" ] && [ "${{ needs.run-lute-cxx-unittests.result }}" == "success" ] && [ "${{ needs.check-format.result }}" == "success" ] && [ "${{ needs.build-docs-site.result }}" == "success" ] && [ "${{ needs.lute-lint.result }}" == "success" ]; then | |
| echo "All jobs succeeded" | |
| else | |
| echo "One or more jobs failed" | |
| exit 1 | |
| fi |