From 5ede0fb735b5968016e6a956d0ad4f4c110c55b3 Mon Sep 17 00:00:00 2001 From: zsliu98 Date: Fri, 15 Sep 2023 22:30:47 -0400 Subject: [PATCH] ci: adjust sequence of steps --- .github/workflows/cmake_full_test.yml | 4 + .github/workflows/cmake_quick.yml | 215 -------------------------- .github/workflows/cmake_release.yml | 13 +- 3 files changed, 7 insertions(+), 225 deletions(-) delete mode 100644 .github/workflows/cmake_quick.yml diff --git a/.github/workflows/cmake_full_test.yml b/.github/workflows/cmake_full_test.yml index b5e0799..9caf35f 100644 --- a/.github/workflows/cmake_full_test.yml +++ b/.github/workflows/cmake_full_test.yml @@ -108,6 +108,10 @@ jobs: with: boost_version: 1.80.0 + - name: Configure + shell: bash + run: cmake -B ${{ env.BUILD_DIR }} -G Ninja -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=${{ matrix.ccache }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ matrix.ccache }} -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" . + - name: Setup Environment Variables shell: bash run: | diff --git a/.github/workflows/cmake_quick.yml b/.github/workflows/cmake_quick.yml deleted file mode 100644 index 459a8f9..0000000 --- a/.github/workflows/cmake_quick.yml +++ /dev/null @@ -1,215 +0,0 @@ -name: Quick Release - -permissions: - contents: write - -on: - workflow_dispatch: # lets you run a build from the UI - -# When pushing new commits, cancel any running builds on that branch -concurrency: - group: ${{ github.ref }} - cancel-in-progress: true - -env: - PROJECT_NAME: "ZLInflator" - PRODUCT_NAME: "ZL Inflator" - BUILD_TYPE: Release - BUILD_DIR: Builds - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DISPLAY: :0 # linux pluginval needs this - CMAKE_BUILD_PARALLEL_LEVEL: 3 # Use up to 3 cpus to build juceaide, etc - HOMEBREW_NO_INSTALL_CLEANUP: 1 - -# jobs are run in paralell on different machines -# all steps run in series -jobs: - build_and_test: - name: ${{ matrix.name }} - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false # show all errors for each platform (vs. cancel jobs on error) - matrix: - include: - - name: Linux - os: ubuntu-22.04 - pluginval-binary: ./pluginval - ccache: ccache - - name: macOS - os: macos-12 - pluginval-binary: pluginval.app/Contents/MacOS/pluginval - ccache: ccache - - name: Windows - os: windows-latest - pluginval-binary: ./pluginval.exe - ccache: sccache - - steps: - - # This is just easier than debugging different compilers on different platforms - - name: Set up Clang - if: ${{ matrix.name != 'macOS' }} - uses: egor-tensin/setup-clang@v1 - - # This also starts up our "fake" display Xvfb, needed for pluginval - - name: Install JUCE's Linux Deps - if: runner.os == 'Linux' - # Thanks to McMartin & co https://forum.juce.com/t/list-of-juce-dependencies-under-linux/15121/44 - run: | - sudo apt-get update && sudo apt install libasound2-dev libx11-dev libxinerama-dev libxext-dev libfreetype6-dev libwebkit2gtk-4.0-dev libglu1-mesa-dev xvfb ninja-build - sudo /usr/bin/Xvfb $DISPLAY & - - - name: Cache IPP (Windows) - if: runner.os == 'Windows' - id: cache-ipp - uses: actions/cache@v3 - with: - key: ipp-v1 - path: C:\Program Files (x86)\Intel\oneAPI\ipp - - - name: Install IPP (Windows) - if: (runner.os == 'Windows') && (steps.cache-ipp.outputs.cache-hit != 'true') - shell: bash - run: | - curl --output oneapi.exe https://registrationcenter-download.intel.com/akdlm/irc_nas/19078/w_BaseKit_p_2023.0.0.25940_offline.exe - ./oneapi.exe -s -x -f oneapi - ./oneapi/bootstrapper.exe -s -c --action install --components=intel.oneapi.win.ipp.devel --eula=accept -p=NEED_VS2022_INTEGRATION=1 --log-dir=. - - - name: Save IPP cache even on job fail - if: runner.os == 'Windows' && (steps.cache-ipp.outputs.cache-hit != 'true') - uses: actions/cache/save@v3 - with: - path: C:\Program Files (x86)\Intel\oneAPI\ipp - key: ipp-v1 - - # This lets us use sscache on Windows - # We need to install ccache here for Windows to grab the right version - - name: Install Ninja (Windows) - if: runner.os == 'Windows' - shell: bash - run: choco install ninja ccache - - - name: Install macOS Deps - if: ${{ matrix.name == 'macOS' }} - run: brew install ninja osxutils - - - name: Checkout code - uses: actions/checkout@v4 - with: - submodules: true # Get JUCE populated - - - name: Get lastest tag - uses: "WyriHaximus/github-action-get-previous-tag@v1" - id: get-latest-tag - with: - fallback: 0.0.0 - - - name: Setup Environment Variables - shell: bash - run: | - echo "${{steps.get-latest-tag.outputs.tag}}" > VERSION - VERSION=$(cat VERSION) - echo "ARTIFACTS_PATH=${{ env.BUILD_DIR }}/${{ env.PROJECT_NAME }}_artefacts/${{ env.BUILD_TYPE }}" >> $GITHUB_ENV - echo "VST3_PATH=${{ env.PROJECT_NAME }}_artefacts/${{ env.BUILD_TYPE }}/VST3/${{ env.PRODUCT_NAME }}.vst3" >> $GITHUB_ENV - echo "AU_PATH=${{ env.PROJECT_NAME }}_artefacts/${{ env.BUILD_TYPE }}/AU/${{ env.PRODUCT_NAME }}.component" >> $GITHUB_ENV - echo "AUV3_PATH=${{ env.PROJECT_NAME }}_artefacts/${{ env.BUILD_TYPE }}/AUv3/${{ env.PRODUCT_NAME }}.appex" >> $GITHUB_ENV - echo "INSTALLER_NAME=${{ env.PROJECT_NAME }}-$VERSION" >> $GITHUB_ENV - - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: v3-${{ matrix.os }}-${{ matrix.type }} - variant: ${{ matrix.ccache }} - - - name: Import Certificates (macOS) - uses: apple-actions/import-codesign-certs@v2 - if: ${{ matrix.name == 'macOS' }} - with: - p12-file-base64: ${{ secrets.DEV_ID_APP_CERT }} - p12-password: ${{ secrets.DEV_ID_APP_PASSWORD }} - - - name: Configure - shell: bash - run: cmake -B ${{ env.BUILD_DIR }} -G Ninja -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=${{ matrix.ccache }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ matrix.ccache }} -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" . - - - name: Build - shell: bash - run: cmake --build ${{ env.BUILD_DIR }} --config ${{ env.BUILD_TYPE }} --parallel 4 - - - name: Codesign (macOS) - working-directory: ${{ env.BUILD_DIR }} - if: ${{ matrix.name == 'macOS' }} - run: | - # Each plugin must be code signed - codesign --force -s "${{ secrets.DEV_ID_APPLICATION}}" -v "${{ env.VST3_PATH }}" --deep --strict --options=runtime --timestamp - codesign --force -s "${{ secrets.DEV_ID_APPLICATION}}" -v "${{ env.AU_PATH }}" --deep --strict --options=runtime --timestamp - - - name: Create DMG (macOS) - if: ${{ matrix.name == 'macOS' }} - run: | - npm install -g appdmg - mkdir -p packaging/dmg - - # Create directories for the dmg symlinks - sudo mkdir -m 755 -p /Library/Audio/Plug-Ins/Components && sudo mkdir -m 755 -p /Library/Audio/Plug-Ins/VST3 - ln -s /Library/Audio/Plug-Ins/Components "packaging/dmg/Your Mac's Component folder" - ln -s /Library/Audio/Plug-Ins/VST3 "packaging/dmg/Your Mac's VST3 folder" - mv "${{ env.ARTIFACTS_PATH }}/VST3/${{ env.PRODUCT_NAME }}.vst3" packaging/dmg - mv "${{ env.ARTIFACTS_PATH }}/AU/${{ env.PRODUCT_NAME }}.component" packaging/dmg - - # Run appdmg to create the .dmg - cd packaging && appdmg dmg.json "${{ env.INSTALLER_NAME}}.dmg" - - - name: Zip - if: ${{ matrix.name == 'Linux' }} - working-directory: ${{ env.ARTIFACTS_PATH }} - run: 7z a -tzip ${{ env.INSTALLER_NAME }}.zip . - - - name: Generate Installer (Windows) - if: ${{ matrix.name == 'Windows' }} - shell: bash - run: | - iscc "packaging\installer.iss" - mv "packaging/Output/${{ env.INSTALLER_NAME }}.exe" "${{ env.ARTIFACTS_PATH }}/" - - - name: Upload Exe (Windows) - if: ${{ matrix.name == 'Windows' }} - uses: actions/upload-artifact@v3 - with: - name: ${{ env.INSTALLER_NAME }}.exe - path: '${{ env.ARTIFACTS_PATH }}/${{ env.INSTALLER_NAME }}.exe' - - - name: Upload Zip (Linux) - if: ${{ matrix.name == 'Linux' }} - uses: actions/upload-artifact@v3 - with: - name: ${{ env.INSTALLER_NAME }}.zip - path: '${{ env.ARTIFACTS_PATH }}/${{ env.INSTALLER_NAME }}.zip' - - - name: Upload DMG (MacOS) - if: ${{ matrix.name == 'macOS' }} - uses: actions/upload-artifact@v3 - with: - name: ${{ env.INSTALLER_NAME }}.dmg - path: packaging/${{ env.INSTALLER_NAME }}.dmg - - - release: - if: contains(github.ref, 'tags/') - runs-on: ubuntu-latest - needs: build_and_test - - steps: - - name: Get Artifacts - uses: actions/download-artifact@v3 - - - name: Create Release - uses: softprops/action-gh-release@v1 - with: - prerelease: true - # download-artifact puts these files in their own dirs... - # Using globs sidesteps having to pass the version around - files: | - */*.exe - */*.zip - */*.dmg diff --git a/.github/workflows/cmake_release.yml b/.github/workflows/cmake_release.yml index 4c815a4..c0985c8 100644 --- a/.github/workflows/cmake_release.yml +++ b/.github/workflows/cmake_release.yml @@ -98,16 +98,13 @@ jobs: with: submodules: true # Get JUCE populated - - name: Get lastest tag - uses: "WyriHaximus/github-action-get-previous-tag@v1" - id: get-latest-tag - with: - fallback: 0.0.0 + - name: Configure + shell: bash + run: cmake -B ${{ env.BUILD_DIR }} -G Ninja -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=${{ matrix.ccache }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ matrix.ccache }} -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" . - name: Setup Environment Variables shell: bash run: | - echo "${{steps.get-latest-tag.outputs.tag}}" > VERSION VERSION=$(cat VERSION) echo "ARTIFACTS_PATH=${{ env.BUILD_DIR }}/${{ env.PROJECT_NAME }}_artefacts/${{ env.BUILD_TYPE }}" >> $GITHUB_ENV echo "VST3_PATH=${{ env.PROJECT_NAME }}_artefacts/${{ env.BUILD_TYPE }}/VST3/${{ env.PRODUCT_NAME }}.vst3" >> $GITHUB_ENV @@ -128,10 +125,6 @@ jobs: p12-file-base64: ${{ secrets.DEV_ID_APP_CERT }} p12-password: ${{ secrets.DEV_ID_APP_PASSWORD }} - - name: Configure - shell: bash - run: cmake -B ${{ env.BUILD_DIR }} -G Ninja -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=${{ matrix.ccache }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ matrix.ccache }} -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" . - - name: Build shell: bash run: cmake --build ${{ env.BUILD_DIR }} --config ${{ env.BUILD_TYPE }} --parallel 4