Skip to content

Nightly Release

Nightly Release #1199

Workflow file for this run

name: Nightly Release
on:
workflow_dispatch:
schedule:
- cron: "0 0 * * *" # Runs at 00:00 UTC every day
env:
MACOSX_DEPLOYMENT_TARGET: "10.15"
jobs:
dist:
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
artifact-name: luau-lsp-win64
code-target: [win32-x64]
crash-reporting: true
- os: ubuntu-22.04
artifact-name: luau-lsp-linux
code-target: [linux-x64]
crash-reporting: false
- os: macos-latest
artifact-name: luau-lsp-macos
code-target: [darwin-x64, darwin-arm64]
crash-reporting: true
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
submodules: recursive
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Set Nightly Version
shell: bash
run: |
DATE=$(date +%Y%m%d)
VERSION="0.$DATE.0"
sed -i.bak "s/set(LSP_VERSION .*/set(LSP_VERSION \"$VERSION\")/g" CMakeLists.txt
jq ".version = \"$VERSION\"" editors/code/package.json > tmp.json && mv tmp.json editors/code/package.json
- name: Build Server
run: |
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DLSP_STATIC_CRT:BOOL=ON -DLUAU_ENABLE_TIME_TRACE:BOOL=ON -DLSP_BUILD_WITH_SENTRY:BOOL=${{ matrix.crash-reporting }} ..
cmake --build . --config RelWithDebInfo --target Luau.LanguageServer.CLI -j 3
- name: (MacOS) Verify universal build
if: matrix.os == 'macos-latest'
run: lipo -archs build/luau-lsp
- name: (MacOS) Separate debug symbols
if: matrix.os == 'macos-latest'
run: dsymutil build/luau-lsp && strip -S build/luau-lsp
- name: (Linux) Separate debug symbols
if: matrix.os == 'ubuntu-22.04'
run: objcopy --only-keep-debug build/luau-lsp build/luau-lsp.dbg && objcopy --strip-debug build/luau-lsp
- name: Copy Build into Extension
shell: bash
run: |
mkdir -p ./dist
mkdir -p editors/code/bin
if [ "${{ matrix.os }}" = "windows-latest" ]; then
cp build/RelWithDebInfo/luau-lsp.exe editors/code/bin/server.exe
cp build/RelWithDebInfo/luau-lsp.pdb editors/code/bin/server.pdb
else
cp build/luau-lsp editors/code/bin/server
chmod 777 editors/code/bin/server
fi
- name: Copy Crashpad Handler into Extension
shell: bash
if: matrix.crash-reporting == true
run: |
if [ "${{ matrix.os }}" = "windows-latest" ]; then
cp build/RelWithDebInfo/crashpad_handler.exe editors/code/bin/crashpad_handler.exe
else
cp build/crashpad_handler editors/code/bin/crashpad_handler
chmod 777 editors/code/bin/crashpad_handler
fi
- name: Setup Sentry CLI
uses: matbour/setup-sentry-cli@v2
if: matrix.crash-reporting == true
with:
token: ${{ secrets.SENTRY_AUTH_TOKEN }}
organization: luau-lsp
project: luau-lsp
- name: Upload debug symbols
shell: bash
if: matrix.crash-reporting == true
run: |
sentry-cli debug-files upload --include-sources build
- name: Create Release Archive
shell: bash
run: |
mkdir staging
if [ "${{ matrix.os }}" = "windows-latest" ]; then
cp "build/RelWithDebInfo/luau-lsp.exe" staging/
cd staging
7z a ../dist/server.zip *
else
cp "build/luau-lsp" staging/
cd staging
zip ../dist/server.zip *
fi
- name: Copy README, CHANGELOG, LICENSE
shell: bash
run: |
rm -f editors/code/README.md
cp README.md editors/code/README.md
rm -f editors/code/CHANGELOG.md
cp CHANGELOG.md editors/code/CHANGELOG.md
rm -f editors/code/LICENSE.md
cp LICENSE.md editors/code/LICENSE
- run: npm ci
working-directory: editors/code
- name: Package Extension
working-directory: editors/code
run: npx vsce package -o "../../dist/${{ matrix.artifact-name }}.vsix"
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: nightly-${{ matrix.artifact-name }}
path: ./dist