Skip to content

chore: pin buildx, buildkit and qemu #149

chore: pin buildx, buildkit and qemu

chore: pin buildx, buildkit and qemu #149

Workflow file for this run

on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch: {}
name: Test
jobs:
# host_tests:
# strategy:
# matrix:
# os: [macos-latest, windows-2019]
# node: [16.x, 18.x, 20.x, 22.x]
# fail-fast: false
# runs-on: ${{ matrix.os }}
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-node@v4
# with:
# node-version: ${{ matrix.node }}
# cache: "npm"
# registry-url: "https://registry.npmjs.org"
# - name: Build with Node.js ${{ matrix.node }} on ${{ matrix.os }}
# run: node .github/scripts/libmongocrypt.mjs ${{ runner.os == 'Windows' && '--build' || '' }}
# shell: bash
# - name: Test ${{ matrix.os }}
# shell: bash
# run: npm run test
# container_tests_glibc:
# runs-on: ubuntu-latest
# strategy:
# matrix:
# linux_arch: [s390x, arm64, amd64]
# node: [16.x, 18.x, 20.x, 22.x]
# fail-fast: false
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-node@v4
# with:
# node-version: ${{ matrix.node }}
# - name: Get Full Node.js Version
# id: get_nodejs_version
# shell: bash
# run: |
# echo "version=$(node --print 'process.version.slice(1)')" >> "$GITHUB_OUTPUT"
# echo "ubuntu_version=$(node --print '(+process.version.slice(1).split(`.`).at(0)) > 16 ? `noble` : `bionic`')" >> "$GITHUB_OUTPUT"
# - name: Set up QEMU
# uses: docker/setup-qemu-action@v3
# with:
# image: 'tonistiigi/binfmt@sha256:66e11bea77a5ea9d6f0fe79b57cd2b189b5d15b93a2bdb925be22949232e4e55'
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v3
# with:
# version: v0.18.0
# driver-opts: image=moby/buildkit:v0.17.2
# - name: Run Buildx
# run: |
# docker buildx create --name builder --bootstrap --use
# docker buildx build \
# --platform linux/${{ matrix.linux_arch }} \
# --build-arg="NODE_ARCH=${{ matrix.linux_arch == 'amd64' && 'x64' || matrix.linux_arch }}" \
# --build-arg="NODE_VERSION=${{ steps.get_nodejs_version.outputs.version }}" \
# --build-arg="UBUNTU_VERSION=${{ steps.get_nodejs_version.outputs.ubuntu_version }}" \
# --build-arg="RUN_TEST=true" \
# --output type=local,dest=./prebuilds,platform-split=false \
# -f ./.github/docker/Dockerfile.glibc \
# .
container_tests_musl:
runs-on: ubuntu-latest
strategy:
matrix:
linux_arch: [amd64, arm64]
node: [16.20.1, 18.x, 20.x, 22.x]
fail-fast: false
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Get Full Node.js Version
id: get_nodejs_version
shell: bash
run: |
echo "version=$(node --print 'process.version.slice(1)')" >> "$GITHUB_OUTPUT"
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
image: tonistiigi/binfmt@sha256:66e11bea77a5ea9d6f0fe79b57cd2b189b5d15b93a2bdb925be22949232e4e55
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: v0.18.0
driver-opts: image=moby/buildkit:v0.17.2
- name: Init builder
run: docker buildx create --name builder --bootstrap --use
- name: Build base image
run: |
ARCH=${{ matrix.linux_arch == 'arm64' && 'arm64v8' || matrix.linux_arch }}
NODE_VERSION=${{ steps.get_nodejs_version.outputs.version }}
TAG=$ARCH-alpine-lib-base-node-$NODE_VERSION
docker --debug buildx build --progress=plain --no-cache \
--platform linux/${{ matrix.linux_arch }} \
--build-arg="ARCH=$ARCH" \
--build-arg="NODE_VERSION=$NODE_VERSION" \
--output type=oci,dest=alpine-node-base,platform-split=false \
-f ./.github/docker/Dockerfile.musl \
-t $ARCH-alpine-lib-base-node-$NODE_VERSION \
.
cat alpine-node-base | docker load
- id: upload-base-image
name: Upload base image
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.linux_arch == 'arm64' && 'arm64v8' || matrix.linux_arch }}-alpine-base-node-${{ steps.get_nodejs_version.outputs.version }}
path: alpine-node-base
if-no-files-found: 'error'
retention-days: 30
compression-level: 0
- name: Build libmongocrypt
run: |
ARCH=${{ matrix.linux_arch == 'arm64' && 'arm64v8' || matrix.linux_arch }}
NODE_VERSION=${{ steps.get_nodejs_version.outputs.version }}
TAG=$ARCH-alpine-libmongocrypt-base-node-$NODE_VERSION
docker --debug buildx build --progress=plain --no-cache \
--platform linux/${{ matrix.linux_arch }} \
--build-arg="ARCH=$ARCH" \
--build-arg="NODE_VERSION=$NODE_VERSION" \
--output type=oci,dest=alpine-libmongocrypt-base,platform-split=false \
-f ./.github/docker/AddLibmongocrypt.musl \
-t $ARCH-alpine-libmongocrypt-node-$NODE_VERSION \
.
docker load --input alpine-libmongocrypt-base
- id: upload-image-with-libmongocrypt
name: Upload libmongocrypt
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.linux_arch == 'arm64' && 'arm64v8' || matrix.linux_arch }}-alpine-libmongocrypt-node-${{ steps.get_nodejs_version.outputs.version }}
path: alpine-libmongocrypt-base
if-no-files-found: 'error'
retention-days: 30
compression-level: 0
- name: Build Prebuilds
run: |
ARCH=${{ matrix.linux_arch == 'arm64' && 'arm64v8' || matrix.linux_arch }}
NODE_VERSION=${{ steps.get_nodejs_version.outputs.version }}
TAG=$ARCH-alpine-prebuilds-base-node-$NODE_VERSION
docker --debug buildx build --progress=plain --no-cache \
--platform linux/${{ matrix.linux_arch }} \
--build-arg="ARCH=$ARCH" \
--build-arg="NODE_VERSION=$NODE_VERSION" \
--output type=oci,dest=alpine-prebuilds-base,platform-split=false \
-f ./.github/docker/Prebuilds.musl \
-t $ARCH-alpine-prebuilds-node-$NODE_VERSION \
.
- id: upload-images-with-prebuilds
name: Upload libmongocrypt
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.linux_arch == 'arm64' && 'arm64v8' || matrix.linux_arch }}-alpine-prebuilds-node-${{ steps.get_nodejs_version.outputs.version }}
path: alpine-prebuilds-base
if-no-files-found: 'error'
retention-days: 30
compression-level: 0
# - name: Test
# run: |
# docker load --input alpine-prebuilds-base
# ARCH=${{ matrix.linux_arch == 'arm64' && 'arm64v8' || matrix.linux_arch }}
# NODE_VERSION=${{ steps.get_nodejs_version.outputs.version }}
# TAG=$ARCH-alpine-prebuilds-base-node-$NODE_VERSION
# docker run --platform linux/${{ matrix.linux_arch }} $ARCH-alpine-prebuilds-node-$NODE_VERSION bash -C "npm test"