From c21a50fd984abf738981bdeb4ce0fbbdfd13eedf Mon Sep 17 00:00:00 2001 From: duckdoom5 Date: Wed, 22 Jan 2025 22:41:05 +0100 Subject: [PATCH] Update CI to build all configurations --- .github/workflows/main.yml | 59 ++++++++++++++++++++++---------------- tests/emscripten/test.sh | 8 ++++++ tests/quickjs/test.sh | 13 +++++++++ 3 files changed, 56 insertions(+), 24 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0693eb0d8..d4ecdf1f3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,24 +2,34 @@ name: CI on: [push, pull_request] +# Cancel any previous workflows if the pull request was updated +concurrency: + group: ${{ github.workflow }}-${{ github.ref || github.run_id }} + cancel-in-progress: true + jobs: build: if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository strategy: fail-fast: false matrix: - config: - - { os: ubuntu-22.04, platform: x64, cxx: g++-11, cc: gcc-11 } - - { os: macos-12, platform: x64, cxx: clang++, cc: clang } - - { os: windows-2022, platform: x64, vs: "Program Files/Microsoft Visual Studio/2022" } + os: [ubuntu-22.04, macos-12, windows-2022] + platform: [x64] + build-cfg: [DebugOpt, Release] + #build-cfg: [Debug, DebugOpt, Release] # our local copy of clang isn't build for debug on linux/macos currently + include: + - os: windows-2022 + platform: x64 + build-cfg: Debug - runs-on: ${{ matrix.config.os }} + runs-on: ${{ matrix.os }} env: - CC: ${{ matrix.config.cc }} - CXX: ${{ matrix.config.cxx }} - VS_VERSION: ${{ matrix.config.vs }} - PLATFORM: ${{ matrix.config.platform }} + CC: ${{ startsWith(matrix.os, 'ubuntu') && 'gcc-11' || 'clang' }} + CXX: ${{ startsWith(matrix.os, 'ubuntu') && 'g++-11' || 'clang++' }} + VS_VERSION: "Program Files/Microsoft Visual Studio/2022" + PLATFORM: ${{ matrix.platform }} + BUILD_CONFIGURATION: ${{ matrix.build-cfg }} DOTNET_NOLOGO: true DOTNET_CLI_TELEMETRY_OPTOUT: true EMSCRIPTEN_VERSION: 3.1.65 @@ -41,7 +51,7 @@ jobs: cmake-version: '3.30.x' - name: Install nbgv - if: startsWith(matrix.config.os, 'macos') + if: startsWith(matrix.os, 'macos') run: | dotnet tool install -g nbgv @@ -49,46 +59,46 @@ jobs: run: nbgv cloud --all-vars - name: Environment - if: matrix.config.vs + if: startsWith(matrix.os, 'windows') shell: bash run: echo "/c/$VS_VERSION/Enterprise/MSBuild/Current/Bin" >> $GITHUB_PATH - name: Setup shell: bash run: | - build/build.sh generate -platform $PLATFORM - build/build.sh download_llvm -platform $PLATFORM + build/build.sh generate -platform $PLATFORM -configuration $BUILD_CONFIGURATION + build/build.sh download_llvm -platform $PLATFORM -configuration $BUILD_CONFIGURATION - name: Restore shell: bash - run: build/build.sh restore -platform $PLATFORM + run: build/build.sh restore -platform $PLATFORM -configuration $BUILD_CONFIGURATION - name: Build shell: bash - run: build/build.sh -platform $PLATFORM -build_only + run: build/build.sh -platform $PLATFORM -build_only -configuration $BUILD_CONFIGURATION - name: Test (.NET) shell: bash - run: build/test.sh -platform $PLATFORM + run: build/test.sh -platform $PLATFORM -configuration $BUILD_CONFIGURATION - name: Build (QuickJS runtime) + if: runner.os != 'Windows' shell: bash run: tests/quickjs/bootstrap.sh - if: runner.os != 'Windows' - name: Test (QuickJS) - shell: bash - run: tests/quickjs/test.sh if: runner.os != 'Windows' + shell: bash + run: tests/quickjs/test.sh -dotnet_configuration $BUILD_CONFIGURATION - name: Test (Emscripten) - shell: bash - run: tests/emscripten/test.sh if: runner.os != 'Windows' + shell: bash + run: tests/emscripten/test.sh -dotnet_configuration $BUILD_CONFIGURATION - name: Pack shell: bash - run: build/build.sh prepack -platform $PLATFORM + run: build/build.sh prepack -platform $PLATFORM -configuration $BUILD_CONFIGURATION - uses: actions/upload-artifact@v3 with: @@ -107,6 +117,7 @@ jobs: env: DOTNET_NOLOGO: true DOTNET_CLI_TELEMETRY_OPTOUT: true + BUILD_CONFIGURATION: Release steps: - uses: actions/checkout@v4 @@ -122,11 +133,11 @@ jobs: - name: Setup shell: bash - run: build/build.sh generate_config + run: build/build.sh generate_config -configuration $BUILD_CONFIGURATION - name: Create package shell: bash - run: build/build.sh pack + run: build/build.sh pack -configuration $BUILD_CONFIGURATION - name: Upload package uses: actions/upload-artifact@v3 diff --git a/tests/emscripten/test.sh b/tests/emscripten/test.sh index fd1e687ad..d57a13df4 100755 --- a/tests/emscripten/test.sh +++ b/tests/emscripten/test.sh @@ -13,6 +13,14 @@ for arg in "$@"; do jsinterp="${arg#*=}" shift ;; + -configuration) + configuration=$2 + shift + ;; + -dotnet_configuration) + dotnet_configuration=$2 + shift + ;; esac done diff --git a/tests/quickjs/test.sh b/tests/quickjs/test.sh index 2891d0c4e..102c72696 100755 --- a/tests/quickjs/test.sh +++ b/tests/quickjs/test.sh @@ -6,6 +6,19 @@ dotnet_configuration=Release configuration=debug jsinterp="$dir/runtime/build/qjs" +for arg in "$@"; do + case $arg in + -configuration) + configuration=$2 + shift + ;; + -dotnet_configuration) + dotnet_configuration=$2 + shift + ;; + esac +done + cd $dir if [ "$CI" = "true" ]; then