Refactor vcpkg setup in build workflow [skip CI] #472
Workflow file for this run
This file contains hidden or 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: ExamplePlugins | |
| on: | |
| push: | |
| pull_request: | |
| workflow_dispatch: | |
| env: | |
| VCPKG_COMMIT_SHA: 56bb2411609227288b70117ead2c47585ba07713 # corresponds to tag 2026.04.27 | |
| # for matrix check https://docs.github.com/en/actions/reference/specifications-for-github-hosted-runners | |
| jobs: | |
| prepare_matrix: | |
| runs-on: ubuntu-slim | |
| outputs: | |
| matrix: ${{ steps.matrix_setup.outputs.matrix }} | |
| steps: | |
| - name: Get matrix from file | |
| id: matrix_setup | |
| uses: ManiVaultStudio/github-actions/matrix_setup@main | |
| cross-platform-build: | |
| name: Cross platform build | |
| needs: prepare_matrix | |
| # The CMake configure and build commands are platform agnostic and should work equally | |
| # well on Windows or Mac. You can convert this to a matrix build if you need | |
| # cross-platform coverage. | |
| # See: https://docs.github.com/en/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| include: ${{ fromJson(needs.prepare_matrix.outputs.matrix) }} | |
| steps: | |
| - name: Checkout the source | |
| if: github.event_name != 'pull_request' | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 | |
| - name: Checkout the source - pull request | |
| if: github.event_name == 'pull_request' | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.ref }} | |
| - name: Select Xcode for Mac only | |
| if: startsWith(runner.os, 'macOS') | |
| run: | | |
| sudo xcode-select -switch /Applications/Xcode_${{matrix.build-xcode-version}}.app | |
| - name: Setup python version | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Start ssh key agent | |
| uses: webfactory/ssh-agent@v0.9.0 | |
| with: | |
| ssh-private-key: ${{ secrets.RULESSUPPORT_DEPLOY_KEY }} | |
| - name: Install SSH deploy key for rulessupport | |
| uses: shimataro/ssh-key-action@v2 | |
| with: | |
| key: ${{ secrets.RULESSUPPORT_DEPLOY_KEY }} | |
| known_hosts: github.com AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== | |
| - name: Set vcpkg environment (Unix) | |
| if: "!startsWith(runner.os, 'Windows')" | |
| run: | | |
| echo "VCPKG_DIR=${{ runner.temp }}/vcpkg" >> $GITHUB_ENV | |
| echo "VCPKG_ROOT=${{ runner.temp }}/vcpkg" >> $GITHUB_ENV | |
| echo "VCPKG_BINARY_SOURCES=clear;files,${{ runner.temp }}/vcpkg-cache,readwrite" >> $GITHUB_ENV | |
| - name: Set vcpkg environmentg (Windows) | |
| if: startsWith(runner.os, 'Windows') | |
| shell: pwsh | |
| run: | | |
| echo "VCPKG_DIR=${{ runner.temp }}/vcpkg" >> $env:GITHUB_ENV | |
| echo "VCPKG_ROOT=${{ runner.temp }}/vcpkg" >> $env:GITHUB_ENV | |
| echo "VCPKG_BINARY_SOURCES=clear;files,${{ runner.temp }}/vcpkg-cache,readwrite" >> $env:GITHUB_ENV | |
| - name: Set up binary cache | |
| uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | |
| with: | |
| path: ${{ runner.temp }}/vcpkg-cache | |
| key: vcpkg-cache-${{ runner.os }}-${{ matrix.os }}-${{ matrix.build-cversion }}-${{ env.VCPKG_COMMIT_SHA }}-${{ hashFiles('**/vcpkg.json', '**/vcpkg-overlays/**') }} | |
| restore-keys: | | |
| vcpkg-cache-${{ runner.os }}-${{ matrix.os }}-${{ matrix.build-cversion }}-${{ env.VCPKG_COMMIT_SHA }} | |
| - name: Clone and checkout vcpkg | |
| run: | | |
| git clone https://github.com/microsoft/vcpkg.git --branch master ${{ env.VCPKG_DIR }} | |
| git -C ${{ env.VCPKG_DIR }} checkout ${{ env.VCPKG_COMMIT_SHA }} | |
| - name: Bootstrap vcpkg (Unix) | |
| if: "!startsWith(runner.os, 'Windows')" | |
| run: ${{ env.VCPKG_DIR }}/bootstrap-vcpkg.sh -disableMetrics | |
| - name: Bootstrap vcpkg (Windows) | |
| if: startsWith(runner.os, 'Windows') | |
| shell: pwsh | |
| run: ${{ env.VCPKG_DIR }}/bootstrap-vcpkg.bat -disableMetrics | |
| # Build the package | |
| - name: Windows build | |
| if: startsWith(matrix.os, 'windows') | |
| uses: ManiVaultStudio/github-actions/conan_windows_build@main | |
| with: | |
| conan-visual-version: ${{matrix.build-cversion}} | |
| conan-visual-runtime: ${{matrix.build-runtime}} | |
| conan-build-type: ${{matrix.build-config}} | |
| conan-user: ${{secrets.LKEB_UPLOAD_USER}} | |
| conan-password: ${{secrets.LKEB_UPLOAD_USER_PASSWORD}} | |
| conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}} | |
| rs_ssh_key: ${{ secrets.RULESSUPPORT_DEPLOY_KEY }} | |
| - name: Linux build | |
| if: startsWith(matrix.os, 'ubuntu') | |
| uses: ManiVaultStudio/github-actions/conan_linuxmac_build@main | |
| with: | |
| conan-compiler: ${{matrix.build-compiler}} | |
| conan-compiler-version: ${{matrix.build-cversion}} | |
| conan-libcxx-version: ${{matrix.build-libcxx}} | |
| conan-build-type: ${{matrix.build-config}} | |
| conan-build-os: ${{matrix.build-os}} | |
| build-arch: ${{matrix.build-arch}} | |
| conan-user: ${{secrets.LKEB_UPLOAD_USER}} | |
| conan-password: ${{secrets.LKEB_UPLOAD_USER_PASSWORD}} | |
| conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}} | |
| conan-cc: gcc-${{matrix.build-cversion}} | |
| conan-cxx: g++-${{matrix.build-cversion}} | |
| - name: Mac build | |
| if: startsWith(matrix.os, 'macos') | |
| uses: ManiVaultStudio/github-actions/conan_linuxmac_build@main | |
| with: | |
| conan-compiler: ${{matrix.build-compiler}} | |
| conan-compiler-version: ${{matrix.build-cversion}} | |
| conan-libcxx-version: ${{matrix.build-libcxx}} | |
| conan-build-type: ${{matrix.build-config}} | |
| conan-build-os: ${{matrix.build-os}} | |
| build-arch: ${{matrix.build-arch}} | |
| conan-user: ${{secrets.LKEB_UPLOAD_USER}} | |
| conan-password: ${{secrets.LKEB_UPLOAD_USER_PASSWORD}} | |
| conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}} |