From a6501464b74674ebfb8684164bff104f78bbee76 Mon Sep 17 00:00:00 2001 From: Ophir LOJKINE Date: Wed, 10 Jun 2026 17:57:44 +0200 Subject: [PATCH] Cache Hurl binary in CI --- .github/workflows/ci.yml | 47 ++++++++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index be312d63..ce692326 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,7 @@ concurrency: env: CARGO_TERM_COLOR: always + HURL_VERSION: 8.0.0 REGISTRY_USERNAME: lovasoa REGISTRY_IMAGE: lovasoa/sqlpage @@ -426,6 +427,32 @@ jobs: run: | examples="$(find examples -mindepth 2 -maxdepth 2 -name test.hurl -print | sed 's#/test.hurl$##' | sort | jq -R -s -c 'split("\n")[:-1]')" echo "examples=$examples" >> "$GITHUB_OUTPUT" + - name: Restore Hurl archive + id: hurl-cache + uses: actions/cache@v5 + with: + path: .cache/hurl + key: hurl-${{ runner.os }}-x86_64-unknown-linux-gnu-${{ env.HURL_VERSION }} + - name: Download Hurl archive + if: steps.hurl-cache.outputs.cache-hit != 'true' + run: | + set -euo pipefail + archive="hurl-${HURL_VERSION}-x86_64-unknown-linux-gnu.tar.gz" + base_url="https://github.com/Orange-OpenSource/hurl/releases/download/${HURL_VERSION}" + mkdir -p .cache/hurl + curl --fail --location --retry 5 --retry-delay 2 --output ".cache/hurl/${archive}" "${base_url}/${archive}" + curl --fail --location --retry 5 --retry-delay 2 --output ".cache/hurl/${archive}.sha256" "${base_url}/${archive}.sha256" + ( + cd .cache/hurl + sha256sum --check "${archive}.sha256" + ) + - name: Upload Hurl archive + uses: actions/upload-artifact@v7 + with: + name: hurl-${{ env.HURL_VERSION }}-x86_64-unknown-linux-gnu + path: .cache/hurl/* + if-no-files-found: error + retention-days: 1 hurl: name: hurl (${{ matrix.example }}) @@ -440,15 +467,21 @@ jobs: example: ${{ fromJSON(needs.hurl_examples.outputs.examples) }} steps: - uses: actions/checkout@v6 + - name: Download Hurl archive + uses: actions/download-artifact@v8 + with: + name: hurl-${{ env.HURL_VERSION }}-x86_64-unknown-linux-gnu + path: ${{ runner.temp }}/hurl - name: Install Hurl - env: - GH_TOKEN: ${{ github.token }} run: | - version=8.0.0 - archive="hurl-${version}-x86_64-unknown-linux-gnu.tar.gz" - gh release download "$version" --repo Orange-OpenSource/hurl --pattern "$archive" --dir /tmp - tar xzf "/tmp/$archive" -C /tmp - echo "/tmp/hurl-${version}-x86_64-unknown-linux-gnu/bin" >> "$GITHUB_PATH" + set -euo pipefail + archive="hurl-${HURL_VERSION}-x86_64-unknown-linux-gnu.tar.gz" + ( + cd "$RUNNER_TEMP/hurl" + sha256sum --check "${archive}.sha256" + tar xzf "$archive" -C "$RUNNER_TEMP/hurl" + ) + echo "$RUNNER_TEMP/hurl/hurl-${HURL_VERSION}-x86_64-unknown-linux-gnu/bin" >> "$GITHUB_PATH" - name: Download SQLPage image uses: actions/download-artifact@v8 with: