From 7fc047392c6440c1ed4960c65f85663c1f3a18fc Mon Sep 17 00:00:00 2001 From: glx22 Date: Wed, 9 Jul 2025 17:21:16 +0200 Subject: [PATCH] Codechange: [Actions] Setup vcpkg via a composite action --- .github/actions/setup-vcpkg/action.yaml | 25 +++++++++++++++++++++++++ .github/workflows/ci-linux.yml | 14 +++----------- .github/workflows/ci-macos.yml | 14 +++----------- .github/workflows/ci-windows.yml | 14 +++----------- .github/workflows/codeql.yml | 14 +++----------- .github/workflows/release-linux.yml | 23 +++++------------------ .github/workflows/release-macos.yml | 14 +++----------- .github/workflows/release-windows.yml | 14 +++----------- 8 files changed, 48 insertions(+), 84 deletions(-) create mode 100644 .github/actions/setup-vcpkg/action.yaml diff --git a/.github/actions/setup-vcpkg/action.yaml b/.github/actions/setup-vcpkg/action.yaml new file mode 100644 index 0000000000..47dd267d0d --- /dev/null +++ b/.github/actions/setup-vcpkg/action.yaml @@ -0,0 +1,25 @@ +name: 'Setup vcpkg' +description: 'Installs vcpkg and initialises binary caching via NuGet' +inputs: + vcpkg-location: + description: 'Where to install vcpkg' + required: true + +runs: + using: "composite" + steps: + - name: Install vcpkg + shell: bash + run: | + git clone https://github.com/microsoft/vcpkg "${{ inputs.vcpkg-location }}" + cd "${{ inputs.vcpkg-location }}" + ./bootstrap-vcpkg.$(if [ "${{ runner.os }}" = "Windows" ]; then echo "bat"; else echo "sh"; fi) -disableMetrics + + - name: Setup vcpkg caching + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') + diff --git a/.github/workflows/ci-linux.yml b/.github/workflows/ci-linux.yml index 1abd005d06..ef71377e23 100644 --- a/.github/workflows/ci-linux.yml +++ b/.github/workflows/ci-linux.yml @@ -32,18 +32,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup vcpkg caching - uses: actions/github-script@v7 + - name: Setup vcpkg + uses: ./.github/actions/setup-vcpkg with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - - name: Install vcpkg - run: | - git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}/vcpkg - ${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh -disableMetrics + vcpkg-location: ${{ runner.temp }}/vcpkg - name: Install dependencies run: | diff --git a/.github/workflows/ci-macos.yml b/.github/workflows/ci-macos.yml index 2a0cd00428..30d6c01886 100644 --- a/.github/workflows/ci-macos.yml +++ b/.github/workflows/ci-macos.yml @@ -34,18 +34,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup vcpkg caching - uses: actions/github-script@v7 + - name: Setup vcpkg + uses: ./.github/actions/setup-vcpkg with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - - name: Install vcpkg - run: | - git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}/vcpkg - ${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh -disableMetrics + vcpkg-location: ${{ runner.temp }}/vcpkg - name: Install OpenGFX run: | diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml index 789017bdb9..7830c64d64 100644 --- a/.github/workflows/ci-windows.yml +++ b/.github/workflows/ci-windows.yml @@ -20,18 +20,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup vcpkg caching - uses: actions/github-script@v7 + - name: Setup vcpkg + uses: ./.github/actions/setup-vcpkg with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - - name: Install vcpkg - run: | - git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}\vcpkg - ${{ runner.temp }}\vcpkg\bootstrap-vcpkg.bat -disableMetrics + vcpkg-location: ${{ runner.temp }}/vcpkg - name: Install OpenGFX shell: bash diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 1922f63b5f..031142c3f0 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -26,18 +26,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup vcpkg caching - uses: actions/github-script@v7 + - name: Setup vcpkg + uses: ./.github/actions/setup-vcpkg with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - - name: Install vcpkg - run: | - git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}/vcpkg - ${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh -disableMetrics + vcpkg-location: ${{ runner.temp }}/vcpkg - name: Install dependencies run: | diff --git a/.github/workflows/release-linux.yml b/.github/workflows/release-linux.yml index d6f79057d2..914b5b472b 100644 --- a/.github/workflows/release-linux.yml +++ b/.github/workflows/release-linux.yml @@ -35,14 +35,6 @@ jobs: - name: Enable Rust cache uses: Swatinem/rust-cache@v2 - - name: Setup vcpkg caching - uses: actions/github-script@v7 - with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - name: Install dependencies run: | echo "::group::Install system dependencies" @@ -113,20 +105,15 @@ jobs: # EOF echo "::endgroup::" - # We use vcpkg for our dependencies, to get more up-to-date version. - echo "::group::Install vcpkg and dependencies" - - git clone https://github.com/microsoft/vcpkg /vcpkg - - ( - cd /vcpkg - ./bootstrap-vcpkg.sh -disableMetrics - ) - echo "::group::Install breakpad dependencies" cargo install --locked dump_syms echo "::endgroup::" + - name: Setup vcpkg + uses: ./.github/actions/setup-vcpkg + with: + vcpkg-location: /vcpkg + - name: Install GCC problem matcher uses: ammaraskar/gcc-problem-matcher@master diff --git a/.github/workflows/release-macos.yml b/.github/workflows/release-macos.yml index a5219a0b69..ce0b7adb40 100644 --- a/.github/workflows/release-macos.yml +++ b/.github/workflows/release-macos.yml @@ -37,18 +37,10 @@ jobs: - name: Enable Rust cache uses: Swatinem/rust-cache@v2 - - name: Setup vcpkg caching - uses: actions/github-script@v7 + - name: Setup vcpkg + uses: ./.github/actions/setup-vcpkg with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - - name: Install vcpkg - run: | - git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}/vcpkg - ${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh -disableMetrics + vcpkg-location: ${{ runner.temp }}/vcpkg - name: Install dependencies env: diff --git a/.github/workflows/release-windows.yml b/.github/workflows/release-windows.yml index d47b3645e5..7e818bfd50 100644 --- a/.github/workflows/release-windows.yml +++ b/.github/workflows/release-windows.yml @@ -45,18 +45,10 @@ jobs: - name: Enable Rust cache uses: Swatinem/rust-cache@v2 - - name: Setup vcpkg caching - uses: actions/github-script@v7 + - name: Setup vcpkg + uses: ./.github/actions/setup-vcpkg with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - - name: Install vcpkg - run: | - git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}\vcpkg - ${{ runner.temp }}\vcpkg\bootstrap-vcpkg.bat -disableMetrics + vcpkg-location: ${{ runner.temp }}/vcpkg - name: Install dependencies shell: bash