Skip to content

Bump @types/node from 20.14.12 to 22.0.0 #634

Bump @types/node from 20.14.12 to 22.0.0

Bump @types/node from 20.14.12 to 22.0.0 #634

Workflow file for this run

name: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
env:
node-versions: "['18.x', '20.x', '22.x']"
os-variants: "['ubuntu-latest', 'macos-13', 'windows-latest']"
docker-engine-connection-variants: "['ssh', 'http', 'https', 'socket']"
platform-variants: "['node', 'bun', 'deno', 'node-undici', 'bun-undici', 'deno-undici']"
docker-engine-versions: "['docker.io/library/docker:19-dind', 'docker.io/library/docker:20-dind', 'docker.io/library/docker:23-dind', 'docker.io/library/docker:24-dind', 'docker.io/library/docker:25-dind', 'docker.io/library/docker:26-dind', 'docker.io/library/docker:27-dind', 'docker.io/library/docker:dind']"
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
# Yes this job is really needed as you can't access the global env var outside of a job step
# and I want to use those global env vars to setup things like the matricies for other jobs.
compute-matricies:
runs-on: ubuntu-latest
outputs:
os-variants: ${{ steps.compute-matricies.outputs.os-variants }}
node-versions: ${{ steps.compute-matricies.outputs.node-versions }}
platform-variants: ${{ steps.compute-matricies.outputs.platform-variants }}
docker-engine-versions: ${{ steps.compute-matricies.outputs.docker-engine-versions }}
docker-engine-connection-variants: ${{ steps.compute-matricies.outputs.docker-engine-connection-variants }}
steps:
- id: compute-matricies
run: |
echo "os-variants=${{ env.os-variants }}" >> $GITHUB_OUTPUT
echo "node-versions=${{ env.node-versions }}" >> $GITHUB_OUTPUT
echo "platform-variants=${{ env.platform-variants }}" >> $GITHUB_OUTPUT
echo "docker-engine-versions=${{ env.docker-engine-versions }}" >> $GITHUB_OUTPUT
echo "docker-engine-connection-variants=${{ env.docker-engine-connection-variants }}" >> $GITHUB_OUTPUT
# Creates pnpm caches for all os/node-version combinations
update-pnpm-caches:
runs-on: ${{ matrix.os }}
needs: [compute-matricies]
defaults:
run:
shell: bash
strategy:
matrix:
os: ${{ fromJSON(needs.compute-matricies.outputs.os-variants) }}
node-version: ${{ fromJSON(needs.compute-matricies.outputs.node-versions) }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/common-setup
with:
node-version: ${{ matrix.node-version }}
# Builds and lints the typescript code
typescript-build:
runs-on: ubuntu-latest
needs: [update-pnpm-caches]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/common-setup
with:
node-version: 18.x
# - run: pnpm check
# - run: pnpm build
# - run: pnpm lint
# Publishes the docker images to ghcr.io (only if they have been modified in this push/pull_request)
docker-build:
runs-on: ubuntu-latest
needs: [compute-matricies]
strategy:
matrix:
dockerfile: ${{ fromJSON(needs.compute-matricies.outputs.docker-engine-connection-variants) }}
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/metadata-action@v5
id: meta
with:
images: ghcr.io/${{ github.repository }}/${{ matrix.dockerfile }}-dind
- uses: docker/build-push-action@v6
with:
context: .
push: true
cache-from: type=gha
cache-to: type=gha,mode=max
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
file: docker/dind-${{ matrix.dockerfile }}.dockerfile
build-args: DIND_BASE_IMAGE=docker.io/library/docker:dind
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6
docker-engine-tests:
needs: [compute-matricies, typescript-build, docker-build]
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
matrix:
os: ${{ fromJSON(needs.compute-matricies.outputs.os-variants) }}
node-version: ${{ fromJSON(needs.compute-matricies.outputs.node-versions) }}
platform-variant: ${{ fromJSON(needs.compute-matricies.outputs.platform-variants) }}
steps:
- uses: actions/checkout@v4
- uses: douglascamata/setup-docker-macos-action@v1-alpha.13
if: startsWith(matrix.os, 'macos')
- uses: ./.github/actions/windows-wsl2
if: startsWith(matrix.os, 'windows')
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/common-setup
with:
node-version: ${{ matrix.node-version }}
- run: |
docker_engine_versions=$(echo ${{ needs.compute-matricies.outputs.docker-engine-versions }} | tr -d "[]" | tr -d "'")
IFS=',' read -r -a docker_engine_versions_array <<< "$docker_engine_versions"
docker_engine_connection_variants=$(echo ${{ needs.compute-matricies.outputs.docker-engine-connection-variants }} | tr -d "[]" | tr -d "'")
IFS=',' read -r -a docker_engine_connection_variants_array <<< "$docker_engine_connection_variants"
for image in "${docker_engine_versions_array[@]}"; do
image=$(echo $image | xargs)
docker pull $image
done
for docker_engine_version in "${docker_engine_versions_array[@]}"; do
for docker_engine_connection_variant in "${docker_engine_connection_variants_array[@]}"; do
conn_variant=$(echo $docker_engine_connection_variant | xargs)
engine_version=$(echo $docker_engine_version | xargs)
echo "Running tests for $engine_version with $conn_variant"
# __PLATFORM_VARIANT="${{ matrix.platform-variant }}" __CONNECTION_VARIANT="$conn_variant" __DOCKER_ENGINE_VERSION="$engine_version" pnpm test
done
done
# https://github.com/orgs/community/discussions/26822
pr-can-merge:
if: ${{ always() }}
runs-on: ubuntu-latest
needs: [docker-engine-tests]
steps:
- run: exit 1
if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}