From 0699bb54659848504dcfa5e3eb8a704944076232 Mon Sep 17 00:00:00 2001 From: Thomas Honeyman Date: Fri, 3 Jul 2026 15:45:29 -0400 Subject: [PATCH] Update CI runner images and deprecated actions (#317) The ubuntu-20.04 runner image was retired by GitHub in April 2025, so all CI jobs queued forever waiting for a runner. The Try PureScript server droplet has been upgraded in place to Ubuntu 24.04, so the server build job now targets ubuntu-24.04 to keep the produced binary glibc-compatible with the deployment host. Also: - actions/checkout v2 -> v4 - actions/cache v2 -> v4 - actions/setup-node v2 -> v4, pinned to Node 20 - actions/upload-artifact and download-artifact v2 -> v4 (v2 is fully deprecated and errors out) - haskell/actions/setup v1 (archived) -> haskell-actions/setup v2 - softprops/action-gh-release v1 -> v2 - stack 2.5.1 -> latest (the lts-20.9 resolver still pins GHC and all dependencies) - Only the server job carries the "must match the server's Ubuntu" comment; the client and release jobs produce OS-independent artifacts and use ubuntu-latest. Co-Authored-By: Claude Fable 5 --- .github/workflows/ci.yml | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9e1f3bfb..06220d63 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,18 +18,18 @@ jobs: # Note that this must be kept in sync with the version of Ubuntu which the # Try PureScript server is running, otherwise the server binary may fail to # run. - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - - uses: haskell/actions/setup@v1 + - uses: haskell-actions/setup@v2 with: enable-stack: true - stack-version: "2.5.1" + stack-version: "latest" stack-no-global: true - name: Cache dependencies - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: ~/.stack key: ${{ runner.os }}-stack-${{ hashFiles('stack.yaml.lock') }}-${{ hashFiles('trypurescript.cabal') }} @@ -48,7 +48,7 @@ jobs: tar czf ${{ env.SERVER_ASSET }}.tar.gz -C ${{ env.SERVER_ASSET }}/ . - name: Persist server assets - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 if: github.event_name == 'release' with: name: ${{ env.SERVER_ASSET }}.tar.gz @@ -57,13 +57,12 @@ jobs: build_client: name: Build client - # Note that this must be kept in sync with the version of Ubuntu which the - # Try PureScript server is running, otherwise the server binary may fail to - # run. - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: "20" - name: Build client code run: | @@ -95,7 +94,7 @@ jobs: tar czf ${{ env.CLIENT_ASSET }}.tar.gz -C ${{ env.CLIENT_ASSET }}/ . - name: Persist client assets - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 if: github.event_name == 'release' with: name: ${{ env.CLIENT_ASSET }}.tar.gz @@ -104,10 +103,7 @@ jobs: release: name: Release - # Note that this must be kept in sync with the version of Ubuntu which the - # Try PureScript server is running, otherwise the server binary may fail to - # run. - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.event_name == 'release' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -116,17 +112,17 @@ jobs: - build_client steps: - name: Retrieve server assets - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: name: ${{ env.SERVER_ASSET }}.tar.gz - name: Retrieve client assets - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: name: ${{ env.CLIENT_ASSET }}.tar.gz - name: Upload server and client assets - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 with: files: | ${{ env.SERVER_ASSET }}.tar.gz