From 448df24f748215b0a3e7a0d135fa343b1d0fc11a Mon Sep 17 00:00:00 2001 From: Ricky Wu Date: Mon, 25 May 2026 23:03:17 +0800 Subject: [PATCH 1/6] ci: add release workflow for Windows, macOS, and Ubuntu --- .github/workflows/release.yaml | 261 +++++++++++++++++++++++++++++++++ 1 file changed, 261 insertions(+) create mode 100644 .github/workflows/release.yaml diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..e1f07ce --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,261 @@ +name: release + +on: + workflow_dispatch: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+' + +env: + PJ_TAG: '3.17.2' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + + windows: + runs-on: windows-latest + permissions: + contents: write + env: + CXXFLAGS: /MP + CPM_SOURCE_CACHE: ${{ runner.temp }}/cpm_cache + + steps: + - name: Checkout PlotJuggler-Drone + uses: actions/checkout@v6 + with: + path: drone + + - name: Clone PlotJuggler ${{ env.PJ_TAG }} + shell: pwsh + run: | + git clone --depth 1 --branch ${{ env.PJ_TAG }} ` + https://github.com/facontidavide/PlotJuggler.git PlotJuggler + + - name: Install Qt + uses: jurplel/install-qt-action@v4 + with: + version: '5.15.*' + arch: 'win64_msvc2019_64' + dir: '${{ github.workspace }}/qt_installation/' + cache: 'true' + + - name: Cache CPM packages + uses: actions/cache@v5 + with: + path: ${{ runner.temp }}/cpm_cache + key: cpm-windows-pj-${{ env.PJ_TAG }} + restore-keys: cpm-windows- + + - name: Configure PlotJuggler + shell: pwsh + run: | + cmake -S PlotJuggler -B pj_build ` + -A x64 ` + -DPJ_INSTALLATION=windows ` + -DPJ_PLUGINS_DIRECTORY=bin + + - name: Build PlotJuggler + shell: pwsh + run: cmake --build pj_build --config Release + + - name: Install PlotJuggler + shell: pwsh + run: cmake --install pj_build --prefix pj_install --config Release + + - name: Configure drone plugins + shell: pwsh + run: | + cmake -S drone -B drone_build ` + -A x64 ` + "-DPJ_INSTALL=${{ github.workspace }}/pj_install" + + - name: Build drone plugins + shell: pwsh + run: cmake --build drone_build --config Release + + - name: Package plugins + shell: pwsh + run: | + $ref = "${{ github.ref_name }}" -replace '/', '-' + $zipName = "PlotJuggler-Drone-$ref-Windows-x64.zip" + Compress-Archive -Path drone_build/bin/Release/*.dll -DestinationPath $zipName + "ZIP_NAME=$zipName" | Out-File -FilePath $env:GITHUB_ENV -Append + + - name: Upload artifact + uses: actions/upload-artifact@v7 + with: + name: ${{ env.ZIP_NAME }} + path: ${{ env.ZIP_NAME }} + + - name: Upload to Release + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v3 + with: + files: ${{ env.ZIP_NAME }} + fail_on_unmatched_files: true + + macos: + runs-on: ${{ matrix.os }} + permissions: + contents: write + strategy: + fail-fast: false + matrix: + include: + - os: macos-14 + arch: arm64 + - os: macos-13 + arch: x86_64 + env: + CPM_SOURCE_CACHE: ${{ runner.temp }}/cpm_cache + + steps: + - name: Checkout PlotJuggler-Drone + uses: actions/checkout@v6 + with: + path: drone + + - name: Clone PlotJuggler ${{ env.PJ_TAG }} + run: | + git clone --depth 1 --branch ${{ env.PJ_TAG }} \ + https://github.com/facontidavide/PlotJuggler.git PlotJuggler + + - name: Install Qt5 via Homebrew + uses: tecolicom/actions-use-homebrew-tools@v1 + with: + tools: qt@5 + cache: yes + + - name: Cache CPM packages + uses: actions/cache@v5 + with: + path: ${{ runner.temp }}/cpm_cache + key: cpm-macos-${{ matrix.arch }}-pj-${{ env.PJ_TAG }} + restore-keys: cpm-macos-${{ matrix.arch }}- + + - name: Configure PlotJuggler + run: | + cmake -S PlotJuggler -B pj_build \ + -DCMAKE_BUILD_TYPE=Release \ + "-DCMAKE_PREFIX_PATH=$(brew --prefix qt@5)" + + - name: Build PlotJuggler + run: cmake --build pj_build -- -j$(sysctl -n hw.logicalcpu) + + - name: Install PlotJuggler + run: cmake --install pj_build --prefix pj_install + + - name: Configure drone plugins + run: | + cmake -S drone -B drone_build \ + -DCMAKE_BUILD_TYPE=Release \ + -DPJ_INSTALL=${{ github.workspace }}/pj_install \ + "-DCMAKE_PREFIX_PATH=$(brew --prefix qt@5)" + + - name: Build drone plugins + run: cmake --build drone_build -- -j$(sysctl -n hw.logicalcpu) + + - name: Package plugins + run: | + SAFE_REF="${GITHUB_REF_NAME//\//-}" + ZIP_NAME="PlotJuggler-Drone-${SAFE_REF}-macOS-${{ matrix.arch }}.zip" + zip -j "$ZIP_NAME" drone_build/bin/*.dylib + echo "ZIP_NAME=$ZIP_NAME" >> "$GITHUB_ENV" + + - name: Upload artifact + uses: actions/upload-artifact@v7 + with: + name: ${{ env.ZIP_NAME }} + path: ${{ env.ZIP_NAME }} + + - name: Upload to Release + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v3 + with: + files: ${{ env.ZIP_NAME }} + fail_on_unmatched_files: true + + ubuntu: + runs-on: ubuntu-22.04 + permissions: + contents: write + env: + CPM_SOURCE_CACHE: ${{ runner.temp }}/cpm_cache + + steps: + - name: Checkout PlotJuggler-Drone + uses: actions/checkout@v6 + with: + path: drone + + - name: Clone PlotJuggler ${{ env.PJ_TAG }} + run: | + git clone --depth 1 --branch ${{ env.PJ_TAG }} \ + https://github.com/facontidavide/PlotJuggler.git PlotJuggler + + - name: Install Qt5 and build dependencies + uses: awalsh128/cache-apt-pkgs-action@latest + with: + packages: > + qtbase5-dev + libqt5svg5-dev + libqt5websockets5-dev + libqt5opengl5-dev + libqt5x11extras5-dev + libqt5serialport5-dev + libprotoc-dev + libmosquitto-dev + libcurl4-openssl-dev + zip + version: 1.0 + + - name: Cache CPM packages + uses: actions/cache@v5 + with: + path: ${{ runner.temp }}/cpm_cache + key: cpm-ubuntu-pj-${{ env.PJ_TAG }} + restore-keys: cpm-ubuntu- + + - name: Configure PlotJuggler + run: | + cmake -S PlotJuggler -B pj_build \ + -DCMAKE_BUILD_TYPE=Release + + - name: Build PlotJuggler + run: cmake --build pj_build -- -j$(nproc) + + - name: Install PlotJuggler + run: cmake --install pj_build --prefix pj_install + + - name: Configure drone plugins + run: | + cmake -S drone -B drone_build \ + -DCMAKE_BUILD_TYPE=Release \ + -DPJ_INSTALL=${{ github.workspace }}/pj_install + + - name: Build drone plugins + run: cmake --build drone_build -- -j$(nproc) + + - name: Package plugins + run: | + SAFE_REF="${GITHUB_REF_NAME//\//-}" + ZIP_NAME="PlotJuggler-Drone-${SAFE_REF}-Ubuntu-x86_64.zip" + zip -j "$ZIP_NAME" drone_build/bin/*.so + echo "ZIP_NAME=$ZIP_NAME" >> "$GITHUB_ENV" + + - name: Upload artifact + uses: actions/upload-artifact@v7 + with: + name: ${{ env.ZIP_NAME }} + path: ${{ env.ZIP_NAME }} + + - name: Upload to Release + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v3 + with: + files: ${{ env.ZIP_NAME }} + fail_on_unmatched_files: true From d024f4e96a7b4e1cc5559500b206f8cf9fee71ae Mon Sep 17 00:00:00 2001 From: Ricky Wu Date: Mon, 25 May 2026 23:09:55 +0800 Subject: [PATCH 2/6] fix: replace runner.temp with github.workspace in job-level env --- .github/workflows/release.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index e1f07ce..79cdb53 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -21,7 +21,7 @@ jobs: contents: write env: CXXFLAGS: /MP - CPM_SOURCE_CACHE: ${{ runner.temp }}/cpm_cache + CPM_SOURCE_CACHE: ${{ github.workspace }}/cpm_cache steps: - name: Checkout PlotJuggler-Drone @@ -46,7 +46,7 @@ jobs: - name: Cache CPM packages uses: actions/cache@v5 with: - path: ${{ runner.temp }}/cpm_cache + path: ${{ github.workspace }}/cpm_cache key: cpm-windows-pj-${{ env.PJ_TAG }} restore-keys: cpm-windows- @@ -111,7 +111,7 @@ jobs: - os: macos-13 arch: x86_64 env: - CPM_SOURCE_CACHE: ${{ runner.temp }}/cpm_cache + CPM_SOURCE_CACHE: ${{ github.workspace }}/cpm_cache steps: - name: Checkout PlotJuggler-Drone @@ -133,7 +133,7 @@ jobs: - name: Cache CPM packages uses: actions/cache@v5 with: - path: ${{ runner.temp }}/cpm_cache + path: ${{ github.workspace }}/cpm_cache key: cpm-macos-${{ matrix.arch }}-pj-${{ env.PJ_TAG }} restore-keys: cpm-macos-${{ matrix.arch }}- @@ -184,7 +184,7 @@ jobs: permissions: contents: write env: - CPM_SOURCE_CACHE: ${{ runner.temp }}/cpm_cache + CPM_SOURCE_CACHE: ${{ github.workspace }}/cpm_cache steps: - name: Checkout PlotJuggler-Drone @@ -216,7 +216,7 @@ jobs: - name: Cache CPM packages uses: actions/cache@v5 with: - path: ${{ runner.temp }}/cpm_cache + path: ${{ github.workspace }}/cpm_cache key: cpm-ubuntu-pj-${{ env.PJ_TAG }} restore-keys: cpm-ubuntu- From d83c702792cb82b5365f3bfb15271f46a5cd8ed2 Mon Sep 17 00:00:00 2001 From: Ricky Wu Date: Thu, 28 May 2026 22:05:31 +0800 Subject: [PATCH 3/6] ci: split monolithic release workflow into per-platform files --- .github/workflows/release-macos.yaml | 111 +++++++++++ .github/workflows/release-ubuntu.yaml | 111 +++++++++++ .github/workflows/release-windows.yaml | 113 +++++++++++ .github/workflows/release.yaml | 261 ------------------------- 4 files changed, 335 insertions(+), 261 deletions(-) create mode 100644 .github/workflows/release-macos.yaml create mode 100644 .github/workflows/release-ubuntu.yaml create mode 100644 .github/workflows/release-windows.yaml delete mode 100644 .github/workflows/release.yaml diff --git a/.github/workflows/release-macos.yaml b/.github/workflows/release-macos.yaml new file mode 100644 index 0000000..079e57e --- /dev/null +++ b/.github/workflows/release-macos.yaml @@ -0,0 +1,111 @@ +name: Release / macOS + +on: + workflow_dispatch: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+' + +env: + PJ_TAG: '3.17.2' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.arch }} + cancel-in-progress: true + +jobs: + macos: + runs-on: ${{ matrix.os }} + permissions: + contents: write + strategy: + fail-fast: false + matrix: + include: + - os: macos-14 + arch: arm64 + - os: macos-13 + arch: x86_64 + env: + CPM_SOURCE_CACHE: ${{ github.workspace }}/cpm_cache + + steps: + - name: Checkout PlotJuggler-Drone + uses: actions/checkout@v6 + with: + path: drone + submodules: recursive + shallow-submodules: true + + - name: Cache PlotJuggler install + id: cache-pj + uses: actions/cache@v5 + with: + path: pj_install + key: pj-install-macos-${{ matrix.arch }}-${{ env.PJ_TAG }} + + - name: Clone PlotJuggler ${{ env.PJ_TAG }} + if: steps.cache-pj.outputs.cache-hit != 'true' + run: | + git clone --depth 1 --branch ${{ env.PJ_TAG }} \ + https://github.com/facontidavide/PlotJuggler.git PlotJuggler + + - name: Install Qt5 via Homebrew + uses: tecolicom/actions-use-homebrew-tools@v1 + with: + tools: qt@5 + cache: yes + + - name: Cache CPM packages + if: steps.cache-pj.outputs.cache-hit != 'true' + uses: actions/cache@v5 + with: + path: ${{ github.workspace }}/cpm_cache + key: cpm-macos-${{ matrix.arch }}-pj-${{ env.PJ_TAG }} + restore-keys: cpm-macos-${{ matrix.arch }}- + + - name: Configure PlotJuggler + if: steps.cache-pj.outputs.cache-hit != 'true' + run: | + cmake -S PlotJuggler -B pj_build \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/pj_install \ + "-DCMAKE_PREFIX_PATH=$(brew --prefix qt@5)" + + - name: Build PlotJuggler + if: steps.cache-pj.outputs.cache-hit != 'true' + run: cmake --build pj_build -- -j$(sysctl -n hw.logicalcpu) + + - name: Install PlotJuggler + if: steps.cache-pj.outputs.cache-hit != 'true' + run: cmake --install pj_build + + - name: Configure drone plugins + run: | + cmake -S drone -B drone_build \ + -DCMAKE_BUILD_TYPE=Release \ + -DPJ_INSTALL=${{ github.workspace }}/pj_install \ + "-DCMAKE_PREFIX_PATH=$(brew --prefix qt@5)" + + - name: Build drone plugins + run: cmake --build drone_build -- -j$(sysctl -n hw.logicalcpu) + + - name: Package plugins + run: | + SAFE_REF="${GITHUB_REF_NAME//\//-}" + ZIP_NAME="PlotJuggler-Drone-${SAFE_REF}-macOS-${{ matrix.arch }}.zip" + zip -j "$ZIP_NAME" drone_build/bin/*.dylib + echo "ZIP_NAME=$ZIP_NAME" >> "$GITHUB_ENV" + + - name: Upload artifact + uses: actions/upload-artifact@v7 + with: + name: ${{ env.ZIP_NAME }} + path: ${{ env.ZIP_NAME }} + + - name: Upload to Release + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v3 + with: + files: ${{ env.ZIP_NAME }} + fail_on_unmatched_files: true diff --git a/.github/workflows/release-ubuntu.yaml b/.github/workflows/release-ubuntu.yaml new file mode 100644 index 0000000..068e437 --- /dev/null +++ b/.github/workflows/release-ubuntu.yaml @@ -0,0 +1,111 @@ +name: Release / Ubuntu + +on: + workflow_dispatch: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+' + +env: + PJ_TAG: '3.17.2' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + ubuntu: + runs-on: ubuntu-22.04 + permissions: + contents: write + env: + CPM_SOURCE_CACHE: ${{ github.workspace }}/cpm_cache + + steps: + - name: Checkout PlotJuggler-Drone + uses: actions/checkout@v6 + with: + path: drone + submodules: recursive + shallow-submodules: true + + - name: Cache PlotJuggler install + id: cache-pj + uses: actions/cache@v5 + with: + path: pj_install + key: pj-install-ubuntu-${{ env.PJ_TAG }} + + - name: Clone PlotJuggler ${{ env.PJ_TAG }} + if: steps.cache-pj.outputs.cache-hit != 'true' + run: | + git clone --depth 1 --branch ${{ env.PJ_TAG }} \ + https://github.com/facontidavide/PlotJuggler.git PlotJuggler + + - name: Install Qt5 and build dependencies + uses: awalsh128/cache-apt-pkgs-action@v1 + with: + packages: > + qtbase5-dev + libqt5svg5-dev + libqt5websockets5-dev + libqt5opengl5-dev + libqt5x11extras5-dev + libqt5serialport5-dev + libprotoc-dev + libmosquitto-dev + libcurl4-openssl-dev + zip + version: 1.0 + + - name: Cache CPM packages + if: steps.cache-pj.outputs.cache-hit != 'true' + uses: actions/cache@v5 + with: + path: ${{ github.workspace }}/cpm_cache + key: cpm-ubuntu-pj-${{ env.PJ_TAG }} + restore-keys: cpm-ubuntu- + + - name: Configure PlotJuggler + if: steps.cache-pj.outputs.cache-hit != 'true' + run: | + cmake -S PlotJuggler -B pj_build \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/pj_install + + - name: Build PlotJuggler + if: steps.cache-pj.outputs.cache-hit != 'true' + run: cmake --build pj_build -- -j$(nproc) + + - name: Install PlotJuggler + if: steps.cache-pj.outputs.cache-hit != 'true' + run: cmake --install pj_build + + - name: Configure drone plugins + run: | + cmake -S drone -B drone_build \ + -DCMAKE_BUILD_TYPE=Release \ + -DPJ_INSTALL=${{ github.workspace }}/pj_install + + - name: Build drone plugins + run: cmake --build drone_build -- -j$(nproc) + + - name: Package plugins + run: | + SAFE_REF="${GITHUB_REF_NAME//\//-}" + ZIP_NAME="PlotJuggler-Drone-${SAFE_REF}-Ubuntu-x86_64.zip" + zip -j "$ZIP_NAME" drone_build/bin/*.so + echo "ZIP_NAME=$ZIP_NAME" >> "$GITHUB_ENV" + + - name: Upload artifact + uses: actions/upload-artifact@v7 + with: + name: ${{ env.ZIP_NAME }} + path: ${{ env.ZIP_NAME }} + + - name: Upload to Release + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v3 + with: + files: ${{ env.ZIP_NAME }} + fail_on_unmatched_files: true diff --git a/.github/workflows/release-windows.yaml b/.github/workflows/release-windows.yaml new file mode 100644 index 0000000..0a9f3d9 --- /dev/null +++ b/.github/workflows/release-windows.yaml @@ -0,0 +1,113 @@ +name: Release / Windows + +on: + workflow_dispatch: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+' + +env: + PJ_TAG: '3.17.2' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + windows: + runs-on: windows-latest + permissions: + contents: write + env: + CXXFLAGS: /MP + CPM_SOURCE_CACHE: ${{ github.workspace }}/cpm_cache + + steps: + - name: Checkout PlotJuggler-Drone + uses: actions/checkout@v6 + with: + path: drone + submodules: recursive + shallow-submodules: true + + - name: Cache PlotJuggler install + id: cache-pj + uses: actions/cache@v5 + with: + path: pj_install + key: pj-install-windows-${{ env.PJ_TAG }} + + - name: Clone PlotJuggler ${{ env.PJ_TAG }} + if: steps.cache-pj.outputs.cache-hit != 'true' + shell: pwsh + run: | + git clone --depth 1 --branch ${{ env.PJ_TAG }} ` + https://github.com/facontidavide/PlotJuggler.git PlotJuggler + + - name: Install Qt + uses: jurplel/install-qt-action@v4 + with: + version: '5.15.*' + arch: 'win64_msvc2019_64' + dir: '${{ github.workspace }}/qt_installation/' + cache: 'true' + + - name: Cache CPM packages + if: steps.cache-pj.outputs.cache-hit != 'true' + uses: actions/cache@v5 + with: + path: ${{ github.workspace }}/cpm_cache + key: cpm-windows-pj-${{ env.PJ_TAG }} + restore-keys: cpm-windows- + + - name: Configure PlotJuggler + if: steps.cache-pj.outputs.cache-hit != 'true' + shell: pwsh + run: | + cmake -S PlotJuggler -B pj_build ` + -A x64 ` + -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/pj_install" ` + -DPJ_INSTALLATION=windows ` + -DPJ_PLUGINS_DIRECTORY=bin + + - name: Build PlotJuggler + if: steps.cache-pj.outputs.cache-hit != 'true' + shell: pwsh + run: cmake --build pj_build --config Release --parallel + + - name: Install PlotJuggler + if: steps.cache-pj.outputs.cache-hit != 'true' + shell: pwsh + run: cmake --install pj_build --config Release + + - name: Configure drone plugins + shell: pwsh + run: | + cmake -S drone -B drone_build ` + -A x64 ` + "-DPJ_INSTALL=${{ github.workspace }}/pj_install" + + - name: Build drone plugins + shell: pwsh + run: cmake --build drone_build --config Release --parallel + + - name: Package plugins + shell: pwsh + run: | + $ref = "${{ github.ref_name }}" -replace '/', '-' + $zipName = "PlotJuggler-Drone-$ref-Windows-x64.zip" + Compress-Archive -Path drone_build/bin/Release/*.dll -DestinationPath $zipName + "ZIP_NAME=$zipName" | Out-File -FilePath $env:GITHUB_ENV -Append + + - name: Upload artifact + uses: actions/upload-artifact@v7 + with: + name: ${{ env.ZIP_NAME }} + path: ${{ env.ZIP_NAME }} + + - name: Upload to Release + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v3 + with: + files: ${{ env.ZIP_NAME }} + fail_on_unmatched_files: true diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml deleted file mode 100644 index 79cdb53..0000000 --- a/.github/workflows/release.yaml +++ /dev/null @@ -1,261 +0,0 @@ -name: release - -on: - workflow_dispatch: - push: - tags: - - '[0-9]+.[0-9]+.[0-9]+' - -env: - PJ_TAG: '3.17.2' - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - - windows: - runs-on: windows-latest - permissions: - contents: write - env: - CXXFLAGS: /MP - CPM_SOURCE_CACHE: ${{ github.workspace }}/cpm_cache - - steps: - - name: Checkout PlotJuggler-Drone - uses: actions/checkout@v6 - with: - path: drone - - - name: Clone PlotJuggler ${{ env.PJ_TAG }} - shell: pwsh - run: | - git clone --depth 1 --branch ${{ env.PJ_TAG }} ` - https://github.com/facontidavide/PlotJuggler.git PlotJuggler - - - name: Install Qt - uses: jurplel/install-qt-action@v4 - with: - version: '5.15.*' - arch: 'win64_msvc2019_64' - dir: '${{ github.workspace }}/qt_installation/' - cache: 'true' - - - name: Cache CPM packages - uses: actions/cache@v5 - with: - path: ${{ github.workspace }}/cpm_cache - key: cpm-windows-pj-${{ env.PJ_TAG }} - restore-keys: cpm-windows- - - - name: Configure PlotJuggler - shell: pwsh - run: | - cmake -S PlotJuggler -B pj_build ` - -A x64 ` - -DPJ_INSTALLATION=windows ` - -DPJ_PLUGINS_DIRECTORY=bin - - - name: Build PlotJuggler - shell: pwsh - run: cmake --build pj_build --config Release - - - name: Install PlotJuggler - shell: pwsh - run: cmake --install pj_build --prefix pj_install --config Release - - - name: Configure drone plugins - shell: pwsh - run: | - cmake -S drone -B drone_build ` - -A x64 ` - "-DPJ_INSTALL=${{ github.workspace }}/pj_install" - - - name: Build drone plugins - shell: pwsh - run: cmake --build drone_build --config Release - - - name: Package plugins - shell: pwsh - run: | - $ref = "${{ github.ref_name }}" -replace '/', '-' - $zipName = "PlotJuggler-Drone-$ref-Windows-x64.zip" - Compress-Archive -Path drone_build/bin/Release/*.dll -DestinationPath $zipName - "ZIP_NAME=$zipName" | Out-File -FilePath $env:GITHUB_ENV -Append - - - name: Upload artifact - uses: actions/upload-artifact@v7 - with: - name: ${{ env.ZIP_NAME }} - path: ${{ env.ZIP_NAME }} - - - name: Upload to Release - if: startsWith(github.ref, 'refs/tags/') - uses: softprops/action-gh-release@v3 - with: - files: ${{ env.ZIP_NAME }} - fail_on_unmatched_files: true - - macos: - runs-on: ${{ matrix.os }} - permissions: - contents: write - strategy: - fail-fast: false - matrix: - include: - - os: macos-14 - arch: arm64 - - os: macos-13 - arch: x86_64 - env: - CPM_SOURCE_CACHE: ${{ github.workspace }}/cpm_cache - - steps: - - name: Checkout PlotJuggler-Drone - uses: actions/checkout@v6 - with: - path: drone - - - name: Clone PlotJuggler ${{ env.PJ_TAG }} - run: | - git clone --depth 1 --branch ${{ env.PJ_TAG }} \ - https://github.com/facontidavide/PlotJuggler.git PlotJuggler - - - name: Install Qt5 via Homebrew - uses: tecolicom/actions-use-homebrew-tools@v1 - with: - tools: qt@5 - cache: yes - - - name: Cache CPM packages - uses: actions/cache@v5 - with: - path: ${{ github.workspace }}/cpm_cache - key: cpm-macos-${{ matrix.arch }}-pj-${{ env.PJ_TAG }} - restore-keys: cpm-macos-${{ matrix.arch }}- - - - name: Configure PlotJuggler - run: | - cmake -S PlotJuggler -B pj_build \ - -DCMAKE_BUILD_TYPE=Release \ - "-DCMAKE_PREFIX_PATH=$(brew --prefix qt@5)" - - - name: Build PlotJuggler - run: cmake --build pj_build -- -j$(sysctl -n hw.logicalcpu) - - - name: Install PlotJuggler - run: cmake --install pj_build --prefix pj_install - - - name: Configure drone plugins - run: | - cmake -S drone -B drone_build \ - -DCMAKE_BUILD_TYPE=Release \ - -DPJ_INSTALL=${{ github.workspace }}/pj_install \ - "-DCMAKE_PREFIX_PATH=$(brew --prefix qt@5)" - - - name: Build drone plugins - run: cmake --build drone_build -- -j$(sysctl -n hw.logicalcpu) - - - name: Package plugins - run: | - SAFE_REF="${GITHUB_REF_NAME//\//-}" - ZIP_NAME="PlotJuggler-Drone-${SAFE_REF}-macOS-${{ matrix.arch }}.zip" - zip -j "$ZIP_NAME" drone_build/bin/*.dylib - echo "ZIP_NAME=$ZIP_NAME" >> "$GITHUB_ENV" - - - name: Upload artifact - uses: actions/upload-artifact@v7 - with: - name: ${{ env.ZIP_NAME }} - path: ${{ env.ZIP_NAME }} - - - name: Upload to Release - if: startsWith(github.ref, 'refs/tags/') - uses: softprops/action-gh-release@v3 - with: - files: ${{ env.ZIP_NAME }} - fail_on_unmatched_files: true - - ubuntu: - runs-on: ubuntu-22.04 - permissions: - contents: write - env: - CPM_SOURCE_CACHE: ${{ github.workspace }}/cpm_cache - - steps: - - name: Checkout PlotJuggler-Drone - uses: actions/checkout@v6 - with: - path: drone - - - name: Clone PlotJuggler ${{ env.PJ_TAG }} - run: | - git clone --depth 1 --branch ${{ env.PJ_TAG }} \ - https://github.com/facontidavide/PlotJuggler.git PlotJuggler - - - name: Install Qt5 and build dependencies - uses: awalsh128/cache-apt-pkgs-action@latest - with: - packages: > - qtbase5-dev - libqt5svg5-dev - libqt5websockets5-dev - libqt5opengl5-dev - libqt5x11extras5-dev - libqt5serialport5-dev - libprotoc-dev - libmosquitto-dev - libcurl4-openssl-dev - zip - version: 1.0 - - - name: Cache CPM packages - uses: actions/cache@v5 - with: - path: ${{ github.workspace }}/cpm_cache - key: cpm-ubuntu-pj-${{ env.PJ_TAG }} - restore-keys: cpm-ubuntu- - - - name: Configure PlotJuggler - run: | - cmake -S PlotJuggler -B pj_build \ - -DCMAKE_BUILD_TYPE=Release - - - name: Build PlotJuggler - run: cmake --build pj_build -- -j$(nproc) - - - name: Install PlotJuggler - run: cmake --install pj_build --prefix pj_install - - - name: Configure drone plugins - run: | - cmake -S drone -B drone_build \ - -DCMAKE_BUILD_TYPE=Release \ - -DPJ_INSTALL=${{ github.workspace }}/pj_install - - - name: Build drone plugins - run: cmake --build drone_build -- -j$(nproc) - - - name: Package plugins - run: | - SAFE_REF="${GITHUB_REF_NAME//\//-}" - ZIP_NAME="PlotJuggler-Drone-${SAFE_REF}-Ubuntu-x86_64.zip" - zip -j "$ZIP_NAME" drone_build/bin/*.so - echo "ZIP_NAME=$ZIP_NAME" >> "$GITHUB_ENV" - - - name: Upload artifact - uses: actions/upload-artifact@v7 - with: - name: ${{ env.ZIP_NAME }} - path: ${{ env.ZIP_NAME }} - - - name: Upload to Release - if: startsWith(github.ref, 'refs/tags/') - uses: softprops/action-gh-release@v3 - with: - files: ${{ env.ZIP_NAME }} - fail_on_unmatched_files: true From 02b3029bcfc709faa08df44c75f50a856c861946 Mon Sep 17 00:00:00 2001 From: Ricky Wu Date: Thu, 28 May 2026 22:08:01 +0800 Subject: [PATCH 4/6] ci: fix error --- .github/workflows/release-macos.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release-macos.yaml b/.github/workflows/release-macos.yaml index 079e57e..39316e6 100644 --- a/.github/workflows/release-macos.yaml +++ b/.github/workflows/release-macos.yaml @@ -9,15 +9,14 @@ on: env: PJ_TAG: '3.17.2' -concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.arch }} - cancel-in-progress: true - jobs: macos: runs-on: ${{ matrix.os }} permissions: contents: write + concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.arch }} + cancel-in-progress: true strategy: fail-fast: false matrix: From 796fae9f481a12bbd148ff823fb2b4dd5c7fe30c Mon Sep 17 00:00:00 2001 From: Ricky Wu Date: Thu, 28 May 2026 23:43:36 +0800 Subject: [PATCH 5/6] ci: fix Github warning at testing --- .github/workflows/release-macos.yaml | 6 +----- .github/workflows/release-ubuntu.yaml | 26 ++++++++++++-------------- .github/workflows/release-windows.yaml | 1 - 3 files changed, 13 insertions(+), 20 deletions(-) diff --git a/.github/workflows/release-macos.yaml b/.github/workflows/release-macos.yaml index 39316e6..6824d9f 100644 --- a/.github/workflows/release-macos.yaml +++ b/.github/workflows/release-macos.yaml @@ -34,7 +34,6 @@ jobs: with: path: drone submodules: recursive - shallow-submodules: true - name: Cache PlotJuggler install id: cache-pj @@ -50,10 +49,7 @@ jobs: https://github.com/facontidavide/PlotJuggler.git PlotJuggler - name: Install Qt5 via Homebrew - uses: tecolicom/actions-use-homebrew-tools@v1 - with: - tools: qt@5 - cache: yes + run: brew install qt@5 - name: Cache CPM packages if: steps.cache-pj.outputs.cache-hit != 'true' diff --git a/.github/workflows/release-ubuntu.yaml b/.github/workflows/release-ubuntu.yaml index 068e437..6dac01e 100644 --- a/.github/workflows/release-ubuntu.yaml +++ b/.github/workflows/release-ubuntu.yaml @@ -27,7 +27,6 @@ jobs: with: path: drone submodules: recursive - shallow-submodules: true - name: Cache PlotJuggler install id: cache-pj @@ -43,20 +42,19 @@ jobs: https://github.com/facontidavide/PlotJuggler.git PlotJuggler - name: Install Qt5 and build dependencies - uses: awalsh128/cache-apt-pkgs-action@v1 - with: - packages: > - qtbase5-dev - libqt5svg5-dev - libqt5websockets5-dev - libqt5opengl5-dev - libqt5x11extras5-dev - libqt5serialport5-dev - libprotoc-dev - libmosquitto-dev - libcurl4-openssl-dev + run: | + sudo apt-get update + sudo apt-get install -y \ + qtbase5-dev \ + libqt5svg5-dev \ + libqt5websockets5-dev \ + libqt5opengl5-dev \ + libqt5x11extras5-dev \ + libqt5serialport5-dev \ + libprotoc-dev \ + libmosquitto-dev \ + libcurl4-openssl-dev \ zip - version: 1.0 - name: Cache CPM packages if: steps.cache-pj.outputs.cache-hit != 'true' diff --git a/.github/workflows/release-windows.yaml b/.github/workflows/release-windows.yaml index 0a9f3d9..5e58e8f 100644 --- a/.github/workflows/release-windows.yaml +++ b/.github/workflows/release-windows.yaml @@ -28,7 +28,6 @@ jobs: with: path: drone submodules: recursive - shallow-submodules: true - name: Cache PlotJuggler install id: cache-pj From 7325626e9b9c2be0b8930e9a96fe007510cc700c Mon Sep 17 00:00:00 2001 From: Ricky Wu Date: Fri, 29 May 2026 18:11:31 +0800 Subject: [PATCH 6/6] ci: remove macos-13 build --- .github/workflows/release-macos.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/release-macos.yaml b/.github/workflows/release-macos.yaml index 6824d9f..e045a69 100644 --- a/.github/workflows/release-macos.yaml +++ b/.github/workflows/release-macos.yaml @@ -23,8 +23,6 @@ jobs: include: - os: macos-14 arch: arm64 - - os: macos-13 - arch: x86_64 env: CPM_SOURCE_CACHE: ${{ github.workspace }}/cpm_cache