diff --git a/.github/workflows/cmake_aax_prerelease.yml b/.github/workflows/cmake_aax_prerelease.yml deleted file mode 100644 index 4101c6b..0000000 --- a/.github/workflows/cmake_aax_prerelease.yml +++ /dev/null @@ -1,203 +0,0 @@ -name: AAX Pre Release - -on: - workflow_dispatch: - -# When pushing new commits, cancel any running builds on that branch -concurrency: - group: ${{ github.ref }} - cancel-in-progress: true - -env: - 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 - IPP_DIR: C:\Program Files (x86)\Intel\oneAPI\ipp\latest\lib\cmake\ipp - -# 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: macOS - os: macos-14 - pluginval-binary: pluginval.app/Contents/MacOS/pluginval - boost_platform_version: "11" - boost_toolset: "clang" - plugin_os_format: "AAX" - - name: Windows - os: windows-latest - pluginval-binary: ./pluginval.exe - boost_platform_version: "2022" - boost_toolset: "msvc" - plugin_os_format: "AAX" - - steps: - - name: Set up MSVC Developer Command Prompt (Windows) - if: runner.os == 'Windows' - uses: ilammy/msvc-dev-cmd@v1 - - - name: Set up Clang (Linux) - if: runner.os == 'Linux' - 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@v4 - with: - key: ipp-v5 - path: C:\Program Files (x86)\Intel - - - 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/b4adec02-353b-4144-aa21-f2087040f316/w_ipp_oneapi_p_2021.11.0.533_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 CI fail) - if: runner.os == 'Windows' && (steps.cache-ipp.outputs.cache-hit != 'true') - uses: actions/cache/save@v4 - with: - path: C:\Program Files (x86)\Intel - key: ipp-v5 - - - name: Install Ninja (Windows) - if: runner.os == 'Windows' - shell: bash - run: choco install ninja - - - name: Install macOS Deps - if: ${{ matrix.name == 'macOS' }} - run: brew install ninja osxutils - - # This block can be removed once 15.1 is default (JUCE requires it when building on macOS 14) - - name: Use latest Xcode on system (macOS) - if: ${{ matrix.name == 'macOS' }} - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: latest-stable - - - name: Checkout code - uses: actions/checkout@v4 - with: - submodules: true # Get JUCE populated - -# - name: Install boost -# uses: MarkusJx/install-boost@v2.4.5 -# id: install-boost -# with: -# boost_version: 1.80.0 -# platform_version: ${{ matrix.boost_platform_version }} -# toolset: ${{ matrix.boost_toolset }} -# link: "static" - - - name: Cache the build - uses: mozilla-actions/sccache-action@v0.0.5 - - - name: Import Certificates (macOS) - uses: apple-actions/import-codesign-certs@v3 # only exists as a tag right now - if: ${{ (matrix.name == 'macOS') && (env.p12-file-base64 != '')}} - with: - p12-file-base64: ${{ secrets.DEV_ID_APP_CERT }} - p12-password: ${{ secrets.DEV_ID_APP_PASSWORD }} - env: - p12-file-base64: ${{ secrets.DEV_ID_APP_CERT }} - - - 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" . - env: - PLUGIN_OS_FORMAT: ${{ matrix.plugin_os_format }} - - - name: Build - shell: bash - run: cmake --build ${{ env.BUILD_DIR }} --config ${{ env.BUILD_TYPE }} --parallel 4 - - - name: Test - working-directory: ${{ env.BUILD_DIR }} - run: ctest --output-on-failure -j4 -VV - - - name: Read in .env from CMake # see GitHubENV.cmake - shell: bash - run: | - cat .env # show us the config - cat .env >> $GITHUB_ENV # pull in our PRODUCT_NAME, etc - - - name: Set additional env vars for next steps - shell: bash - run: | - ARTIFACTS_PATH=${{ env.BUILD_DIR }}/${{ env.PROJECT_NAME }}_artefacts/${{ env.BUILD_TYPE }} - echo "ARTIFACTS_PATH=$ARTIFACTS_PATH" >> $GITHUB_ENV - echo "AAX_PATH=$ARTIFACTS_PATH/AAX/${{ env.PRODUCT_NAME }}.axxplugin" >> $GITHUB_ENV - echo "ARTIFACT_NAME=${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-${{ matrix.name }}" >> $GITHUB_ENV - - - name: Check AAX releases - shell: bash - run: | - ls "${{ env.ARTIFACTS_PATH }}/AAX" - - - name: Upload AAX - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.name }} - path: "${{ env.ARTIFACTS_PATH }}/AAX/*.aaxplugin" - - # pre-release: - # name: Release AAX - # runs-on: ubuntu-latest - # needs: build_and_test - # permissions: - # contents: write - - # steps: - # - name: Get artifacts - # uses: actions/download-artifact@v4 - - # - name: Download AAX pre-release repo - # uses: actions/checkout@v4 - # with: - # repository: "ZL-Audio/ZLEqualizerAAX" - # fetch-depth: 0 - # path: "release_repo" - # ssh-key: ${{ secrets.AAX_RELEASE_DEPLOY_KEY }} - - # - name: Remove old AAX releases - # run: | - # rm -rf "release_repo/macOS" - # rm -rf "release_repo/Windows" - - # - name: Move current AAX pre-releases - # run: | - # mv -v "macOS" "release_repo/macOS" - # mv -v "Windows" "release_repo/Windows" - - # - name: Commit AAX pre-release repo - # run: | - # cd "release_repo" - # git config user.name github-actions - # git config user.email github-actions@github.com - # git checkout --orphan newBranch - # git add -A - # git commit -m "pre-release" - # git branch -D main - # git branch -m main - # git push -f origin main \ No newline at end of file diff --git a/.github/workflows/cmake_full_test.yml b/.github/workflows/cmake_full_test.yml deleted file mode 100644 index 66a2aad..0000000 --- a/.github/workflows/cmake_full_test.yml +++ /dev/null @@ -1,266 +0,0 @@ -name: macOS/Windows/Linux Test - -on: - push: - branches: [main, develop] - pull_request: - branches: [main] - workflow_dispatch: - -# When pushing new commits, cancel any running builds on that branch -concurrency: - group: ${{ github.ref }} - cancel-in-progress: true - -env: - 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 - IPP_DIR: C:\Program Files (x86)\Intel\oneAPI\ipp\latest\lib\cmake\ipp - -# 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 - boost_platform_version: "22.04" - boost_toolset: "gcc" - plugin_os_format: "VST3" - - name: macOS - os: macos-14 - pluginval-binary: pluginval.app/Contents/MacOS/pluginval - boost_platform_version: "11" - boost_toolset: "clang" - plugin_os_format: "AU" - - name: Windows - os: windows-latest - pluginval-binary: ./pluginval.exe - boost_platform_version: "2022" - boost_toolset: "msvc" - plugin_os_format: "VST3" - - steps: - - name: Set up MSVC Developer Command Prompt (Windows) - if: runner.os == 'Windows' - uses: ilammy/msvc-dev-cmd@v1 - - - name: Set up Clang (Linux) - if: runner.os == 'Linux' - 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 libfreetype-dev libfontconfig1-dev libwebkit2gtk-4.1-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@v4 - with: - key: ipp-v5 - path: C:\Program Files (x86)\Intel - - - 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/b4adec02-353b-4144-aa21-f2087040f316/w_ipp_oneapi_p_2021.11.0.533_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 CI fail) - if: runner.os == 'Windows' && (steps.cache-ipp.outputs.cache-hit != 'true') - uses: actions/cache/save@v4 - with: - path: C:\Program Files (x86)\Intel - key: ipp-v5 - - - name: Install Ninja (Windows) - if: runner.os == 'Windows' - shell: bash - run: choco install ninja - - - name: Install macOS Deps - if: ${{ matrix.name == 'macOS' }} - run: brew install ninja osxutils - - # This block can be removed once 15.1 is default (JUCE requires it when building on macOS 14) - - name: Use latest Xcode on system (macOS) - if: ${{ matrix.name == 'macOS' }} - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: latest-stable - - - name: Checkout code - uses: actions/checkout@v4 - with: - submodules: true - - - name: Cache the build - uses: mozilla-actions/sccache-action@v0.0.5 - - - name: Import Certificates (macOS) - uses: apple-actions/import-codesign-certs@v3 # only exists as a tag right now - if: ${{ (matrix.name == 'macOS') && (env.p12-file-base64 != '')}} - with: - p12-file-base64: ${{ secrets.DEV_ID_APP_CERT }} - p12-password: ${{ secrets.DEV_ID_APP_PASSWORD }} - env: - p12-file-base64: ${{ secrets.DEV_ID_APP_CERT }} - - - 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" . - env: - PLUGIN_OS_FORMAT: ${{ matrix.plugin_os_format }} - - - name: Build - shell: bash - run: cmake --build ${{ env.BUILD_DIR }} --config ${{ env.BUILD_TYPE }} --parallel 4 - - - name: Test - working-directory: ${{ env.BUILD_DIR }} - run: ctest --output-on-failure -j4 -VV - - - name: Read in .env from CMake # see GitHubENV.cmake - shell: bash - run: | - cat .env # show us the config - cat .env >> $GITHUB_ENV # pull in our PRODUCT_NAME, etc - - - name: Set additional env vars for next steps - shell: bash - run: | - ARTIFACTS_PATH=${{ env.BUILD_DIR }}/${{ env.PROJECT_NAME }}_artefacts/${{ env.BUILD_TYPE }} - echo "ARTIFACTS_PATH=$ARTIFACTS_PATH" >> $GITHUB_ENV - echo "VST3_PATH=$ARTIFACTS_PATH/VST3/${{ env.PRODUCT_NAME }}.vst3" >> $GITHUB_ENV - echo "AU_PATH=$ARTIFACTS_PATH/AU/${{ env.PRODUCT_NAME }}.component" >> $GITHUB_ENV - echo "LV2_PATH=$ARTIFACTS_PATH/LV2/${{ env.PRODUCT_NAME }}.lv2" >> $GITHUB_ENV - echo "ARTIFACT_NAME=${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-${{ matrix.name }}" >> $GITHUB_ENV - - - name: Pluginval setup - shell: bash - run: | - curl -LO "https://github.com/Tracktion/pluginval/releases/download/v1.0.3/pluginval_${{ matrix.name }}.zip" - 7z x pluginval_${{ matrix.name }}.zip - echo "PLUGINVAL_DISABLED=Plugin state restoration" >> $GITHUB_ENV - - - name: Setup Pluginval random seed - uses: josStorer/get-current-time@v2 - id: current-time - with: - format: YYYYMMDD - - - name: Pluginval VST3 validations - if: ${{ matrix.name != 'macOS' }} - shell: bash - run: | - ${{ matrix.pluginval-binary }} --verbose --validate "${{ env.VST3_PATH }}" --disabled-tests "${{ env.PLUGINVAL_DISABLED }}" - env: - STRICTNESS_LEVEL: 10 - TIMEOUT_MS: 1440000 - REPEAT: 2 - RANDOM_SEED: "${{ steps.current-time.outputs.formattedTime }}" - - - name: Pluginval AU validations (macOS) - if: ${{ matrix.name == 'macOS' }} - shell: bash - run: | - sudo cp -r "${{ env.AU_PATH }}" "/Library/Audio/Plug-ins/components" - sudo killall -9 AudioComponentRegistrar - ${{ matrix.pluginval-binary }} --verbose --validate "/Library/Audio/Plug-ins/components/${{ env.PRODUCT_NAME }}.component" --disabled-tests "${{ env.PLUGINVAL_DISABLED }}" - env: - STRICTNESS_LEVEL: 10 - TIMEOUT_MS: 1440000 - REPEAT: 2 - RANDOM_SEED: "${{ steps.current-time.outputs.formattedTime }}" - - - name: Codesign and Create Individual Packages (macOS) - if: ${{ matrix.name == 'macOS' }} - run: | - python3 -u packaging/packager_macOS.py - env: - DEVELOPER_ID_APPLICATION: ${{ secrets.DEVELOPER_ID_APPLICATION }} - - - name: Sign Final Package (macOS) - if: ${{ (matrix.name == 'macOS') && (env.APPLE_INSTALLER_DEV != '') }} - run: productsign --sign "${{ secrets.APPLE_INSTALLER_DEV }}" "${{ env.ARTIFACT_NAME }}_unsigned.pkg" "${{ env.ARTIFACT_NAME }}.pkg" - env: - APPLE_INSTALLER_DEV: ${{ secrets.APPLE_INSTALLER_DEV }} - - - name: Rename Final Package (macOS) - if: ${{ (matrix.name == 'macOS') && (env.APPLE_INSTALLER_DEV == '') }} - run: mv "${{ env.ARTIFACT_NAME }}_unsigned.pkg" "${{ env.ARTIFACT_NAME }}.pkg" - env: - APPLE_INSTALLER_DEV: ${{ secrets.APPLE_INSTALLER_DEV }} - - - name: Notarize and Staple PKG (macOS) - if: ${{ (matrix.name == 'macOS') && (env.NOTARIZATION_USERNAME != '')}} - run: | - xcrun notarytool submit "${{ env.ARTIFACT_NAME }}.pkg" --apple-id ${{ secrets.NOTARIZATION_USERNAME }} --password ${{ secrets.NOTARIZATION_PASSWORD }} --team-id ${{ secrets.TEAM_ID }} --wait - xcrun stapler staple "${{ env.ARTIFACT_NAME }}.pkg" - env: - NOTARIZATION_USERNAME: ${{ secrets.NOTARIZATION_USERNAME }} - - - name: Create DMG (macOS) - if: ${{ matrix.name == 'macOS' }} - run: | - mkdir "${{ env.ARTIFACTS_PATH }}/dmgtmp" - mv "${{ env.ARTIFACT_NAME }}.pkg" "${{ env.ARTIFACTS_PATH }}/dmgtmp" - hdiutil create "${{ env.ARTIFACTS_PATH }}/tmp.dmg" -ov -volname "${{ env.ARTIFACT_NAME }}" -fs HFS+ -srcfolder "${{ env.ARTIFACTS_PATH }}/dmgtmp" - hdiutil convert "${{ env.ARTIFACTS_PATH }}/tmp.dmg" -format UDZO -o "${{ env.ARTIFACT_NAME }}.dmg" - - - name: Upload DMG (macOS) - if: ${{ matrix.name == 'macOS' }} - uses: actions/upload-artifact@v4 - with: - name: ${{ env.ARTIFACT_NAME }}.dmg - path: "${{ env.ARTIFACT_NAME }}.dmg" - - - name: Generate InnoScript (Windows) - if: ${{ matrix.name == 'Windows' }} - shell: bash - run: | - python3 -u packaging/packager_Windows.py - cat "packaging\installer.iss" - - - name: Generate Installer (Windows) - if: ${{ matrix.name == 'Windows' }} - shell: bash - run: | - iscc "packaging\installer.iss" - mv "packaging/Output/${{ env.ARTIFACT_NAME }}.exe" "${{ env.ARTIFACTS_PATH }}/" - - - name: Upload Exe (Windows) - if: ${{ matrix.name == 'Windows' }} - uses: actions/upload-artifact@v4 - with: - name: ${{ env.ARTIFACT_NAME }}.exe - path: "${{ env.ARTIFACTS_PATH }}/${{ env.ARTIFACT_NAME }}.exe" - - - name: Generate Zip (Linux) - if: ${{ matrix.name == 'Linux' }} - working-directory: ${{ env.ARTIFACTS_PATH }} - run: 7z a -tzip "${{ env.ARTIFACT_NAME }}.zip" "-xr!lib${{ env.PRODUCT_NAME }}_SharedCode.a" . - - - name: Upload Zip (Linux) - if: ${{ matrix.name == 'Linux' }} - uses: actions/upload-artifact@v4 - with: - name: ${{ env.ARTIFACT_NAME }}.zip - path: "${{ env.ARTIFACTS_PATH }}/${{ env.ARTIFACT_NAME }}.zip" \ No newline at end of file diff --git a/.github/workflows/cmake_macos_oldest.yml b/.github/workflows/cmake_macos_oldest.yml new file mode 100644 index 0000000..6f0a729 --- /dev/null +++ b/.github/workflows/cmake_macos_oldest.yml @@ -0,0 +1,77 @@ +name: macOS/Windows/Linux Test + +on: + push: + branches: [macos-oldest] + workflow_dispatch: + +# When pushing new commits, cancel any running builds on that branch +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +env: + 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 + IPP_DIR: C:\Program Files (x86)\Intel\oneAPI\ipp\latest\lib\cmake\ipp + +# 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: macOS + os: macos-12 + pluginval-binary: pluginval.app/Contents/MacOS/pluginval + plugin_os_format: "AU" + + steps: + - name: Download current release assets (macOS) + uses: robinraju/release-downloader@v1.11 + with: + latest: true + preRelease: true + fileName: "*.zip" + out-file-path: "current_release" + + - name: Unzip plugin + - shell: bash + run: | + cd current_release + unzip ZL.Equalizer.component.zip + ls + + - name: Pluginval setup + shell: bash + run: | + curl -LO "https://github.com/Tracktion/pluginval/releases/download/v1.0.3/pluginval_${{ matrix.name }}.zip" + 7z x pluginval_${{ matrix.name }}.zip + echo "PLUGINVAL_DISABLED=Plugin state restoration" >> $GITHUB_ENV + + - name: Setup Pluginval random seed + uses: josStorer/get-current-time@v2 + id: current-time + with: + format: YYYYMMDD + + - name: Pluginval AU validations (macOS) + if: ${{ matrix.name == 'macOS' }} + shell: bash + run: | + sudo cp -r "current_release/ZL Equalizer.component" "/Library/Audio/Plug-ins/components" + sudo killall -9 AudioComponentRegistrar + ${{ matrix.pluginval-binary }} --verbose --validate "/Library/Audio/Plug-ins/components/ZL Equalizer.component" --disabled-tests "${{ env.PLUGINVAL_DISABLED }}" + env: + STRICTNESS_LEVEL: 10 + TIMEOUT_MS: 1440000 + REPEAT: 1 + RANDOM_SEED: "${{ steps.current-time.outputs.formattedTime }}" \ No newline at end of file diff --git a/.github/workflows/cmake_release.yml b/.github/workflows/cmake_release.yml deleted file mode 100644 index 902bf7f..0000000 --- a/.github/workflows/cmake_release.yml +++ /dev/null @@ -1,277 +0,0 @@ -name: Release - -on: - workflow_dispatch: - -# When pushing new commits, cancel any running builds on that branch -concurrency: - group: ${{ github.ref }} - cancel-in-progress: true - -env: - 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 - IPP_DIR: C:\Program Files (x86)\Intel\oneAPI\ipp\latest\lib\cmake\ipp - -# 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 - boost_platform_version: "22.04" - boost_toolset: "gcc" - plugin_os_format: "VST3;LV2" - - name: macOS - os: macos-14 - pluginval-binary: pluginval.app/Contents/MacOS/pluginval - boost_platform_version: "11" - boost_toolset: "clang" - plugin_os_format: "VST3;AU" - - name: Windows - os: windows-latest - pluginval-binary: ./pluginval.exe - boost_platform_version: "2022" - boost_toolset: "msvc" - plugin_os_format: "VST3;LV2" - - steps: - - name: Set up MSVC Developer Command Prompt (Windows) - if: runner.os == 'Windows' - uses: ilammy/msvc-dev-cmd@v1 - - - name: Set up Clang (Linux) - if: runner.os == 'Linux' - 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 libfreetype-dev libfontconfig1-dev libwebkit2gtk-4.1-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@v4 - with: - key: ipp-v5 - path: C:\Program Files (x86)\Intel - - - 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/b4adec02-353b-4144-aa21-f2087040f316/w_ipp_oneapi_p_2021.11.0.533_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 CI fail) - if: runner.os == 'Windows' && (steps.cache-ipp.outputs.cache-hit != 'true') - uses: actions/cache/save@v4 - with: - path: C:\Program Files (x86)\Intel - key: ipp-v5 - - - name: Install Ninja (Windows) - if: runner.os == 'Windows' - shell: bash - run: choco install ninja - - - name: Install macOS Deps - if: ${{ matrix.name == 'macOS' }} - run: brew install ninja osxutils - - # This block can be removed once 15.1 is default (JUCE requires it when building on macOS 14) - - name: Use latest Xcode on system (macOS) - if: ${{ matrix.name == 'macOS' }} - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: latest-stable - - - name: Checkout code - uses: actions/checkout@v4 - with: - submodules: true - - - name: Cache the build - uses: mozilla-actions/sccache-action@v0.0.5 - - - name: Import Certificates (macOS) - uses: apple-actions/import-codesign-certs@v3 # only exists as a tag right now - if: ${{ (matrix.name == 'macOS') && (env.p12-file-base64 != '')}} - with: - p12-file-base64: ${{ secrets.DEV_ID_APP_CERT }} - p12-password: ${{ secrets.DEV_ID_APP_PASSWORD }} - env: - p12-file-base64: ${{ secrets.DEV_ID_APP_CERT }} - - - 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" . - env: - PLUGIN_OS_FORMAT: ${{ matrix.plugin_os_format }} - - - name: Build - shell: bash - run: cmake --build ${{ env.BUILD_DIR }} --config ${{ env.BUILD_TYPE }} --parallel 4 - - - name: Test - working-directory: ${{ env.BUILD_DIR }} - run: ctest --output-on-failure -j4 -VV - - - name: Read in .env from CMake # see GitHubENV.cmake - shell: bash - run: | - cat .env # show us the config - cat .env >> $GITHUB_ENV # pull in our PRODUCT_NAME, etc - - # - name: Download AAX pre-release repo - # if: (runner.os != 'Linux') - # uses: actions/checkout@v4 - # with: - # repository: "ZL-Audio/ZLEqualizerAAX" - # path: "aax_releases" - # ssh-key: ${{ secrets.AAX_RELEASE_DEPLOY_KEY }} - - - name: Set additional env vars for next steps - shell: bash - run: | - ARTIFACTS_PATH=${{ env.BUILD_DIR }}/${{ env.PROJECT_NAME }}_artefacts/${{ env.BUILD_TYPE }} - echo "ARTIFACTS_PATH=$ARTIFACTS_PATH" >> $GITHUB_ENV - echo "VST3_PATH=$ARTIFACTS_PATH/VST3/${{ env.PRODUCT_NAME }}.vst3" >> $GITHUB_ENV - echo "AU_PATH=$ARTIFACTS_PATH/AU/${{ env.PRODUCT_NAME }}.component" >> $GITHUB_ENV - echo "LV2_PATH=$ARTIFACTS_PATH/LV2/${{ env.PRODUCT_NAME }}.lv2" >> $GITHUB_ENV - echo "AAX_PATH=aax_releases/${{ matrix.name }}/${{ env.PRODUCT_NAME }}.aaxplugin" >> $GITHUB_ENV - echo "ARTIFACT_NAME=${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-${{ matrix.name }}" >> $GITHUB_ENV - - - name: Pluginval setup - shell: bash - run: | - curl -LO "https://github.com/Tracktion/pluginval/releases/download/v1.0.3/pluginval_${{ matrix.name }}.zip" - 7z x pluginval_${{ matrix.name }}.zip - echo "PLUGINVAL_DISABLED=Plugin state restoration" >> $GITHUB_ENV - - - name: Setup Pluginval random seed - uses: josStorer/get-current-time@v2 - id: current-time - with: - format: YYYYMMDD - - - name: Pluginval VST3 validations - shell: bash - run: | - ${{ matrix.pluginval-binary }} --verbose --validate "${{ env.VST3_PATH }}" --disabled-tests "${{ env.PLUGINVAL_DISABLED }}" - env: - STRICTNESS_LEVEL: 10 - TIMEOUT_MS: 1440000 - REPEAT: 1 - RANDOM_SEED: "${{ steps.current-time.outputs.formattedTime }}" - - - name: Codesign and Create Individual Packages (macOS) - if: ${{ matrix.name == 'macOS' }} - run: | - python3 -u packaging/packager_macOS.py - env: - DEVELOPER_ID_APPLICATION: ${{ secrets.DEVELOPER_ID_APPLICATION }} - - - name: Sign Final Package (macOS) - if: ${{ (matrix.name == 'macOS') && (env.APPLE_INSTALLER_DEV != '') }} - run: productsign --sign "${{ secrets.APPLE_INSTALLER_DEV }}" "${{ env.ARTIFACT_NAME }}_unsigned.pkg" "${{ env.ARTIFACT_NAME }}.pkg" - env: - APPLE_INSTALLER_DEV: ${{ secrets.APPLE_INSTALLER_DEV }} - - - name: Rename Final Package (macOS) - if: ${{ (matrix.name == 'macOS') && (env.APPLE_INSTALLER_DEV == '') }} - run: mv "${{ env.ARTIFACT_NAME }}_unsigned.pkg" "${{ env.ARTIFACT_NAME }}.pkg" - env: - APPLE_INSTALLER_DEV: ${{ secrets.APPLE_INSTALLER_DEV }} - - - name: Notarize and Staple PKG (macOS) - if: ${{ (matrix.name == 'macOS') && (env.NOTARIZATION_USERNAME != '')}} - run: | - xcrun notarytool submit "${{ env.ARTIFACT_NAME }}.pkg" --apple-id ${{ secrets.NOTARIZATION_USERNAME }} --password ${{ secrets.NOTARIZATION_PASSWORD }} --team-id ${{ secrets.TEAM_ID }} --wait - xcrun stapler staple "${{ env.ARTIFACT_NAME }}.pkg" - env: - NOTARIZATION_USERNAME: ${{ secrets.NOTARIZATION_USERNAME }} - - - name: Create DMG (macOS) - if: ${{ matrix.name == 'macOS' }} - run: | - mkdir "${{ env.ARTIFACTS_PATH }}/dmgtmp" - mv "${{ env.ARTIFACT_NAME }}.pkg" "${{ env.ARTIFACTS_PATH }}/dmgtmp" - hdiutil create "${{ env.ARTIFACTS_PATH }}/tmp.dmg" -ov -volname "${{ env.ARTIFACT_NAME }}" -fs HFS+ -srcfolder "${{ env.ARTIFACTS_PATH }}/dmgtmp" - hdiutil convert "${{ env.ARTIFACTS_PATH }}/tmp.dmg" -format UDZO -o "${{ env.ARTIFACT_NAME }}.dmg" - - - name: Upload DMG (macOS) - if: ${{ matrix.name == 'macOS' }} - uses: actions/upload-artifact@v4 - with: - name: ${{ env.ARTIFACT_NAME }}.dmg - path: "${{ env.ARTIFACT_NAME }}.dmg" - - - name: Generate InnoScript (Windows) - if: ${{ matrix.name == 'Windows' }} - shell: bash - run: | - python3 -u packaging/packager_Windows.py - cat "packaging\installer.iss" - - - name: Generate Installer (Windows) - if: ${{ matrix.name == 'Windows' }} - shell: bash - run: | - iscc "packaging\installer.iss" - mv "packaging/Output/${{ env.ARTIFACT_NAME }}.exe" "${{ env.ARTIFACTS_PATH }}/" - - - name: Upload Exe (Windows) - if: ${{ matrix.name == 'Windows' }} - uses: actions/upload-artifact@v4 - with: - name: ${{ env.ARTIFACT_NAME }}.exe - path: "${{ env.ARTIFACTS_PATH }}/${{ env.ARTIFACT_NAME }}.exe" - - - name: Generate Zip (Linux) - if: ${{ matrix.name == 'Linux' }} - working-directory: ${{ env.ARTIFACTS_PATH }} - run: 7z a -tzip "${{ env.ARTIFACT_NAME }}.zip" "-xr!lib${{ env.PRODUCT_NAME }}_SharedCode.a" . - - - name: Upload Zip (Linux) - if: ${{ matrix.name == 'Linux' }} - uses: actions/upload-artifact@v4 - with: - name: ${{ env.ARTIFACT_NAME }}.zip - path: "${{ env.ARTIFACTS_PATH }}/${{ env.ARTIFACT_NAME }}.zip" - - release: - if: contains(github.ref, 'tags/') - runs-on: ubuntu-latest - needs: build_and_test - - steps: - - name: Get Artifacts - uses: actions/download-artifact@v4 - - - name: Create Release - uses: softprops/action-gh-release@v2 - 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 \ No newline at end of file diff --git a/.github/workflows/cmake_standalone.yml b/.github/workflows/cmake_standalone.yml deleted file mode 100644 index fd01fcb..0000000 --- a/.github/workflows/cmake_standalone.yml +++ /dev/null @@ -1,235 +0,0 @@ -name: Standalone - -on: - workflow_dispatch: - -concurrency: - group: ${{ github.ref }} - cancel-in-progress: true - -env: - 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 - IPP_DIR: C:\Program Files (x86)\Intel\oneAPI\ipp\latest\lib\cmake\ipp - -# 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 - boost_platform_version: "22.04" - boost_toolset: "gcc" - plugin_os_format: "Standalone" - app_suffix: "" - - name: macOS - os: macos-14 - boost_platform_version: "11" - boost_toolset: "clang" - plugin_os_format: "Standalone" - app_suffix: "app" - - name: Windows - os: windows-latest - boost_platform_version: "2022" - boost_toolset: "msvc" - plugin_os_format: "Standalone" - app_suffix: "exe" - - steps: - - name: Set up MSVC Developer Command Prompt (Windows) - if: runner.os == 'Windows' - uses: ilammy/msvc-dev-cmd@v1 - - - name: Set up Clang (Linux) - if: runner.os == 'Linux' - 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 libfreetype-dev libfontconfig1-dev libwebkit2gtk-4.1-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@v4 - with: - key: ipp-v5 - path: C:\Program Files (x86)\Intel - - - 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/b4adec02-353b-4144-aa21-f2087040f316/w_ipp_oneapi_p_2021.11.0.533_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 CI fail) - if: runner.os == 'Windows' && (steps.cache-ipp.outputs.cache-hit != 'true') - uses: actions/cache/save@v4 - with: - path: C:\Program Files (x86)\Intel - key: ipp-v5 - - - name: Install Ninja (Windows) - if: runner.os == 'Windows' - shell: bash - run: choco install ninja - - - name: Install macOS Deps - if: ${{ matrix.name == 'macOS' }} - run: brew install ninja osxutils - - # This block can be removed once 15.1 is default (JUCE requires it when building on macOS 14) - - name: Use latest Xcode on system (macOS) - if: ${{ matrix.name == 'macOS' }} - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: latest-stable - - - name: Checkout code - uses: actions/checkout@v4 - with: - submodules: true - - - name: Install boost - uses: MarkusJx/install-boost@v2.4.5 - id: install-boost - with: - boost_version: 1.80.0 - platform_version: ${{ matrix.boost_platform_version }} - toolset: ${{ matrix.boost_toolset }} - link: "static" - - - name: Cache the build - uses: mozilla-actions/sccache-action@v0.0.5 - - - name: Import Certificates (macOS) - uses: apple-actions/import-codesign-certs@v3 # only exists as a tag right now - if: ${{ (matrix.name == 'macOS') && (env.p12-file-base64 != '')}} - with: - p12-file-base64: ${{ secrets.DEV_ID_APP_CERT }} - p12-password: ${{ secrets.DEV_ID_APP_PASSWORD }} - env: - p12-file-base64: ${{ secrets.DEV_ID_APP_CERT }} - - - 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" . - env: - BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }} - PLUGIN_OS_FORMAT: ${{ matrix.plugin_os_format }} - - - name: Build - shell: bash - run: cmake --build ${{ env.BUILD_DIR }} --config ${{ env.BUILD_TYPE }} --parallel 4 - - - name: Test - working-directory: ${{ env.BUILD_DIR }} - run: ctest --output-on-failure -j4 -VV - - - name: Read in .env from CMake # see GitHubENV.cmake - shell: bash - run: | - cat .env # show us the config - cat .env >> $GITHUB_ENV # pull in our PRODUCT_NAME, etc - - - name: Set additional env vars for next steps - shell: bash - run: | - ARTIFACTS_PATH=${{ env.BUILD_DIR }}/${{ env.PROJECT_NAME }}_artefacts/${{ env.BUILD_TYPE }} - echo "ARTIFACTS_PATH=$ARTIFACTS_PATH" >> $GITHUB_ENV - echo "VST3_PATH=$ARTIFACTS_PATH/VST3/${{ env.PRODUCT_NAME }}.vst3" >> $GITHUB_ENV - echo "AU_PATH=$ARTIFACTS_PATH/AU/${{ env.PRODUCT_NAME }}.component" >> $GITHUB_ENV - echo "LV2_PATH=$ARTIFACTS_PATH/LV2/${{ env.PRODUCT_NAME }}.lv2" >> $GITHUB_ENV - echo "Standalone_PATH=$ARTIFACTS_PATH/Standalone/${{ env.PRODUCT_NAME }}.${{ matrix.app_suffix }}" >> $GITHUB_ENV - echo "ARTIFACT_NAME=${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-${{ matrix.name }}" >> $GITHUB_ENV - - - name: Codesign and Create Individual Packages (macOS) - if: ${{ matrix.name == 'macOS' }} - run: | - python3 -u packaging/packager_macOS.py - env: - DEVELOPER_ID_APPLICATION: ${{ secrets.DEVELOPER_ID_APPLICATION }} - - - name: Sign Final Package (macOS) - if: ${{ (matrix.name == 'macOS') && (env.APPLE_INSTALLER_DEV != '') }} - run: productsign --sign "${{ secrets.APPLE_INSTALLER_DEV }}" "${{ env.ARTIFACT_NAME }}_unsigned.pkg" "${{ env.ARTIFACT_NAME }}.pkg" - env: - APPLE_INSTALLER_DEV: ${{ secrets.APPLE_INSTALLER_DEV }} - - - name: Rename Final Package (macOS) - if: ${{ (matrix.name == 'macOS') && (env.APPLE_INSTALLER_DEV == '') }} - run: mv "${{ env.ARTIFACT_NAME }}_unsigned.pkg" "${{ env.ARTIFACT_NAME }}.pkg" - env: - APPLE_INSTALLER_DEV: ${{ secrets.APPLE_INSTALLER_DEV }} - - - name: Notarize and Staple PKG (macOS) - if: ${{ (matrix.name == 'macOS') && (env.NOTARIZATION_USERNAME != '')}} - run: | - xcrun notarytool submit "${{ env.ARTIFACT_NAME }}.pkg" --apple-id ${{ secrets.NOTARIZATION_USERNAME }} --password ${{ secrets.NOTARIZATION_PASSWORD }} --team-id ${{ secrets.TEAM_ID }} --wait - xcrun stapler staple "${{ env.ARTIFACT_NAME }}.pkg" - env: - NOTARIZATION_USERNAME: ${{ secrets.NOTARIZATION_USERNAME }} - - - name: Create DMG (macOS) - if: ${{ matrix.name == 'macOS' }} - run: | - mkdir "${{ env.ARTIFACTS_PATH }}/dmgtmp" - mv "${{ env.ARTIFACT_NAME }}.pkg" "${{ env.ARTIFACTS_PATH }}/dmgtmp" - hdiutil create "${{ env.ARTIFACTS_PATH }}/tmp.dmg" -ov -volname "${{ env.ARTIFACT_NAME }}" -fs HFS+ -srcfolder "${{ env.ARTIFACTS_PATH }}/dmgtmp" - hdiutil convert "${{ env.ARTIFACTS_PATH }}/tmp.dmg" -format UDZO -o "${{ env.ARTIFACT_NAME }}.dmg" - - - name: Upload DMG (macOS) - if: ${{ matrix.name == 'macOS' }} - uses: actions/upload-artifact@v4 - with: - name: ${{ env.ARTIFACT_NAME }}-Standalone.dmg - path: "${{ env.ARTIFACT_NAME }}.dmg" - - - name: Generate InnoScript (Windows) - if: ${{ matrix.name == 'Windows' }} - shell: bash - run: | - python3 -u packaging/packager_Windows.py - cat "packaging\installer.iss" - - - name: Generate Installer (Windows) - if: ${{ matrix.name == 'Windows' }} - shell: bash - run: | - iscc "packaging\installer.iss" - mv "packaging/Output/${{ env.ARTIFACT_NAME }}.exe" "${{ env.ARTIFACTS_PATH }}/" - - - name: Upload Exe (Windows) - if: ${{ matrix.name == 'Windows' }} - uses: actions/upload-artifact@v4 - with: - name: ${{ env.ARTIFACT_NAME }}-Standalone.exe - path: "${{ env.ARTIFACTS_PATH }}/${{ env.ARTIFACT_NAME }}.exe" - - - name: Generate Zip (Linux) - if: ${{ matrix.name == 'Linux' }} - working-directory: ${{ env.ARTIFACTS_PATH }} - run: 7z a -tzip "${{ env.ARTIFACT_NAME }}.zip" "-xr!lib${{ env.PRODUCT_NAME }}_SharedCode.a" . - - - name: Upload Zip (Linux) - if: ${{ matrix.name == 'Linux' }} - uses: actions/upload-artifact@v4 - with: - name: ${{ env.ARTIFACT_NAME }}-Standalone.zip - path: "${{ env.ARTIFACTS_PATH }}/${{ env.ARTIFACT_NAME }}.zip" \ No newline at end of file diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml deleted file mode 100644 index 238bccf..0000000 --- a/.github/workflows/sync.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Git sync -on: - workflow_dispatch: - schedule: - - cron: "0 0 * * 0" - -jobs: - sync: - runs-on: ubuntu-latest - steps: - - name: Sync to Gitee - uses: abersheeran/sync-gitee-mirror@v1-beta - with: - repository: ${{ github.repository }} - username: ${{ github.actor }} - password: ${{ secrets.GITEE_PAT }} \ No newline at end of file diff --git a/.github/workflows/sync_release.yml b/.github/workflows/sync_release.yml deleted file mode 100644 index bf81ec7..0000000 --- a/.github/workflows/sync_release.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Release Sync -on: - workflow_dispatch: - -jobs: - build: - name: Release Sync - if: ${{ github.event.workflow_run.conclusion == 'success' }} || ${{ github.event_name == 'workflow_dispatch' }} - runs-on: ubuntu-22.04 - permissions: - contents: write - steps: - - name: Checkout current repo - uses: actions/checkout@v4 - with: - submodules: false - path: "current_repo" - - name: Download release repo - uses: actions/checkout@v4 - with: - repository: "ZL-Audio/ZLRelease" - fetch-depth: 0 - path: "release_repo" - ssh-key: ${{ secrets.SSH_RELEASE_DEPLOY_KEY }} - - name: Download current release assets (macOS) - uses: robinraju/release-downloader@v1.11 - with: - latest: true - preRelease: true - fileName: "*dmg" - out-file-path: "current_release" - - name: Download current release assets (Windows) - uses: robinraju/release-downloader@v1.11 - with: - latest: true - preRelease: true - fileName: "*exe" - out-file-path: "current_release" - - name: Remove old release assets - run: | - rm -rf "release_repo/${{ github.event.repository.name }}" - mkdir -p "release_repo/${{ github.event.repository.name }}" - ls "current_release/" - - name: Move current release assets - run: | - mv -v "current_release"/* "release_repo/${{ github.event.repository.name }}/" - mv -v "current_repo/CHANGELOG.md" "release_repo/${{ github.event.repository.name }}/README.md" - - name: Commit release repo - run: | - cd "release_repo" - git config user.name github-actions - git config user.email github-actions@github.com - git checkout --orphan newBranch - git add -A - git commit -m "release" - git branch -D main - git branch -m main - git push -f origin main \ No newline at end of file