CMakeLists.txt #29
Workflow file for this run
This file contains 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, pull_request] | |
env: | |
# Checks for the '[debug]' string in the commit message to compile as debug instead of release. | |
build_type: ${{ contains(github.event.head_commit.message, '[debug]') && 'Debug' || 'Release' }} | |
# Checks whether the event corresponds to a tag to activate the automatic creation of a release. | |
is_tagged: ${{ startsWith(github.ref, 'refs/tags/') }} | |
# The name of the version | |
tag_name: ${{ startsWith(github.ref, 'refs/tags/') && github.ref_name || ''}} | |
jobs: | |
# Checks source code formatting with clang before compiling. | |
Format: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Check | |
uses: jidicula/[email protected] | |
with: | |
clang-format-version: '18' | |
check-path: 'Source' | |
# Compiles, tests and packages the plugin for Ubuntu. | |
Ubuntu: | |
runs-on: ubuntu-latest | |
needs: Format | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: seanmiddleditch/gha-setup-ninja@master | |
- name: Prepare | |
run: sudo apt update && sudo apt install libasound2-dev libjack-jackd2-dev ladspa-sdk libcurl4-openssl-dev libfreetype6-dev libx11-dev libxcomposite-dev libxcursor-dev libxcursor-dev libxext-dev libxinerama-dev libxrandr-dev libxrender-dev libwebkit2gtk-4.0-dev libglu1-mesa-dev mesa-common-dev | |
- name: Configure | |
run: cmake -B ${{ github.workspace }}/build -G Ninja -DCMAKE_BUILD_TYPE=${{ env.build_type }} -DCMAKE_C_COMPILER="/usr/bin/clang" -DCMAKE_CXX_COMPILER="/usr/bin/clang++" -DPARTIELS_BUILD_TAG=${{ env.tag_name }} | |
- name: Build | |
run: cmake --build ${{ github.workspace }}/build | |
- name: Test | |
run: ctest -C ${{ env.build_type }} -VV --test-dir ${{ github.workspace }}/build | |
- name: Artifact | |
uses: actions/[email protected] | |
with: | |
name: Partiels-Linux | |
path: ${{ github.workspace }}/Package/Partiels-Linux.tar.gz | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: ${{ env.is_tagged == 'true' }} | |
with: | |
draft: true | |
prerelease: true | |
fail_on_unmatched_files: true | |
generate_release_notes: true | |
body_path: ${{ github.workspace }}/build/Partiels-Release.md | |
files: ${{ github.workspace }}/Package/Partiels-Linux.tar.gz | |
# Compiles, tests and packages the plugin for Windows. | |
Windows: | |
runs-on: windows-latest | |
needs: Format | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Prepare | |
run: powershell -Command "& {[System.IO.File]::WriteAllBytes('${{ github.workspace }}\cert.p12', [System.Convert]::FromBase64String('${{ secrets.SECTIGO_CERT_P12}}'))}" | |
- name: Configure | |
run: cmake -B ${{ github.workspace }}/build -G "Visual Studio 17 2022" -A x64 -DPARTIELS_NOTARIZE=ON -DPARTIELS_CODESIGN_WINDOWS_KEYFILE=${{ github.workspace }}\cert.p12 -DPARTIELS_CODESIGN_WINDOWS_KEYPASSWORD=${{ secrets.DEV_ID_PASSWORD }} -DPARTIELS_BUILD_TAG="${{ env.tag_name }}" | |
- name: Build | |
run: cmake --build ${{ github.workspace }}/build --config ${{ env.build_type }} | |
- name: Test | |
run: ctest -C ${{ env.build_type }} -VV --test-dir ${{ github.workspace }}/build | |
- name: Artifact | |
uses: actions/[email protected] | |
with: | |
name: Partiels-Windows | |
path: ${{ github.workspace }}/Package/Partiels-Windows.exe | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: ${{ env.is_tagged == 'true' }} | |
with: | |
draft: true | |
prerelease: true | |
fail_on_unmatched_files: true | |
generate_release_notes: true | |
body_path: ${{ github.workspace }}/build/Partiels-Release.md | |
files: ${{ github.workspace }}/Package/Partiels-Windows.exe | |
# Compiles, tests and packages the plugin for MacOS. | |
MacOS: | |
runs-on: macos-latest | |
needs: Format | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Prepare | |
run: | | |
security create-keychain -p ${{ secrets.DEV_ID_PASSWORD }} buildagent | |
security unlock-keychain -p ${{ secrets.DEV_ID_PASSWORD }} buildagent | |
security list-keychains -s buildagent && security default-keychain -s buildagent | |
echo ${{ secrets.DEV_ID_APP_CERT }} | base64 --decode > ./cert.p12 | |
security import ./cert.p12 -P ${{ secrets.DEV_ID_PASSWORD }} -A -t cert -f pkcs12 -k buildagent -T /usr/bin/codesign >/dev/null | |
rm ./cert.p12 | |
echo ${{ secrets.DEV_ID_INST_CERT }} | base64 --decode > ./cert.p12 | |
security import ./cert.p12 -P ${{ secrets.DEV_ID_PASSWORD }} -A -t cert -f pkcs12 -k buildagent -T /usr/bin/codesign >/dev/null | |
rm ./cert.p12 | |
security set-key-partition-list -S "apple-tool:,apple:,codesign:" -s -k ${{ secrets.DEV_ID_PASSWORD }} buildagent >/dev/null | |
xcrun notarytool store-credentials "notary-installer" --apple-id ${{ secrets.DEV_USER_APPLE_ID }} --team-id ${{ secrets.DEV_TEAM_APPLE_ID }} --password ${{ secrets.DEV_SPEC_APP_PASSWORD }} >/dev/null | |
echo ${{ secrets.PARTIELS_PROVISIONPROFILE }} | base64 --decode > ./Application_Partiels.provisionprofile | |
ppuuid=`grep UUID -A1 -a ./Application_Partiels.provisionprofile | grep -io "[-A-F0-9]\{36\}"` | |
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles/ | |
cp Application_Partiels.provisionprofile ~/Library/MobileDevice/Provisioning\ Profiles/$ppuuid.mobileprovision | |
rm ./Application_Partiels.provisionprofile | |
- name: Configure | |
run: cmake -B ${{ github.workspace }}/build -G "Xcode" -DPARTIELS_PROVISIONING_PROFILE_SPECIFIER="Application Partiels" -DPARTIELS_DEVELOPMENT_TEAM="${{ secrets.DEV_TEAM_APPLE_ID }}" -DPARTIELS_BUILD_TAG=${{ env.tag_name }} | |
- name: Build | |
run: | | |
security unlock-keychain -p ${{ secrets.DEV_ID_PASSWORD }} buildagent | |
security set-keychain-settings -lut 7200 buildagent | |
set -o pipefail && cmake --build ${{ github.workspace }}/build --config ${{ env.build_type }} | xcbeautify --renderer github-actions --disable-logging | |
- name: Test | |
run: ctest -C ${{ env.build_type }} -VV --test-dir ${{ github.workspace }}/build | |
- name: Archive | |
run: | | |
security unlock-keychain -p ${{ secrets.DEV_ID_PASSWORD }} buildagent | |
security set-keychain-settings -lut 7200 buildagent | |
set -o pipefail xcodebuild archive -project "${{ github.workspace }}/build/Partiels.xcodeproj" -configuration ${{ env.build_type }} -scheme "Partiels" -archivePath "${{ github.workspace }}/build/partiels.xcarchive" -destination platform=macOS | xcbeautify --renderer github-actions --disable-logging | |
- name: Export | |
run: xcodebuild -exportArchive -archivePath "${{ github.workspace }}/build/Partiels.xcarchive" -exportPath "${{ github.workspace }}/build" -exportOptionsPlist "${{ github.workspace }}/BinaryData/Resource/macos-export-archive.plist" || { exit 1; } | |
- name: Uploading | |
run: | | |
ditto -c -k --keepParent "${{ github.workspace }}/build/Partiels.app" "${{ github.workspace }}/build/Partiels.zip" | |
xcrun notarytool submit "${{ github.workspace }}/build/Partiels.zip" --keychain-profile "notary-installer" --wait > "${{ github.workspace }}/build/notarize.log" 2>&1 | |
cat "${{ github.workspace }}/build/notarize.log" | |
notaryid=$(awk '/^ id:/{sub(/^ id:/, ""); print; exit}' "${{ github.workspace }}/build/notarize.log") | |
xcrun notarytool log $notaryid --keychain-profile "notary-installer" | |
xcrun stapler staple "${{ github.workspace }}/build/Partiels.app" || { exit 1; } | |
xcrun stapler validate "${{ github.workspace }}/build/Partiels.app" || { exit 1; } | |
- name: Artifact | |
uses: actions/[email protected] | |
with: | |
name: Partiels-MacOS | |
path: ${{ github.workspace }}/Package/Partiels-MacOS.pkg | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: ${{ env.is_tagged == 'true' }} | |
with: | |
draft: true | |
prerelease: true | |
fail_on_unmatched_files: true | |
generate_release_notes: true | |
body_path: ${{ github.workspace }}/build/Partiels-Release.md | |
files: ${{ github.workspace }}/Package/Partiels-MacOS.pkg | |
# Generates the documentation. | |
Doc: | |
runs-on: ubuntu-latest | |
needs: Format | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- run: npm install -g git+https://github.com/elliotblackburn/mdpdf.git#3.0.4 | |
- name: Prepare | |
run: sudo apt update && sudo apt install libasound2-dev libjack-jackd2-dev ladspa-sdk libcurl4-openssl-dev libfreetype6-dev libx11-dev libxcomposite-dev libxcursor-dev libxcursor-dev libxext-dev libxinerama-dev libxrandr-dev libxrender-dev libwebkit2gtk-4.0-dev libglu1-mesa-dev mesa-common-dev | |
- name: Configure | |
run: cmake -B ${{ github.workspace }}/build -DCMAKE_BUILD_TYPE=${{ env.build_type }} -DPARTIELS_BUILD_TAG=${{ env.tag_name }} | |
- name: Build | |
run: | | |
cmake --build build --target PartielsManual | |
zip -jr Partiels-Manual.zip ${{ github.workspace }}/build/Manual | |
- name: Artifact | |
uses: actions/[email protected] | |
with: | |
name: Partiels-Manual | |
path: ${{ github.workspace }}/Partiels-Manual.zip | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: ${{ env.is_tagged == 'true' }} | |
with: | |
draft: true | |
prerelease: true | |
fail_on_unmatched_files: true | |
generate_release_notes: true | |
body_path: ${{ github.workspace }}/build/Partiels-Release.md | |
files: ${{ github.workspace }}/Partiels-Manual.zip |