Skip to content

use job matrix

use job matrix #17

name: Build binaries
on:
push:
branches: [build]
pull_request:
branches: [build]
jobs:
build-binaries:
name: Build binaries
strategy:
matrix:
runner: [macos-13, macos-latest, ubuntu-latest, windows-latest]
node: [22.x]
include:
- runner: macos-13
os: mac
arch: x64
- runner: macos-latest
os: mac
arch: arm
- runner: ubuntu-latest
os: linux
arch: x64
- runner: windows-latest
os: windows
arch: x64
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm ci
- name: Build binary
run: npm run build
- uses: actions/upload-artifact@v4
with:
# Name of the artifact to upload.
# Optional. Default is 'artifact'
name: fauna-shell-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.node }}
# A file, directory or wildcard pattern that describes what to upload
# Required.
path: ${{ matrix.os == 'windows' && 'dist/fauna' || 'dist\fauna.exe' }}
# The desired behavior if no files are found using the provided path.
# Available Options:
# warn: Output a warning but do not fail the action
# error: Fail the action with an error message
# ignore: Do not output any warnings or errors, the action does not fail
# Optional. Default is 'warn'
if-no-files-found: error
# Duration after which artifact will expire in days. 0 means using default retention.
# Minimum 1 day.
# Maximum 90 days unless changed from the repository settings page.
# Optional. Defaults to repository settings.
retention-days: 1
# The level of compression for Zlib to be applied to the artifact archive.
# The value can range from 0 to 9.
# For large files that are not easily compressed, a value of 0 is recommended for significantly faster uploads.
# Optional. Default is '6'
compression-level: 6
# If true, an artifact with a matching name will be deleted before a new one is uploaded.
# If false, the action will fail if an artifact for the given name already exists.
# Does not fail if the artifact does not exist.
# Optional. Default is 'false'
overwrite: true
# Whether to include hidden files in the provided path in the artifact
# The file contents of any hidden files in the path should be validated before
# enabled this to avoid uploading sensitive information.
# Optional. Default is 'false'
include-hidden-files: false