Skip to content

v3.3.7-258420

v3.3.7-258420 #5

name: prebuilt-binaries-host
on:
workflow_dispatch:
inputs:
version:
description: New version
required: false
type: string
publish:
description: Publish
required: false
default: false
type: boolean
push:
tags:
- "*"
permissions:
contents: write
actions: read
env:
PREBUILT_DIR: prebuilt-artifacts
PREBUILT_RUNTIME: node
jobs:
metadata:
name: Resolve Version
runs-on: ubuntu-latest
outputs:
version: ${{ steps.versions.outputs.version }}
tag: ${{ steps.versions.outputs.tag }}
should_publish: ${{ steps.versions.outputs.should_publish }}
steps:
- uses: actions/checkout@v4
- id: versions
env:
EVENT_NAME: ${{ github.event_name }}
INPUT_VERSION: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.version || '' }}
PUBLISH_INPUT: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.publish || 'true' }}
RELEASE_TAG: ${{ github.event_name == 'release' && github.event.release.tag_name || '' }}
run: ./.github/scripts/resolve-version.sh
linux:
name: Linux (${{ matrix.slug }})
needs: metadata
runs-on: ubuntu-22.04
container:
image: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
include:
- slug: x64
npm_arch: x64
image: vscodium/vscodium-linux-build-agent:focal-x64
- slug: arm64
npm_arch: arm64
image: vscodium/vscodium-linux-build-agent:focal-arm64
- slug: armhf
npm_arch: arm
image: vscodium/vscodium-linux-build-agent:focal-armhf
- slug: riscv64
npm_arch: riscv64
image: vscodium/vscodium-linux-build-agent:focal-riscv64
- slug: loong64
npm_arch: loong64
image: vscodium/vscodium-linux-build-agent:beige-loong64
- slug: ppc64le
npm_arch: ppc64
image: vscodium/vscodium-linux-build-agent:focal-ppc64le
- slug: s390x
npm_arch: s390x
image: vscodium/vscodium-linux-build-agent:focal-s390x
env:
TARGET_PLATFORM: linux
PACKAGE_VERSION: ${{ needs.metadata.outputs.version }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- name: Install system dependencies
run: ./.github/scripts/linux/install-host-deps.sh
- name: Install npm dependencies
run: npm install --no-fund --no-audit --ignore-scripts
- name: Build native module
env:
npm_config_build_from_source: true
npm_config_arch: ${{ matrix.npm_arch }}
npm_config_target_arch: ${{ matrix.npm_arch }}
run: npx node-gyp rebuild
- name: Verify binary architecture
run: ./.github/scripts/linux/verify-elf.sh '${{ matrix.slug }}' build/Release/keymapping.node
- name: Package artifact
run: ./.github/scripts/package-tar.sh '${{ env.TARGET_PLATFORM }}' '${{ matrix.slug }}' '${{ env.PACKAGE_VERSION }}'
- uses: actions/upload-artifact@v4
with:
name: native-keymap-${{ env.TARGET_PLATFORM }}-${{ matrix.slug }}
path: |
${{ env.PREBUILT_DIR }}/native-keymap-v${{ env.PACKAGE_VERSION }}-${{ env.PREBUILT_RUNTIME }}-v*-${{ env.TARGET_PLATFORM }}-${{ matrix.slug }}.tar.gz
${{ env.PREBUILT_DIR }}/native-keymap-v${{ env.PACKAGE_VERSION }}-${{ env.PREBUILT_RUNTIME }}-v*-${{ env.TARGET_PLATFORM }}-${{ matrix.slug }}.tar.gz.sha256
macos:
name: macOS (${{ matrix.arch }})
needs: metadata
runs-on: macos-14
strategy:
fail-fast: false
matrix:
arch: [x64, arm64]
env:
TARGET_PLATFORM: darwin
PACKAGE_VERSION: ${{ needs.metadata.outputs.version }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- name: Install npm dependencies
run: npm install --no-fund --no-audit --ignore-scripts
- name: Build native module
env:
npm_config_build_from_source: true
npm_config_arch: ${{ matrix.arch }}
run: npx node-gyp rebuild
- name: Verify binary architecture
run: ./.github/scripts/macos/verify-macho.sh '${{ matrix.arch }}' build/Release/keymapping.node
- name: Package artifact
run: ./.github/scripts/package-tar.sh '${{ env.TARGET_PLATFORM }}' '${{ matrix.arch }}' '${{ env.PACKAGE_VERSION }}'
- uses: actions/upload-artifact@v4
with:
name: native-keymap-${{ env.TARGET_PLATFORM }}-${{ matrix.arch }}
path: |
${{ env.PREBUILT_DIR }}/native-keymap-v${{ env.PACKAGE_VERSION }}-${{ env.PREBUILT_RUNTIME }}-v*-${{ env.TARGET_PLATFORM }}-${{ matrix.arch }}.tar.gz
${{ env.PREBUILT_DIR }}/native-keymap-v${{ env.PACKAGE_VERSION }}-${{ env.PREBUILT_RUNTIME }}-v*-${{ env.TARGET_PLATFORM }}-${{ matrix.arch }}.tar.gz.sha256
windows:
name: Windows (${{ matrix.arch }})
needs: metadata
runs-on: windows-2022
strategy:
fail-fast: false
matrix:
arch: [x64, arm64]
env:
TARGET_PLATFORM: win32
PACKAGE_VERSION: ${{ needs.metadata.outputs.version }}
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- name: Install npm dependencies
run: npm install --no-fund --no-audit --ignore-scripts
- name: Build native module
env:
npm_config_build_from_source: true
npm_config_arch: ${{ matrix.arch }}
npm_config_target_arch: ${{ matrix.arch }}
run: npx node-gyp rebuild
- name: Verify binary architecture
run: ./.github/scripts/windows/verify-pe.sh '${{ matrix.arch }}' 'build/Release/keymapping.node'
- name: Package artifact
run: ./.github/scripts/package-tar.sh '${{ env.TARGET_PLATFORM }}' '${{ matrix.arch }}' '${{ env.PACKAGE_VERSION }}'
- uses: actions/upload-artifact@v4
with:
name: native-keymap-${{ env.TARGET_PLATFORM }}-${{ matrix.arch }}
path: |
${{ env.PREBUILT_DIR }}/native-keymap-v${{ env.PACKAGE_VERSION }}-${{ env.PREBUILT_RUNTIME }}-v*-${{ env.TARGET_PLATFORM }}-${{ matrix.arch }}.tar.gz
${{ env.PREBUILT_DIR }}/native-keymap-v${{ env.PACKAGE_VERSION }}-${{ env.PREBUILT_RUNTIME }}-v*-${{ env.TARGET_PLATFORM }}-${{ matrix.arch }}.tar.gz.sha256
publish:
name: Publish Release
needs:
- metadata
- linux
- macos
- windows
if: needs.metadata.outputs.should_publish == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js for npm publish
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
registry-url: https://registry.npmjs.org
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: collected-artifacts
- name: Flatten artifact structure
run: ./.github/scripts/flatten-artifacts.sh
- name: Publish package to npm
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: ./.github/scripts/npm-publish.sh
- name: Publish release assets
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.metadata.outputs.tag }}
name: ${{ needs.metadata.outputs.tag }}
files: release/*
draft: false
prerelease: false