Skip to content

Prepare 0.3.0 release #16

Prepare 0.3.0 release

Prepare 0.3.0 release #16

name: Build loreline
on:
push:
branches:
- '**'
tags:
- v**
jobs:
build-loreline-windows:
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Checkout submodules
run: git submodule update --init --recursive
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Setup Haxe
working-directory: .
run: |
$NEKOPATH = $(Convert-Path .)+'/git/haxe-binary/windows/neko'
$HAXEPATH = $(Convert-Path .)+'/git/haxe-binary/windows/haxe'
echo $NEKOPATH >> $GITHUB_PATH
echo $HAXEPATH >> $GITHUB_PATH
echo $NEKOPATH
echo $HAXEPATH
- name: Build loreline
working-directory: .
run: |
node ./install --cpp
- name: Run loreline
working-directory: .
run: |
./loreline
- name: Check loreline version
if: startsWith(github.ref, 'refs/tags/')
working-directory: .
run: |
$GIT_TAG = $($env:GITHUB_REF).replace("refs/tags/", "")
./loreline version --check-tag $GIT_TAG
- name: Create zip archive
working-directory: .
run: |
$ZIP_COMPRESS = $(Convert-Path .)
$ZIP_INCLUDE = "loreline.exe"
$ZIP_DESTINATION = 'loreline-windows.zip'
$ZIP_FILES = Get-ChildItem -Path $ZIP_COMPRESS -Filter $ZIP_INCLUDE
Compress-Archive -Path $ZIP_FILES -DestinationPath $ZIP_DESTINATION -CompressionLevel Optimal
- name: Upload Files
uses: actions/upload-artifact@v4
with:
retention-days: 1
name: loreline-windows.zip
path: loreline-windows.zip
compression-level: 0
build-loreline-mac:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Checkout submodules
run: git submodule update --init --recursive
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Setup Haxe
working-directory: .
run: |
set -ex
export NEKOPATH=$PWD'/git/haxe-binary/mac/neko'
export HAXEPATH=$PWD'/git/haxe-binary/mac/haxe'
echo 'neko path: '$NEKOPATH
echo 'haxe path: '$HAXEPATH
sudo mkdir -p /usr/local/bin
sudo mkdir -p /usr/local/lib
sudo mkdir -p /usr/local/share/haxe
sudo ln -s $HAXEPATH/haxe /usr/local/bin/haxe
sudo ln -s $HAXEPATH/haxelib /usr/local/bin/haxelib
sudo ln -s $HAXEPATH/haxe-bin /usr/local/bin/haxe-bin
sudo ln -s $HAXEPATH/haxelib-bin /usr/local/bin/haxelib-bin
sudo ln -s $HAXEPATH/std /usr/local/share/haxe/std
sudo ln -s $NEKOPATH/neko /usr/local/bin/neko
sudo ln -s $NEKOPATH/nekoc /usr/local/bin/nekoc
sudo ln -s $NEKOPATH/nekoml /usr/local/bin/nekoml
sudo ln -s $NEKOPATH/nekotools /usr/local/bin/nekotools
sudo ln -s $NEKOPATH /usr/local/lib/neko
sudo ln -s $NEKOPATH/libneko.dylib /usr/local/lib/libneko.dylib
sudo ln -s $NEKOPATH/libneko.2.4.0.dylib /usr/local/lib/libneko.2.4.0.dylib
sudo ln -s $NEKOPATH/libneko.2.dylib /usr/local/lib/libneko.2.dylib
set +x
echo 'neko: '$(neko -version)
echo 'haxe: '$(haxe --version)
- name: Build loreline
working-directory: .
run: |
node ./install --cpp
- name: Run loreline
working-directory: .
run: |
./loreline
- name: Check loreline version
if: startsWith(github.ref, 'refs/tags/')
working-directory: .
run: |
GIT_TAG=${GITHUB_REF/refs\/tags\//}
./loreline version --check-tag $GIT_TAG
- name: Create zip archive
run: zip --symlinks -9 'loreline-mac.zip' loreline
- name: Upload Files
uses: actions/upload-artifact@v4
with:
retention-days: 1
name: loreline-mac.zip
path: loreline-mac.zip
compression-level: 0
build-loreline-linux-x86_64:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Checkout submodules
run: git submodule update --init --recursive
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Setup Haxe
working-directory: .
run: |
export NEKOPATH=$PWD'/git/haxe-binary/linux-x86_64/neko'
export HAXEPATH=$PWD'/git/haxe-binary/linux-x86_64/haxe'
echo 'neko path: '$NEKOPATH
echo 'haxe path: '$HAXEPATH
sudo mkdir -p /usr/local/bin
sudo mkdir -p /usr/local/lib
sudo mkdir -p /usr/local/share/haxe
sudo ln -s $HAXEPATH/haxe /usr/local/bin/haxe
sudo ln -s $HAXEPATH/haxelib /usr/local/bin/haxelib
sudo ln -s $HAXEPATH/haxe-bin /usr/local/bin/haxe-bin
sudo ln -s $HAXEPATH/haxelib-bin /usr/local/bin/haxelib-bin
sudo ln -s $HAXEPATH/std /usr/local/share/haxe/std
sudo ln -s $NEKOPATH/neko /usr/local/bin/neko
sudo ln -s $NEKOPATH/nekoc /usr/local/bin/nekoc
sudo ln -s $NEKOPATH/nekoml /usr/local/bin/nekoml
sudo ln -s $NEKOPATH/nekotools /usr/local/bin/nekotools
sudo ln -s $NEKOPATH /usr/local/lib/neko
sudo ln -s $NEKOPATH/libneko.so /usr/local/lib/libneko.so
sudo ln -s $NEKOPATH/libneko.so.2.4.0 /usr/local/lib/libneko.so.2.4.0
sudo ln -s $NEKOPATH/libneko.so.2 /usr/local/lib/libneko.so.2
sudo ldconfig
sudo ldconfig /usr/local/lib
echo 'neko: '$(neko -version)
echo 'haxe: '$(haxe --version)
- name: Build loreline
working-directory: .
run: |
node ./install --cpp
- name: Run loreline
working-directory: .
run: |
./loreline
- name: Check loreline version
if: startsWith(github.ref, 'refs/tags/')
working-directory: .
run: |
GIT_TAG=${GITHUB_REF/refs\/tags\//}
./loreline version --check-tag $GIT_TAG
- name: Create zip archive
run: zip --symlinks -9 'loreline-linux-x86_64.zip' loreline
- name: Upload Files
uses: actions/upload-artifact@v4
with:
retention-days: 1
name: loreline-linux-x86_64.zip
path: loreline-linux-x86_64.zip
compression-level: 0
build-loreline-linux-arm64:
runs-on: ubuntu-22.04
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: arm64
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Checkout submodules
run: git submodule update --init --recursive
- name: Create Dockerfile
run: |
cat > Dockerfile << 'EOL'
FROM --platform=$TARGETPLATFORM ubuntu:22.04
ARG NODE_VERSION
# Install dependencies
RUN apt-get update && apt-get install -y \
curl \
git \
zip \
sudo \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# Setup Node.js
RUN curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash - \
&& apt-get install -y nodejs
# Copy repository contents
COPY . /loreline
WORKDIR /loreline
# Setup Haxe
ENV NEKOPATH=/loreline/git/haxe-binary/linux-arm64/neko \
HAXEPATH=/loreline/git/haxe-binary/linux-arm64/haxe
RUN mkdir -p /usr/local/bin /usr/local/lib /usr/local/share/haxe \
&& ln -s $HAXEPATH/haxe /usr/local/bin/haxe \
&& ln -s $HAXEPATH/haxelib /usr/local/bin/haxelib \
&& ln -s $HAXEPATH/haxe-bin /usr/local/bin/haxe-bin \
&& ln -s $HAXEPATH/haxelib-bin /usr/local/bin/haxelib-bin \
&& ln -s $HAXEPATH/std /usr/local/share/haxe/std \
&& ln -s $NEKOPATH/neko /usr/local/bin/neko \
&& ln -s $NEKOPATH/nekoc /usr/local/bin/nekoc \
&& ln -s $NEKOPATH/nekoml /usr/local/bin/nekoml \
&& ln -s $NEKOPATH/nekotools /usr/local/bin/nekotools \
&& ln -s $NEKOPATH /usr/local/lib/neko \
&& ln -s $NEKOPATH/libneko.so /usr/local/lib/libneko.so \
&& ln -s $NEKOPATH/libneko.so.2.4.0 /usr/local/lib/libneko.so.2.4.0 \
&& ln -s $NEKOPATH/libneko.so.2 /usr/local/lib/libneko.so.2 \
&& ldconfig \
&& ldconfig /usr/local/lib
# Build loreline
RUN node ./install --cpp
# Run loreline
RUN ./loreline
# Create artifact
RUN zip --symlinks -9 'loreline-linux-arm64.zip' loreline
EOL
- name: Build in ARM64 container
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/arm64
load: true
tags: loreline-builder:latest
build-args: |
NODE_VERSION=22
file: ./Dockerfile
- name: Copy artifact from container
run: |
docker cp $(docker create loreline-builder:latest):/loreline/loreline-linux-arm64.zip .
- name: Upload Files
uses: actions/upload-artifact@v4
with:
retention-days: 1
name: loreline-linux-arm64.zip
path: loreline-linux-arm64.zip
compression-level: 0
create-release:
if: startsWith(github.ref, 'refs/tags/')
needs: [build-loreline-windows, build-loreline-mac, build-loreline-linux-x86_64, build-loreline-linux-arm64]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Download loreline-windows.zip
uses: actions/download-artifact@v4
with:
name: loreline-windows.zip
path: .
- name: Download loreline-mac.zip
uses: actions/download-artifact@v4
with:
name: loreline-mac.zip
path: .
- name: Download loreline-linux-x86_64.zip
uses: actions/download-artifact@v4
with:
name: loreline-linux-x86_64.zip
path: .
- name: Download loreline-linux-arm64.zip
uses: actions/download-artifact@v4
with:
name: loreline-linux-arm64.zip
path: .
- name: Extract tag name
id: extract_tag
run: echo "TAG_NAME=${GITHUB_REF##*/}" >> $GITHUB_ENV
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref }}
name: Loreline ${{ env.TAG_NAME }}
body: |
Loreline ${{ env.TAG_NAME }}
draft: false
prerelease: false
files: |
loreline-windows.zip
loreline-mac.zip
loreline-linux-x86_64.zip
loreline-linux-arm64.zip