Skip to content

Release

Release #84

Workflow file for this run

name: Release
on:
workflow_dispatch:
inputs:
version_major:
description: Specify whether the major version (<major>.minor.patch.post) should be updated.
type: boolean
required: false
default: false
version_minor:
description: Specify whether the minor version (major.<minor>.patch.post) should be updated.
type: boolean
required: false
default: false
version_patch:
description: Specify whether the patch version (major.minor.<patch>.post) should be updated.
type: boolean
required: false
version_post:
description: Specify whether the post version (major.minor.patch.<post>) should be updated.
type: boolean
required: false
default: true
env:
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
VERSION_MAJOR: ${{ github.event.inputs.version_major }}
VERSION_MINOR: ${{ github.event.inputs.version_minor }}
VERSION_PATCH: ${{ github.event.inputs.version_patch }}
VERSION_POST: ${{ github.event.inputs.version_post }}
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 uv
uses: astral-sh/setup-uv@v5
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
**/.venv
key: ${{ runner.os }}-${{ hashFiles('**/uv.lock') }}
- name: install deps
run: |
uv sync --dev
uv run task version --set-url "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" info
bash bump_version.sh
- name: build
run: |
uv run task goneonize_changed
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
uv run task build goneonize
#ARM
export CC=$(which armv7a-linux-androideabi28-clang)
export CXX=$(which armv7a-linux-androideabi28-clang++)
export GOOS=android
export GOARCH=arm
uv run task 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
uv run task build goneonize
#386/686
export CC=$(which i686-linux-android28-clang)
export CXX=$(which i686-linux-android28-clang++)
export GOOS=android
export GOARCH=386
uv run task build goneonize
continue-on-error: true
- 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"
- uses: mlugg/setup-zig@v1
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
**/.venv
key: ${{ runner.os }}-${{ hashFiles('**/uv.lock') }}
- name: install deps
run: |
uv sync --dev
uv run task version --set-url "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" info
bash bump_version.sh
- name: build
run: |
uv run task goneonize_changed
mkdir LIBS
export CGO_ENABLED=1
#AMD64
export GOOS=windows
export GOARCH=amd64
export CC="zig cc -target x86_64-windows"
uv run task build goneonize
uv build
uv run task repack
mv neonize/*.dll LIBS
#ARM64
export GOOS=windows
export GOARCH=arm64
export CC="zig cc -target aarch64-windows"
uv run task build goneonize
uv build
uv run task repack
mv neonize/*.dll LIBS
#X86 / 386
export GOOS=windows
export GOARCH=386
export CC="zig cc -target x86-windows"
uv run task build goneonize
uv build
uv run task repack
mv neonize/*.dll LIBS
#LINUX x86/386
export GOOS=linux
export GOARCH=386
export CC="zig cc -target x86-linux"
uv run task build goneonize
uv build
uv run task repack
mv neonize/*.so LIBS
cp dist/*.whl LIBS/
if [[ $UV_PUBLISH_TOKEN ]];then
uv publish
fi
continue-on-error: true
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: Zig
path: |
LIBS/*
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 uv
uses: astral-sh/setup-uv@v5
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
**/.venv
key: ${{ runner.os }}-${{ hashFiles('**/uv.lock') }}
- name: install deps
run: |
uv sync --dev
uv run task version --set-url "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" info
bash bump_version.sh
- name: Installing Dev Package
run: sudo apt update && sudo apt install wget gcc-aarch64-linux-gnu gcc-s390x-linux-gnu gcc-riscv64-linux-gnu -y
- name: build
run: |
uv run task goneonize_changed
mkdir LIBS
#AMD64/X86_64
export CGO_ENABLED=1
uv run task build goneonize
uv build
uv run task repack
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)
uv run task build goneonize
uv build
uv run task repack
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)
uv run task 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)
uv run task build goneonize
uv build
uv run task repack
mv neonize/*.so LIBS
cp dist/*.whl LIBS/
if [[ $UV_PUBLISH_TOKEN ]];then
uv publish
fi
continue-on-error: true
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: Linux
path: LIBS/*
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 uv
uses: astral-sh/setup-uv@v5
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
**/.venv
key: ${{ runner.os }}-${{ hashFiles('**/uv.lock') }}
- name: install deps
run: |
uv sync --dev
uv sync --dev
uv run task version --set-url "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" info
bash bump_version.sh
- name: build
run: |
uv run task goneonize_changed
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++)
uv run task build goneonize
uv build
uv run task repack
mv neonize/*.dylib LIBS/
#ARM64/AARCH64
export GOOS=darwin
export GOARCH=arm64
export CC=$(which clang)
export CXX=$(which clang++)
uv run task build goneonize
uv build
uv run task repack
cp dist/*.whl LIBS/
mv neonize/*.dylib LIBS/
if [[ $UV_PUBLISH_TOKEN ]];then
uv publish
fi
continue-on-error: true
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: Darwin
path: LIBS/*
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
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
**/.venv
key: ${{ runner.os }}-${{ hashFiles('**/uv.lock') }}
- name: install deps
run: |
uv sync --dev
uv run task version --set-url "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" info
bash bump_version.sh
echo "TAG_NAME=$(uv run task version neonize)" >> $GITHUB_ENV
- name: Upload shared library to draft release
uses: softprops/action-gh-release@v1
with:
draft: false
files: |
sharedlib/*
generate_release_notes: true
tag_name: ${{ env.TAG_NAME }}
- name: Publish
run: |
if [[ $UV_PUBLISH_TOKEN ]];then
uv build && uv publish
fi