Skip to content

Release

Release #45

Workflow file for this run

name: Release
on:
workflow_dispatch:
inputs:
version:
description: set release version
required: true
jobs:
android:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: '^1.21.5'
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Poetry
run: |
curl -sSL https://install.python-poetry.org | python - -y
poetry install
poetry run version ${{ github.event.inputs.version }}
pip install wheel
- name: build
run: |
export CGO_ENABLED=1
wget https://dl.google.com/android/repository/android-ndk-r26b-linux.zip > /dev/null
unzip android-ndk-r26b-linux.zip > /dev/null
export ANDROID_NDK_HOME=$(pwd)/android-ndk-r26b
export PATH=$PATH:$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin
#ARM64/AARCH64
export CC=$(which aarch64-linux-android28-clang)
export CXX=$(which aarch64-linux-android28-clang++)
export GOOS=android
export GOARCH=arm64
poetry run build goneonize
#ARM
export CC=$(which armv7a-linux-androideabi28-clang)
export CXX=$(which armv7a-linux-androideabi28-clang++)
export GOOS=android
export GOARCH=arm
poetry run build goneonize
#AMD64/x86_64
export CC=$(which x86_64-linux-android28-clang)
export CXX=$(which x86_64-linux-android28-clang++)
export GOOS=android
export GOARCH=amd64
poetry run build goneonize
#386/686
export CC=$(which i686-linux-android28-clang)
export CXX=$(which i686-linux-android28-clang++)
export GOOS=android
export GOARCH=386
poetry run build goneonize
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: Android
path: neonize/*.so
zig:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: '^1.21.5'
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Poetry
run: |
curl -sSL https://install.python-poetry.org | python - -y
poetry install
poetry run version ${{ github.event.inputs.version }}
pip install wheel
- name: build
run: |
poetry config pypi-token.pypi ${{ secrets.PYPI_TOKEN }}
mkdir LIBS
wget https://ziglang.org/builds/zig-linux-x86_64-0.14.0-dev.32+4aa15440c.tar.xz
xz -d zig-linux-x86_64-0.14.0-dev.32+4aa15440c.tar.xz
tar -xf zig-linux-x86_64-0.14.0-dev.32+4aa15440c.tar
export PATH=$(pwd)/zig-linux-x86_64-0.14.0-dev.32+4aa15440c:$PATH
export CGO_ENABLED=1
#AMD64
export GOOS=windows
export GOARCH=amd64
export CC="zig cc -target x86_64-windows"
poetry run build goneonize
poetry build
python3 repack.py
mv neonize/*.dll LIBS
#ARM64
export GOOS=windows
export GOARCH=arm64
export CC="zig cc -target aarch64-windows"
poetry run build goneonize
poetry build
python3 repack.py
mv neonize/*.dll LIBS
#X86 / 386
export GOOS=windows
export GOARCH=386
export CC="zig cc -target x86-windows"
poetry run build goneonize
poetry build
python3 repack.py
mv neonize/*.dll LIBS
#LINUX x86/386
export GOOS=linux
export GOARCH=386
export CC="zig cc -target x86-linux"
poetry run build goneonize
poetry build
python3 repack.py
mv neonize/*.so LIBS
poetry publish
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: Zig
path: |
LIBS/*.so
LIBS/*.dll
linux:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: '^1.21.5'
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Poetry
run: |
curl -sSL https://install.python-poetry.org | python - -y
- name: Installing Dependencies
run: |
sudo apt update && sudo apt install wget gcc-aarch64-linux-gnu gcc-s390x-linux-gnu gcc-riscv64-linux-gnu -y
poetry install
poetry run version ${{ github.event.inputs.version }}
pip install wheel
- name: build
run: |
poetry config pypi-token.pypi ${{ secrets.PYPI_TOKEN }}
mkdir LIBS
#AMD64/X86_64
export CGO_ENABLED=1
poetry run build goneonize
poetry build
python3 repack.py
mv neonize/*.so LIBS
#ARM64/AARCH64
export GOOS=linux
export GOARCH=arm64
export CC=$(which aarch64-linux-gnu-gcc)
export CXX=$(which aarch64-linux-gnu-cpp)
poetry run build goneonize
poetry build
python3 repack.py
mv neonize/*.so LIBS
#RISCV64
export GOOS=linux
export GOARCH=riscv64
export CC=$(which riscv64-linux-gnu-gcc)
export CXX=$(which riscv64-linux-gnu-cpp)
poetry run build goneonize
mv neonize/*.so LIBS
#S390X
export GOOS=linux
export GOARCH=s390x
export CC=$(which s390x-linux-gnu-gcc)
export CXX=$(which s390x-linux-gnu-cpp)
poetry run build goneonize
poetry build
python3 repack.py
mv neonize/*.so LIBS
poetry publish
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: Linux
path: LIBS/*.so
darwin:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: '^1.21.5'
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Poetry
run: |
curl -sSL https://install.python-poetry.org | python - -y
export PATH="/Users/runner/.local/bin:$PATH"
poetry install
poetry run version ${{ github.event.inputs.version }}
pip install wheel
- name: build
run: |
poetry config pypi-token.pypi ${{ secrets.PYPI_TOKEN }}
mkdir LIBS
export PATH="/Users/runner/.local/bin:$PATH"
# Set necessary environment variables for building on Darwin
export CGO_ENABLED=1
# Build for Darwin (macOS)
# AMD64/X86_64
export GOOS=darwin
export GOARCH=amd64
export CC=$(which clang)
export CXX=$(which clang++)
poetry run build goneonize
poetry build
python3 repack.py
mv neonize/*.dylib LIBS/
#ARM64/AARCH64
export GOOS=darwin
export GOARCH=arm64
export CC=$(which clang)
export CXX=$(which clang++)
poetry run build goneonize
poetry build
python3 repack.py
mv neonize/*.dylib LIBS/
poetry publish
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: Darwin
path: LIBS/*.dylib
release:
runs-on: ubuntu-latest
needs: [android, zig, linux, darwin]
steps:
- name: Download Artifact
uses: actions/download-artifact@v4
with:
merge-multiple: true
path: sharedlib
- name: Upload shared library to draft release
uses: softprops/action-gh-release@v1
with:
draft: false
files: |
sharedlib/*.so
sharedlib/*.dll
sharedlib/*.dylib
generate_release_notes: true
tag_name: ${{ github.event.inputs.version }}
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Poetry
run: |
rm -rf sharedlib
curl -sSL https://install.python-poetry.org | python - -y
- name: Publish
run: |
poetry version ${{ github.event.inputs.version }}
poetry config pypi-token.pypi ${{ secrets.PYPI_TOKEN }}
poetry build && poetry publish