diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml new file mode 100644 index 00000000000..68d6b72fa4c --- /dev/null +++ b/.github/workflows/build-pr.yml @@ -0,0 +1,106 @@ +name: Build Pull Request +on: + pull_request: + +defaults: + run: + shell: bash + +jobs: + build_plugin: + name: PR - ${{ matrix.name }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - name: "windows msvc" + os: windows-latest + target: surge-xt_Standalone + cmakeConfig: -A x64 + cmakeOpt: DEBUG + runTests: false + - name: "windows msvc 32 bit" + os: windows-latest + target: surge-xt_Standalone + cmakeConfig: -A Win32 + cmakeOpt: DEBUG + runTests: false + - name: "windows clang" + os: windows-latest + target: surge-xt_Standalone + cmakeConfig: -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang + cmakeOpt: DEBUG + runTests: false + - name: "ubuntu standalone" + os: ubuntu-latest + target: surge-xt_Standalone + cmakeConfig: + cmakeOpt: DEBUG + runTests: false + - name: "macos standalone" + os: macos-latest + target: surge-xt_Standalone + cmakeConfig: -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" + cmakeOpt: DEBUG + runTests: false + + - name: "mac test runner" + os: macos-latest + target: surge-testrunner + cmakeConfig: + cmakeOpt: RELEASE + runTests: true + - name: "linux test runner" + os: ubuntu-latest + target: surge-testrunner + cmakeConfig: + cmakeOpt: RELEASE + runTests: true + - name: "windows test runner" + os: windows-latest + target: surge-testrunner + cmakeConfig: -A x64 + cmakeOpt: RELEASE + runTests: true + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Prepare for JUCE + uses: surge-synthesizer/sst-githubactions/prepare-for-juce@main + with: + os: ${{ runner.os }} + + - name: Build pull request version + run: | + cmake -S . -B ./build -DCMAKE_BUILD_TYPE=${{ matrix.cmakeOpt }} ${{ matrix.cmakeConfig }} + cmake --build ./build --config ${{ matrix.cmakeOpt }} --target ${{ matrix.target }} --parallel 3 + + - name: Run Tests + if: ${{ matrix.runTests }} + run: | + set -e + + cd build + ctest -j 4 || ctest --rerun-failed --output-on-failure + + build_plugin_lindoc: + name: PR - U18 Docker + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build in Docker + uses: surge-synthesizer/sst-githubactions/cmake-in-docker@main + with: + username: ${{ github.actor }} + token: ${{ secrets.GITHUB_TOKEN }} + cmakeArgs: -DCMAKE_BUILD_TYPE=Debug -GNinja + target: surge-xt_Standalone + diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 4c881469a2d..412fdad0715 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -29,199 +29,6 @@ jobs: displayName: Do Codequal - - job: BuildLinuxDocker - condition: eq(variables['Build.Reason'], 'PullRequest') - pool: - vmImage: 'ubuntu-20.04' - - steps: - - checkout: self - fetchDepth: 1 - # submodules: recursive # can't do submodules here b'cuz depth=1 fails with Github - - - bash: | - set -x - - export VUID=$(id -u) - export VGID=$(id -g) - - docker pull baconpaul/sst-dockerimages-ubuntu18:3 - docker create --user $VUID:$VGID --name surge-build-u18 --interactive --tty \ - --volume=`pwd`:/home/build/surge baconpaul/sst-dockerimages-ubuntu18:3 - docker start surge-build-u18 - - git submodule update --init --recursive - docker exec surge-build-u18 bash -c "(cd /home/build/surge && ./scripts/docker-build/build.sh build --target surge-xt_LV2 --parallel 6)" - docker stop surge-build-u18 - - ls build/surge_xt_products - displayName: Do Docker Build - - - - job: BuildForPR - condition: eq(variables['Build.Reason'], 'PullRequest') - variables: - defaultTargets: "surge-xt_Packaged surge-fx_Packaged" - strategy: - matrix: - macOS-unit-test: - imageName: 'macos-latest' - isMac: True - isMacUnitTest: True - isUnitTest: True - cmakeArguments: "-GNinja" - cmakeTarget: "surge-testrunner" - cmakeConfig: "Release" - windows-x86-32bit-msvc: - imageName: 'windows-2019' - isWindows: True - cmakeArguments: "-A Win32 -DCMAKE_BUILD_TYPE=Debug" - cmakeConfig: "Debug" - cmakeTarget: "surge-xt_CLAP" # just a subset for time - macOS-x86: - imageName: 'macos-latest' - isMac: True - isMacFat: True - cmakeArguments: "-GNinja -DCMAKE_BUILD_TYPE=Debug -D\"CMAKE_OSX_ARCHITECTURES=x86_64\"" - cmakeTarget: $(defaultTargets) - cmakeConfig: "Debug" - macOS-arm: - imageName: 'macos-latest' - isMac: True - isMacFat: True - cmakeArguments: "-GNinja -DCMAKE_BUILD_TYPE=Debug -D\"CMAKE_OSX_ARCHITECTURES=arm64\"" - cmakeTarget: $(defaultTargets) - cmakeConfig: "Debug" - windows-x64-msvc: - imageName: 'windows-2019' - isWindows: True - cmakeArguments: "-A x64 -DCMAKE_BUILD_TYPE=Debug" - cmakeConfig: "Debug" - cmakeTarget: $(defaultTargets) - #windows-x64-clang: - # imageName: 'windows-2022' - # isWindows: True - # cmakeArguments: "-GNinja -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=Debug" - # cmakeConfig: "Debug" - # cmakeTarget: $(defaultTargets) - windows-unittest-clang: - imageName: 'windows-2022' - isWindows: True - isWindowsUnitTest: True - isUnitTest: True - cmakeArguments: "-A x64 -DCMAKE_BUILD_TYPE=Release" - #cmakeArguments: "-GNinja -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=Release" - cmakeConfig: "Release" - cmakeTarget: "surge-testrunner" - linux-juce-python-targets: - imageName: 'ubuntu-22.04' - isLinux: True - cmakeArguments: "-GNinja -DCMAKE_BUILD_TYPE=Debug -DSURGE_BUILD_PYTHON_BINDINGS=True" - cmakeTarget: "surge-xt_Packaged surge-fx_Packaged surgepy" - cmakeConfig: "Debug" - linux-unittest: - imageName: 'ubuntu-latest' - isLinux: True - isLinuxUnitTest: True - isUnitTest: True - cmakeArguments: "-DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++-12 -DCMAKE_C_COMPILER=gcc-12" - cmakeConfig: "Release" - cmakeTarget: "surge-testrunner" - - - pool: - vmImage: $(imageName) - - steps: - - checkout: self - fetchDepth: 1 - # submodules: recursive # can't do submodules here b'cuz depth=1 fails with Github - - - bash: | - echo "BUILD REASON = " $BUILD_REASON - echo "cmakeArguments = " $(cmakeArguments) - echo "cmakeTarget = " $(cmakeTarget) - echo "cmakeConfig = " $(cmakeConfig) - echo "aptGetExtras = " $(aptGetExtras) - displayName: all - details on build - - - bash: | - # do this here, because we're using a shallow clone and it fails using `submodules: recursive` above - - # Pipelines be timin out. Try this thrice. Should be cheap if it works. - . ./scripts/misc/defensive-submodule.sh - . ./scripts/misc/defensive-submodule.sh - . ./scripts/misc/defensive-submodule.sh - displayName: all - submodule init - - - - bash: | - set -e - - echo "aptGetExtras are $(aptGetExtras)" - sudo apt-get update - - sudo apt-get install -y \ - devscripts \ - libxcb-cursor-dev \ - libxcb-keysyms1-dev \ - libxcb-util-dev \ - libxkbcommon-dev \ - libxkbcommon-x11-dev \ - ninja-build \ - xcb \ - $(aptGetExtras) - - # These are the JUCE deps - sudo apt-get install -y libgtk-3-dev - sudo apt-get install -y libwebkit2gtk-4.0 - sudo apt-get install -y libwebkit2gtk-4.0-dev - sudo apt-get install -y libcurl4-openssl-dev - sudo apt-get install -y alsa - sudo apt-get install -y alsa-tools - sudo apt-get install -y libasound2-dev - sudo apt-get install -y libjack-dev - sudo apt-get install -y libfreetype6-dev - sudo apt-get install -y libxinerama-dev - sudo apt-get install -y libxcb-xinerama0 - sudo apt-get install -y libxinerama1 - sudo apt-get install -y x11proto-xinerama-dev - sudo apt-get install -y libxrandr-dev - sudo apt-get install -y libgl1-mesa-dev - sudo apt-get install -y libxcursor-dev - sudo apt-get install -y libxcursor1 - sudo apt-get install -y libxcb-cursor-dev - sudo apt-get install -y libxcb-cursor0 - sudo apt-get install -y --fix-missing - - condition: variables.isLinux - displayName: linux - run apt-get - - - bash: | - brew install ninja - sudo xcode-select -s /Applications/Xcode_13.4.1.app - displayName: Select XCode 13.4.1 - condition: variables.isMac - - - bash: | - set -e - cmake -Bbuild $(cmakeArguments) - displayName: all - configure with cmake - - - bash: | - set -e - cmake --build build --config $(cmakeConfig) --target $(cmakeTarget) --parallel 8 - displayName: all - build with cmake - - - bash: | - set -e - - cd build - ctest -j 4 || ctest --rerun-failed --output-on-failure - - condition: variables.isUnitTest - displayName: all - run unit tests - - job: NotifyReleases dependsOn: BuildCodeQuality condition: and(succeeded(), not(eq(variables['Build.Reason'], 'PullRequest')))