diff --git a/.github/workflows/build-binaries.yml b/.github/workflows/build-binaries.yml index 7c235b9c..bc6cda95 100644 --- a/.github/workflows/build-binaries.yml +++ b/.github/workflows/build-binaries.yml @@ -6,14 +6,33 @@ on: branches: [build] jobs: - build-binary-on-ubuntu: - name: Build binary (SEA) for Linux - runs-on: ubuntu-latest + 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: "22.x" + node-version: ${{ matrix.node }} - run: npm ci - name: Build binary run: npm run build @@ -21,117 +40,11 @@ jobs: with: # Name of the artifact to upload. # Optional. Default is 'artifact' - name: fauna-shell-linux + name: fauna-shell-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.node }} # A file, directory or wildcard pattern that describes what to upload # Required. - path: dist/fauna - - # 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 - - build-binary-on-windows: - name: Build binary (SEA) for Windows - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: "22.x" - - 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-windows - - # A file, directory or wildcard pattern that describes what to upload - # Required. - path: 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 - - build-binary-on-mac: - name: Build binary (SEA) for Mac - runs-on: macos-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: "22.x" - - 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-mac - - # A file, directory or wildcard pattern that describes what to upload - # Required. - path: dist/fauna + path: ${{ matrix.os == 'windows' && 'dist/fauna' || 'dist\fauna.exe' }} # The desired behavior if no files are found using the provided path. # Available Options: