Skip to content

Build Haxe Language Server Binaries #2

Build Haxe Language Server Binaries

Build Haxe Language Server Binaries #2

Workflow file for this run

name: Build Haxe Language Server Binaries
on:
workflow_dispatch:
jobs:
build:
name: Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
steps:
- name: Checkout repository with submodules
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install pkg
run: npm install -g pkg
- name: Build binaries (Windows)
if: runner.os == 'Windows'
shell: bash
run: |
mkdir -p bin/win
pkg language-servers/haxe/server.js --targets node22-win-x64 --output bin/win/haxe-language-server-x64
pkg language-servers/haxe/server.js --targets node22-win-arm64 --output bin/win/haxe-language-server-arm64
- name: Zip artifacts (Windows)
if: runner.os == 'Windows'
shell: bash
run: |
cd bin/win
7z a haxe-language-server-win-x64.zip haxe-language-server-x64.exe
7z a haxe-language-server-win-arm64.zip haxe-language-server-arm64.exe
- name: Upload Windows x64
if: runner.os == 'Windows'
uses: actions/upload-artifact@v4
with:
name: haxe-language-server-win-x64
path: bin/win/haxe-language-server-win-x64.zip
- name: Upload Windows arm64
if: runner.os == 'Windows'
uses: actions/upload-artifact@v4
with:
name: haxe-language-server-win-arm64
path: bin/win/haxe-language-server-win-arm64.zip
- name: Build binaries (Linux)
if: runner.os == 'Linux'
run: |
mkdir -p bin/linux
pkg language-servers/haxe/server.js --targets node22-linuxstatic-x64 --output bin/linux/haxe-language-server-x64
pkg language-servers/haxe/server.js --targets node22-linuxstatic-arm64 --output bin/linux/haxe-language-server-arm64
pkg language-servers/haxe/server.js --targets node20-linuxstatic-armv7 --output bin/linux/haxe-language-server-armv7
- name: Zip artifacts (Linux)
if: runner.os == 'Linux'
run: |
cd bin/linux
zip haxe-language-server-linux-x64.zip haxe-language-server-x64
zip haxe-language-server-linux-arm64.zip haxe-language-server-arm64
zip haxe-language-server-linux-armv7.zip haxe-language-server-armv7
- name: Upload Linux x64
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
name: haxe-language-server-linux-x64
path: bin/linux/haxe-language-server-linux-x64.zip
- name: Upload Linux arm64
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
name: haxe-language-server-linux-arm64
path: bin/linux/haxe-language-server-linux-arm64.zip
- name: Upload Linux armv7
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
name: haxe-language-server-linux-armv7
path: bin/linux/haxe-language-server-linux-armv7.zip
- name: Build binaries (macOS)
if: runner.os == 'macOS'
run: |
mkdir -p bin/mac
pkg language-servers/haxe/server.js --targets node22-macos-x64 --output bin/mac/haxe-language-server-x64
pkg language-servers/haxe/server.js --targets node22-macos-arm64 --output bin/mac/haxe-language-server-arm64
- name: Zip artifacts (macOS)
if: runner.os == 'macOS'
run: |
cd bin/mac
zip haxe-language-server-mac-x64.zip haxe-language-server-x64
zip haxe-language-server-mac-arm64.zip haxe-language-server-arm64
- name: Upload macOS x64
if: runner.os == 'macOS'
uses: actions/upload-artifact@v4
with:
name: haxe-language-server-mac-x64
path: bin/mac/haxe-language-server-mac-x64.zip
- name: Upload macOS arm64
if: runner.os == 'macOS'
uses: actions/upload-artifact@v4
with:
name: haxe-language-server-mac-arm64
path: bin/mac/haxe-language-server-mac-arm64.zip
commit:
name: Collect and commit binaries
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout repository with submodules
uses: actions/checkout@v4
with:
submodules: recursive
token: ${{ secrets.GITHUB_TOKEN }}
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts/
- name: Unzip Windows artifacts
run: |
mkdir -p bin/win
unzip -o artifacts/haxe-language-server-win-x64/haxe-language-server-win-x64.zip -d bin/win/
unzip -o artifacts/haxe-language-server-win-arm64/haxe-language-server-win-arm64.zip -d bin/win/
- name: Unzip Linux artifacts
run: |
mkdir -p bin/linux
unzip -o artifacts/haxe-language-server-linux-x64/haxe-language-server-linux-x64.zip -d bin/linux/
unzip -o artifacts/haxe-language-server-linux-arm64/haxe-language-server-linux-arm64.zip -d bin/linux/
unzip -o artifacts/haxe-language-server-linux-armv7/haxe-language-server-linux-armv7.zip -d bin/linux/
- name: Unzip macOS artifacts
run: |
mkdir -p bin/mac
unzip -o artifacts/haxe-language-server-mac-x64/haxe-language-server-mac-x64.zip -d bin/mac/
unzip -o artifacts/haxe-language-server-mac-arm64/haxe-language-server-mac-arm64.zip -d bin/mac/
- name: Restore executable permissions
run: |
chmod +x bin/linux/haxe-language-server-x64 \
bin/linux/haxe-language-server-arm64 \
bin/linux/haxe-language-server-armv7 \
bin/mac/haxe-language-server-x64 \
bin/mac/haxe-language-server-arm64
- name: Commit and push binaries
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add bin/
# Only commit if there is something new
git diff --cached --quiet && echo "No changes to commit." || \
git commit -m "ci: update pre-built language server binaries [skip ci]"
git push