Skip to content

Make GC2 the sole GC64 collector path #19

Make GC2 the sole GC64 collector path

Make GC2 the sole GC64 collector path #19

Workflow file for this run

name: Rolling release
on:
push:
tags:
- "b*.*.*"
workflow_dispatch:
inputs:
tag:
description: "Existing b<major>.<minor>.<patch> tag to package"
required: true
type: string
permissions:
contents: write
env:
LJ_RELEASE_RUN_STOCK: "0"
jobs:
validate:
name: Validate rolling tag
runs-on: ubuntu-24.04
env:
RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}
steps:
- name: Validate bX.Y.Z tag
run: |
if [[ "$RELEASE_TAG" == "b1.1" ]]; then
echo "::error::release b1.1 was renamed to b1.0.1; use b1.0.1"
exit 1
elif [[ ! "$RELEASE_TAG" =~ ^b[0-9]+[.][0-9]+[.][0-9]+$ ]]; then
echo "::error::rolling releases must use b<major>.<minor>.<patch> tags, got '$RELEASE_TAG'"
exit 1
fi
linux:
name: Linux x86_64 artifact
runs-on: ubuntu-24.04
needs: validate
env:
RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}
SOURCE_REF: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref }}
LUA: luajit
steps:
- name: Checkout release automation
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
path: automation
fetch-depth: 0
- name: Install verification tools
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends unzip xz-utils
- name: Checkout release source
uses: actions/checkout@v4
with:
ref: ${{ env.SOURCE_REF }}
path: source
fetch-depth: 0
- name: Install build tools
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential luajit xz-utils
- name: Build, install, test, and archive Linux binary
run: |
LJ_RELEASE_ROOT="$PWD/source" \
automation/tools/release/build_artifact.sh \
linux-x86_64 "$RELEASE_TAG" "$PWD/source/release-artifacts/$RELEASE_TAG"
- uses: actions/upload-artifact@v4
with:
name: rolling-release-linux
path: |
source/release-artifacts/${{ env.RELEASE_TAG }}/LuaJITMT-${{ env.RELEASE_TAG }}-linux-x86_64.tar.xz
source/release-artifacts/${{ env.RELEASE_TAG }}/LuaJITMT-${{ env.RELEASE_TAG }}-linux-x86_64.tar.xz.sha256
macos:
name: macOS x86_64 artifact
runs-on: macos-26-intel
needs: validate
env:
RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}
SOURCE_REF: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref }}
LUA: luajit
MACOSX_DEPLOYMENT_TARGET: "13.0"
steps:
- name: Checkout release automation
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
path: automation
fetch-depth: 0
- name: Checkout release source
uses: actions/checkout@v4
with:
ref: ${{ env.SOURCE_REF }}
path: source
fetch-depth: 0
- name: Install packaging tools
run: |
if ! command -v luajit >/dev/null 2>&1; then
brew install luajit
fi
if ! command -v xz >/dev/null 2>&1; then
brew install xz
fi
- name: Build, install, test, and archive macOS binary
run: |
LJ_RELEASE_ROOT="$PWD/source" \
automation/tools/release/build_artifact.sh \
macos-x86_64 "$RELEASE_TAG" "$PWD/source/release-artifacts/$RELEASE_TAG"
- uses: actions/upload-artifact@v4
with:
name: rolling-release-macos
path: |
source/release-artifacts/${{ env.RELEASE_TAG }}/LuaJITMT-${{ env.RELEASE_TAG }}-macos-x86_64.tar.xz
source/release-artifacts/${{ env.RELEASE_TAG }}/LuaJITMT-${{ env.RELEASE_TAG }}-macos-x86_64.tar.xz.sha256
windows-ucrt:
name: Windows x86_64 UCRT artifact
runs-on: ubuntu-24.04
container: debian:trixie
needs: validate
env:
RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}
SOURCE_REF: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref }}
LUA: luajit
steps:
- name: Install build tools
run: |
apt-get update
apt-get install -y --no-install-recommends \
build-essential ca-certificates file git luajit make unzip xz-utils zip \
binutils-mingw-w64-ucrt64 gcc-mingw-w64-ucrt64 mingw-w64 \
wine wine64
- name: Checkout release automation
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
path: automation
fetch-depth: 0
- name: Checkout release source
uses: actions/checkout@v4
with:
ref: ${{ env.SOURCE_REF }}
path: source
fetch-depth: 0
- name: Build, install, test, and archive Windows UCRT binary
run: |
mkdir -p "$PWD/.ci-home" "$PWD/.wine"
export HOME="$PWD/.ci-home"
export WINEPREFIX="$PWD/.wine"
git config --global --add safe.directory "$PWD/source"
LJ_RELEASE_ROOT="$PWD/source" \
automation/tools/release/build_artifact.sh \
windows-x86_64-ucrt "$RELEASE_TAG" "$PWD/source/release-artifacts/$RELEASE_TAG"
- uses: actions/upload-artifact@v4
with:
name: rolling-release-windows-ucrt
path: |
source/release-artifacts/${{ env.RELEASE_TAG }}/LuaJITMT-${{ env.RELEASE_TAG }}-windows-x86_64-ucrt.zip
source/release-artifacts/${{ env.RELEASE_TAG }}/LuaJITMT-${{ env.RELEASE_TAG }}-windows-x86_64-ucrt.zip.sha256
publish:
name: Publish GitHub release
runs-on: ubuntu-24.04
needs:
- linux
- macos
- windows-ucrt
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}
SOURCE_REF: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref }}
steps:
- name: Checkout release automation
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
path: automation
fetch-depth: 0
- name: Checkout release source
uses: actions/checkout@v4
with:
ref: ${{ env.SOURCE_REF }}
path: source
fetch-depth: 0
- uses: actions/download-artifact@v4
with:
path: dist
merge-multiple: true
- name: Generate release notes and checksums
run: |
automation/tools/release/verify_artifacts.sh "$RELEASE_TAG" dist
find dist -maxdepth 1 -type f -name '*.sha256' -delete
(cd dist && find . -maxdepth 1 -type f -name 'LuaJITMT-*' -print0 |
sort -z | xargs -0 sha256sum > SHA256SUMS)
LJ_RELEASE_ROOT="$PWD/source" \
automation/tools/release/release_notes.sh "$RELEASE_TAG" > RELEASE_NOTES.md
test -s RELEASE_NOTES.md || printf -- '- Rolling release %s\n' "$RELEASE_TAG" > RELEASE_NOTES.md
- name: Create or update release
run: |
if gh release view "$RELEASE_TAG" >/dev/null 2>&1; then
gh release edit "$RELEASE_TAG" \
--title "$RELEASE_TAG" \
--notes-file RELEASE_NOTES.md \
--prerelease
else
gh release create "$RELEASE_TAG" \
--title "$RELEASE_TAG" \
--notes-file RELEASE_NOTES.md \
--prerelease
fi
gh release upload "$RELEASE_TAG" dist/* --clobber