From 8d521b89d36f471744dbaa1267c3a8d532bbea53 Mon Sep 17 00:00:00 2001 From: Neal Beeken Date: Thu, 23 May 2024 13:48:15 -0400 Subject: [PATCH 1/9] chore(NODE-6176): add prebuilds in CI --- .github/docker/Dockerfile.glibc | 12 ++++++++ .github/scripts/build_linux.mjs | 54 +++++++++++++++++++++++++++++++++ .github/workflows/build.yml | 43 ++++++++++++++++++++------ 3 files changed, 99 insertions(+), 10 deletions(-) create mode 100644 .github/docker/Dockerfile.glibc create mode 100644 .github/scripts/build_linux.mjs diff --git a/.github/docker/Dockerfile.glibc b/.github/docker/Dockerfile.glibc new file mode 100644 index 0000000..5b801e3 --- /dev/null +++ b/.github/docker/Dockerfile.glibc @@ -0,0 +1,12 @@ +ARG NODE_BUILD_IMAGE=node:16.20.1-bullseye +FROM $NODE_BUILD_IMAGE AS build + +WORKDIR /mongodb-client-encryption +COPY . . + +RUN node ./.github/scripts/libmongocrypt.mjs +RUN mkdir -p /out && cp -R /mongodb-client-encryption/prebuilds/ /out + +FROM scratch + +COPY --from=build /out / diff --git a/.github/scripts/build_linux.mjs b/.github/scripts/build_linux.mjs new file mode 100644 index 0000000..cc204a5 --- /dev/null +++ b/.github/scripts/build_linux.mjs @@ -0,0 +1,54 @@ +import child_process from 'node:child_process'; +import events from 'node:events'; +import fs from 'node:fs/promises'; +import path from 'node:path'; +import url from 'node:url'; + +const __dirname = path.dirname(url.fileURLToPath(import.meta.url)); + +/** Resolves to the root of this repository */ +function resolveRoot(...paths) { + return path.resolve(__dirname, '..', '..', ...paths); +} + +/** `xtrace` style command runner, uses spawn so that stdio is inherited */ +async function run(command, args = [], options = {}) { + const commandDetails = `+ ${command} ${args.join(' ')}${options.cwd ? ` (in: ${options.cwd})` : ''}` + console.error(commandDetails); + const proc = child_process.spawn(command, args, { + stdio: 'inherit', + cwd: resolveRoot('.'), + ...options + }); + await events.once(proc, 'exit'); + + if (proc.exitCode != 0) throw new Error(`CRASH(${proc.exitCode}): ${commandDetails}`); +} + +async function main() { + await fs.rm(resolveRoot('build'), { recursive: true, force: true }); + await fs.rm(resolveRoot('prebuilds'), { recursive: true, force: true }); + + try { + // Locally you probably already have this + await run('docker', ['buildx', 'use', 'builder']); + } catch { + // But if not, create one + await run('docker', ['buildx', 'create', '--name', 'builder', '--bootstrap', '--use']); + } + + await run('docker', [ + 'buildx', + 'build', + // '--progress=plain', // By default buildx detects tty and does some fancy collapsing, set progress=plain for debugging + '--platform', + 'linux/s390x,linux/arm64,linux/amd64', + '--output', + 'type=local,dest=.,platform-split=false', + '-f', + resolveRoot('./.github/docker/Dockerfile.glibc'), + resolveRoot('.') + ]); +} + +await main(); diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ce15838..b4fb22c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,23 +8,46 @@ on: name: build jobs: - build: - runs-on: ubuntu-latest + builds: + outputs: + artifact_id: ${{ steps.upload.outputs.artifact-id }} strategy: - matrix: - node: ['20.x'] # '16.x', '18.x', - name: Node.js ${{ matrix.node }} build + matrix: + os: [ubuntu-latest, windows-2019, macos-11, macos-latest] + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - if: ${{ runner.os == 'Linux' }} + name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - if: ${{ runner.os == 'Linux' }} + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - if: ${{ runner.os == 'Linux' }} + name: Build ${{ runner.os }} Prebuild + run: node .github/scripts/build_linux.mjs + + - if: ${{ runner.os != 'Linux' }} + name: Setup nodejs + uses: actions/setup-node@v3 with: - node-version: ${{ matrix.node }} + node-version: 'lts/*' cache: 'npm' registry-url: 'https://registry.npmjs.org' - - run: npm install -g npm@latest + - if: ${{ runner.os != 'Linux' }} + name: Build ${{ runner.os }} Prebuild + run: node .github/scripts/libmongocrypt.mjs shell: bash - - run: node .github/scripts/libmongocrypt.mjs - shell: bash + - id: upload + name: Upload prebuild + uses: actions/upload-artifact@v4 + with: + name: build-${{ matrix.os }} + path: prebuilds/ + if-no-files-found: 'error' + retention-days: 1 From 37a3194dbd2fe7820f75ce66143d6cbf7162b254 Mon Sep 17 00:00:00 2001 From: Neal Beeken Date: Thu, 23 May 2024 14:38:39 -0400 Subject: [PATCH 2/9] chore: fix path --- .github/docker/Dockerfile.glibc | 5 ++--- .github/scripts/build_linux.mjs | 9 ++++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/docker/Dockerfile.glibc b/.github/docker/Dockerfile.glibc index 5b801e3..c114db0 100644 --- a/.github/docker/Dockerfile.glibc +++ b/.github/docker/Dockerfile.glibc @@ -4,9 +4,8 @@ FROM $NODE_BUILD_IMAGE AS build WORKDIR /mongodb-client-encryption COPY . . -RUN node ./.github/scripts/libmongocrypt.mjs -RUN mkdir -p /out && cp -R /mongodb-client-encryption/prebuilds/ /out +RUN node /mongodb-client-encryption/.github/scripts/libmongocrypt.mjs FROM scratch -COPY --from=build /out / +COPY --from=build /mongodb-client-encryption/prebuilds/ / diff --git a/.github/scripts/build_linux.mjs b/.github/scripts/build_linux.mjs index cc204a5..45562d8 100644 --- a/.github/scripts/build_linux.mjs +++ b/.github/scripts/build_linux.mjs @@ -44,11 +44,18 @@ async function main() { '--platform', 'linux/s390x,linux/arm64,linux/amd64', '--output', - 'type=local,dest=.,platform-split=false', + 'type=local,dest=./prebuilds,platform-split=false', '-f', resolveRoot('./.github/docker/Dockerfile.glibc'), resolveRoot('.') ]); + + /** + * Running locally and want a fresh start? + * + * docker buildx prune --force + * docker buildx rm builder + */ } await main(); From 59e4ae2989ff34356c093c4ed28f7efe97e3d88d Mon Sep 17 00:00:00 2001 From: Neal Beeken Date: Thu, 23 May 2024 14:41:35 -0400 Subject: [PATCH 3/9] chore: setup node with v4 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b4fb22c..17cce5a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,7 +32,7 @@ jobs: - if: ${{ runner.os != 'Linux' }} name: Setup nodejs - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 'lts/*' cache: 'npm' From 8c9c41c8625f6e1a74b923b69a26b179234c7343 Mon Sep 17 00:00:00 2001 From: Neal Beeken Date: Thu, 23 May 2024 14:57:24 -0400 Subject: [PATCH 4/9] chore: use relative path in tar command, but set cwd to repo root (windows) --- .github/scripts/libmongocrypt.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/scripts/libmongocrypt.mjs b/.github/scripts/libmongocrypt.mjs index d30d071..173794b 100644 --- a/.github/scripts/libmongocrypt.mjs +++ b/.github/scripts/libmongocrypt.mjs @@ -171,9 +171,9 @@ export async function downloadLibMongoCrypt(nodeDepsRoot, { ref }) { console.error(`Platform: ${detectedPlatform} Prebuild: ${prebuild}`); - const unzipArgs = ['-xzv', '-C', destination, `${prebuild}/nocrypto`]; + const unzipArgs = ['-xzv', '-C', `_libmongocrypt-${ref}`, `${prebuild}/nocrypto`]; console.error(`+ tar ${unzipArgs.join(' ')}`); - const unzip = child_process.spawn('tar', unzipArgs, { stdio: ['pipe', 'inherit'] }); + const unzip = child_process.spawn('tar', unzipArgs, { stdio: ['pipe', 'inherit'], cwd: resolveRoot('.') }); const [response] = await events.once(https.get(downloadURL), 'response'); From b139d239219f2c8e8ab16c4735c5366781bba3c9 Mon Sep 17 00:00:00 2001 From: Neal Beeken Date: Thu, 23 May 2024 15:05:28 -0400 Subject: [PATCH 5/9] chore: make npm runnable on windows --- .github/scripts/libmongocrypt.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/scripts/libmongocrypt.mjs b/.github/scripts/libmongocrypt.mjs index 173794b..fb0ccd1 100644 --- a/.github/scripts/libmongocrypt.mjs +++ b/.github/scripts/libmongocrypt.mjs @@ -59,6 +59,7 @@ async function run(command, args = [], options = {}) { const commandDetails = `+ ${command} ${args.join(' ')}${options.cwd ? ` (in: ${options.cwd})` : ''}`; console.error(commandDetails); const proc = child_process.spawn(command, args, { + shell: process.platform === 'win32', stdio: 'inherit', cwd: resolveRoot('.'), ...options From b4e5489a495e446f2cb39cda2500ab2ed2e06e44 Mon Sep 17 00:00:00 2001 From: Neal Beeken Date: Fri, 24 May 2024 10:30:26 -0400 Subject: [PATCH 6/9] chore: windows --- .github/docker/Dockerfile.win | 23 +++++++++ .../scripts/{build_linux.mjs => buildx.mjs} | 13 +++-- .github/scripts/libmongocrypt.mjs | 5 +- .github/workflows/build.yml | 50 ++++++++++--------- 4 files changed, 64 insertions(+), 27 deletions(-) create mode 100644 .github/docker/Dockerfile.win rename .github/scripts/{build_linux.mjs => buildx.mjs} (80%) diff --git a/.github/docker/Dockerfile.win b/.github/docker/Dockerfile.win new file mode 100644 index 0000000..2f0409c --- /dev/null +++ b/.github/docker/Dockerfile.win @@ -0,0 +1,23 @@ +#escape=` +FROM mcr.microsoft.com/windows/servercore:ltsc2016 + +# Set the Node.js version you want to install +ENV NODE_VERSION 16.20.1 + +# Download and install Node.js +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + Invoke-WebRequest -Uri https://nodejs.org/dist/v$env:NODE_VERSION/node-v$env:NODE_VERSION-win-x64.zip -OutFile node.zip; ` + Expand-Archive -Path node.zip -DestinationPath C:\; ` + Rename-Item -Path C:\node-v$env:NODE_VERSION-win-x64 -NewName C:\nodejs; ` + Remove-Item -Force node.zip + +# Add Node.js to PATH +ENV PATH="C:\nodejs;C:\nodejs\node_modules\npm\bin;${PATH}" + +WORKDIR "C:\mongodb-client-encryption" +COPY . . + +RUN node "C:\mongodb-client-encryption\.github\scripts\libmongocrypt.mjs" + +CMD ["ping", "-i", "20", "localhost"] diff --git a/.github/scripts/build_linux.mjs b/.github/scripts/buildx.mjs similarity index 80% rename from .github/scripts/build_linux.mjs rename to .github/scripts/buildx.mjs index 45562d8..fb5f342 100644 --- a/.github/scripts/build_linux.mjs +++ b/.github/scripts/buildx.mjs @@ -13,7 +13,7 @@ function resolveRoot(...paths) { /** `xtrace` style command runner, uses spawn so that stdio is inherited */ async function run(command, args = [], options = {}) { - const commandDetails = `+ ${command} ${args.join(' ')}${options.cwd ? ` (in: ${options.cwd})` : ''}` + const commandDetails = `+ ${command} ${args.join(' ')}${options.cwd ? ` (in: ${options.cwd})` : ''}`; console.error(commandDetails); const proc = child_process.spawn(command, args, { stdio: 'inherit', @@ -37,16 +37,23 @@ async function main() { await run('docker', ['buildx', 'create', '--name', 'builder', '--bootstrap', '--use']); } + const platform = + process.platform === 'win32' ? 'windows/amd64' : 'linux/s390x,linux/arm64,linux/amd64'; + const dockerFile = + process.platform === 'win32' + ? resolveRoot('./.github/docker/Dockerfile.win') + : resolveRoot('./.github/docker/Dockerfile.glibc'); + await run('docker', [ 'buildx', 'build', // '--progress=plain', // By default buildx detects tty and does some fancy collapsing, set progress=plain for debugging '--platform', - 'linux/s390x,linux/arm64,linux/amd64', + platform, '--output', 'type=local,dest=./prebuilds,platform-split=false', '-f', - resolveRoot('./.github/docker/Dockerfile.glibc'), + dockerFile, resolveRoot('.') ]); diff --git a/.github/scripts/libmongocrypt.mjs b/.github/scripts/libmongocrypt.mjs index fb0ccd1..2589be1 100644 --- a/.github/scripts/libmongocrypt.mjs +++ b/.github/scripts/libmongocrypt.mjs @@ -174,7 +174,10 @@ export async function downloadLibMongoCrypt(nodeDepsRoot, { ref }) { const unzipArgs = ['-xzv', '-C', `_libmongocrypt-${ref}`, `${prebuild}/nocrypto`]; console.error(`+ tar ${unzipArgs.join(' ')}`); - const unzip = child_process.spawn('tar', unzipArgs, { stdio: ['pipe', 'inherit'], cwd: resolveRoot('.') }); + const unzip = child_process.spawn('tar', unzipArgs, { + stdio: ['pipe', 'inherit'], + cwd: resolveRoot('.') + }); const [response] = await events.once(https.get(downloadURL), 'response'); diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 17cce5a..4682903 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,46 +8,50 @@ on: name: build jobs: - builds: + macos_windows_builds: outputs: artifact_id: ${{ steps.upload.outputs.artifact-id }} strategy: matrix: - os: [ubuntu-latest, windows-2019, macos-11, macos-latest] + os: [macos-11, macos-latest, windows-2019] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - - if: ${{ runner.os == 'Linux' }} - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + - name: Build ${{ matrix.os }} Prebuild + run: node .github/scripts/libmongocrypt.mjs ${{ runner.os == 'Windows' && '--build' || '' }} + shell: bash - - if: ${{ runner.os == 'Linux' }} - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + - id: upload + name: Upload prebuild + uses: actions/upload-artifact@v4 + with: + name: build-${{ matrix.os }} + path: prebuilds/ + if-no-files-found: 'error' + retention-days: 1 - - if: ${{ runner.os == 'Linux' }} - name: Build ${{ runner.os }} Prebuild - run: node .github/scripts/build_linux.mjs + linux_builds: + outputs: + artifact_id: ${{ steps.upload.outputs.artifact-id }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 - - if: ${{ runner.os != 'Linux' }} - name: Setup nodejs - uses: actions/setup-node@v4 - with: - node-version: 'lts/*' - cache: 'npm' - registry-url: 'https://registry.npmjs.org' + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 - - if: ${{ runner.os != 'Linux' }} - name: Build ${{ runner.os }} Prebuild - run: node .github/scripts/libmongocrypt.mjs - shell: bash + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Run Buildx + run: node .github/scripts/buildx.mjs - id: upload name: Upload prebuild uses: actions/upload-artifact@v4 with: - name: build-${{ matrix.os }} + name: build-linux path: prebuilds/ if-no-files-found: 'error' retention-days: 1 From 992cd5aac92443c7998d985bab12abc882f983ff Mon Sep 17 00:00:00 2001 From: Neal Beeken Date: Fri, 24 May 2024 10:55:03 -0400 Subject: [PATCH 7/9] chore: add the all build --- .github/scripts/libmongocrypt.mjs | 2 +- .github/workflows/build.yml | 23 +++++++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/.github/scripts/libmongocrypt.mjs b/.github/scripts/libmongocrypt.mjs index 2589be1..47f647a 100644 --- a/.github/scripts/libmongocrypt.mjs +++ b/.github/scripts/libmongocrypt.mjs @@ -232,7 +232,7 @@ async function main() { // install with "ignore-scripts" so that we don't attempt to download a prebuild await run('npm', ['install', '--ignore-scripts']); // The prebuild command will make both a .node file in `./build` (local and CI testing will run on current code) - // it will also produce `./prebuild/xx.tgz`. prebuild has GH upload functionality. + // it will also produce `./prebuilds/mongodb-client-encryption-vVERSION-napi-vNAPI_VERSION-OS-ARCH.tar.gz`. await run('npm', ['run', 'prebuild']); } diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4682903..0e5bf77 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,8 +9,6 @@ name: build jobs: macos_windows_builds: - outputs: - artifact_id: ${{ steps.upload.outputs.artifact-id }} strategy: matrix: os: [macos-11, macos-latest, windows-2019] @@ -30,6 +28,7 @@ jobs: path: prebuilds/ if-no-files-found: 'error' retention-days: 1 + compression-level: 0 linux_builds: outputs: @@ -55,3 +54,23 @@ jobs: path: prebuilds/ if-no-files-found: 'error' retention-days: 1 + compression-level: 0 + + collect: + needs: [linux_builds, macos_windows_builds] + runs-on: ubunutu-latest + steps: + - uses: actions/download-artifact@v4 + + - name: Display structure of downloaded files + run: ls -R + + - id: upload + name: Upload all prebuilds + uses: actions/upload-artifact@v4 + with: + name: all-build + path: '*.tar.gz' + if-no-files-found: 'error' + retention-days: 1 + compression-level: 0 From ad505a14eac7ac5e5f0a8f28da4fe2ff23a5a2f9 Mon Sep 17 00:00:00 2001 From: Neal Beeken Date: Fri, 24 May 2024 11:52:44 -0400 Subject: [PATCH 8/9] chore: split up linux builds --- .github/docker/Dockerfile.win | 23 ------------ .github/scripts/buildx.mjs | 68 ----------------------------------- .github/workflows/build.yml | 13 ++++--- 3 files changed, 9 insertions(+), 95 deletions(-) delete mode 100644 .github/docker/Dockerfile.win delete mode 100644 .github/scripts/buildx.mjs diff --git a/.github/docker/Dockerfile.win b/.github/docker/Dockerfile.win deleted file mode 100644 index 2f0409c..0000000 --- a/.github/docker/Dockerfile.win +++ /dev/null @@ -1,23 +0,0 @@ -#escape=` -FROM mcr.microsoft.com/windows/servercore:ltsc2016 - -# Set the Node.js version you want to install -ENV NODE_VERSION 16.20.1 - -# Download and install Node.js -RUN powershell -Command ` - $ErrorActionPreference = 'Stop'; ` - Invoke-WebRequest -Uri https://nodejs.org/dist/v$env:NODE_VERSION/node-v$env:NODE_VERSION-win-x64.zip -OutFile node.zip; ` - Expand-Archive -Path node.zip -DestinationPath C:\; ` - Rename-Item -Path C:\node-v$env:NODE_VERSION-win-x64 -NewName C:\nodejs; ` - Remove-Item -Force node.zip - -# Add Node.js to PATH -ENV PATH="C:\nodejs;C:\nodejs\node_modules\npm\bin;${PATH}" - -WORKDIR "C:\mongodb-client-encryption" -COPY . . - -RUN node "C:\mongodb-client-encryption\.github\scripts\libmongocrypt.mjs" - -CMD ["ping", "-i", "20", "localhost"] diff --git a/.github/scripts/buildx.mjs b/.github/scripts/buildx.mjs deleted file mode 100644 index fb5f342..0000000 --- a/.github/scripts/buildx.mjs +++ /dev/null @@ -1,68 +0,0 @@ -import child_process from 'node:child_process'; -import events from 'node:events'; -import fs from 'node:fs/promises'; -import path from 'node:path'; -import url from 'node:url'; - -const __dirname = path.dirname(url.fileURLToPath(import.meta.url)); - -/** Resolves to the root of this repository */ -function resolveRoot(...paths) { - return path.resolve(__dirname, '..', '..', ...paths); -} - -/** `xtrace` style command runner, uses spawn so that stdio is inherited */ -async function run(command, args = [], options = {}) { - const commandDetails = `+ ${command} ${args.join(' ')}${options.cwd ? ` (in: ${options.cwd})` : ''}`; - console.error(commandDetails); - const proc = child_process.spawn(command, args, { - stdio: 'inherit', - cwd: resolveRoot('.'), - ...options - }); - await events.once(proc, 'exit'); - - if (proc.exitCode != 0) throw new Error(`CRASH(${proc.exitCode}): ${commandDetails}`); -} - -async function main() { - await fs.rm(resolveRoot('build'), { recursive: true, force: true }); - await fs.rm(resolveRoot('prebuilds'), { recursive: true, force: true }); - - try { - // Locally you probably already have this - await run('docker', ['buildx', 'use', 'builder']); - } catch { - // But if not, create one - await run('docker', ['buildx', 'create', '--name', 'builder', '--bootstrap', '--use']); - } - - const platform = - process.platform === 'win32' ? 'windows/amd64' : 'linux/s390x,linux/arm64,linux/amd64'; - const dockerFile = - process.platform === 'win32' - ? resolveRoot('./.github/docker/Dockerfile.win') - : resolveRoot('./.github/docker/Dockerfile.glibc'); - - await run('docker', [ - 'buildx', - 'build', - // '--progress=plain', // By default buildx detects tty and does some fancy collapsing, set progress=plain for debugging - '--platform', - platform, - '--output', - 'type=local,dest=./prebuilds,platform-split=false', - '-f', - dockerFile, - resolveRoot('.') - ]); - - /** - * Running locally and want a fresh start? - * - * docker buildx prune --force - * docker buildx rm builder - */ -} - -await main(); diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0e5bf77..162026e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,7 +8,7 @@ on: name: build jobs: - macos_windows_builds: + host_builds: strategy: matrix: os: [macos-11, macos-latest, windows-2019] @@ -30,10 +30,13 @@ jobs: retention-days: 1 compression-level: 0 - linux_builds: + container_builds: outputs: artifact_id: ${{ steps.upload.outputs.artifact-id }} runs-on: ubuntu-latest + strategy: + matrix: + linux_arch: [linux/s390x, linux/arm64, linux/amd64] steps: - uses: actions/checkout@v4 @@ -44,7 +47,9 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Run Buildx - run: node .github/scripts/buildx.mjs + run: | + docker buildx create --name builder --bootstrap --use + docker buildx build --platform ${{ matrix.linux_arch }} --output type=local,dest=./prebuilds,platform-split=false -f ./.github/docker/Dockerfile.glibc . - id: upload name: Upload prebuild @@ -57,7 +62,7 @@ jobs: compression-level: 0 collect: - needs: [linux_builds, macos_windows_builds] + needs: [host_builds, container_builds] runs-on: ubunutu-latest steps: - uses: actions/download-artifact@v4 From 6ba75ee712b334943562399ca36cc0e2e9a0323f Mon Sep 17 00:00:00 2001 From: Neal Beeken Date: Fri, 24 May 2024 11:59:00 -0400 Subject: [PATCH 9/9] chore: distinct names --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 162026e..1270be7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,7 +36,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - linux_arch: [linux/s390x, linux/arm64, linux/amd64] + linux_arch: [s390x, arm64, amd64] steps: - uses: actions/checkout@v4 @@ -49,13 +49,13 @@ jobs: - name: Run Buildx run: | docker buildx create --name builder --bootstrap --use - docker buildx build --platform ${{ matrix.linux_arch }} --output type=local,dest=./prebuilds,platform-split=false -f ./.github/docker/Dockerfile.glibc . + docker buildx build --platform linux/${{ matrix.linux_arch }} --output type=local,dest=./prebuilds,platform-split=false -f ./.github/docker/Dockerfile.glibc . - id: upload name: Upload prebuild uses: actions/upload-artifact@v4 with: - name: build-linux + name: build-linux-${{ matrix.linux_arch }} path: prebuilds/ if-no-files-found: 'error' retention-days: 1