some stuff #234
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build & Publish | |
permissions: write-all | |
on: | |
push: | |
workflow_dispatch: | |
schedule: | |
- cron: "0 0 1 * *" | |
jobs: | |
tag: | |
name: Get Tag + Release | |
runs-on: ubuntu-24.04 | |
outputs: | |
tag: ${{ steps.ver.outputs.TAG_NAME }} | |
upload: ${{ steps.release.outputs.upload_url }} | |
id: ${{ steps.release.outputs.id }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup NodeJS | |
uses: actions/setup-node@v4 | |
- name: Get Tag | |
run: | | |
node ver.js | |
chmod 777 ./publish | |
./publish | |
env: | |
NIGHTLY: ${{ github.event_name == 'push' }} | |
id: ver | |
- name: Create Release | |
uses: shogo82148/actions-create-release@v1 | |
id: release | |
with: | |
tag_name: ${{ steps.ver.outputs.TAG_NAME }} | |
prerelease: ${{ github.event_name == 'push' }} | |
generate_release_notes: true | |
release_name: OpenLead v${{ steps.ver.outputs.TAG_NAME }} | |
body: A build of Lead Language with interpreter v${{ steps.ver.outputs.TAG_NAME }} | |
draft: true | |
publish_cargo: | |
needs: [tag] | |
name: Publish to cargo | |
continue-on-error: true | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Initial Commit | |
uses: actions/checkout@v4 | |
- name: Setup NodeJS | |
uses: actions/setup-node@v4 | |
- name: Add Version Info | |
run: node ver.js | |
env: | |
NIGHTLY: ${{ github.event_name == 'push' }} | |
LEAD_VER: ${{ needs.tag.outputs.tag }} | |
- name: Install Rust | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
toolchain: nightly | |
components: rust-src | |
- name: Publish | |
run: | | |
cd interpreter | |
cargo publish --allow-dirty || true | |
cd ../macros | |
cargo publish --allow-dirty || true | |
continue-on-error: true | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_TOKEN }} | |
- name: Commit Suffix | |
uses: EndBug/add-and-commit@v9 | |
if: contains('-nightly', needs.tag.outputs.tag) == false | |
with: | |
add: suffix | |
author_name: GitHub Actions | |
author_email: actions@github.com | |
message: Consume suffix file | |
build: | |
name: Release & Publish T1 | |
continue-on-error: true | |
needs: [tag] | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- target: x86_64-pc-windows-msvc | |
runner: windows-latest | |
- target: i686-pc-windows-msvc | |
runner: windows-latest | |
- target: aarch64-pc-windows-msvc | |
runner: windows-latest | |
#- target: arm64ec-pc-windows-msvc | |
# runner: windows-latest | |
- target: i686-win7-windows-msvc | |
runner: windows-latest | |
- target: x86_64-win7-windows-msvc | |
runner: windows-latest | |
- target: x86_64-unknown-linux-gnu | |
runner: ubuntu-22.04 | |
- target: aarch64-unknown-linux-gnu | |
runner: ubuntu-22.04-arm | |
- target: x86_64-20.04-linux-gnu | |
ctarget: x86_64-unknown-linux-gnu | |
runner: ubuntu-20.04 | |
- target: x86_64-apple-darwin | |
runner: macos-latest | |
- target: aarch64-apple-darwin | |
runner: macos-latest | |
runs-on: ${{ matrix.runner }} | |
steps: | |
- name: Initial Commit | |
uses: actions/checkout@v4 | |
- name: Setup NodeJS | |
uses: actions/setup-node@v4 | |
- name: Setup pnpm | |
run: npm i -g pnpm | |
- name: Add Version Info | |
run: node ver.js | |
env: | |
NIGHTLY: ${{ github.event_name == 'push' }} | |
LEAD_VER: ${{ needs.tag.outputs.tag }} | |
- name: Install Rust | |
run: | | |
rustup toolchain add nightly --profile minimal | |
rustup target add ${{ matrix.target }} --toolchain nightly || true | |
rustup component add rust-src --toolchain nightly | |
rustup default nightly | |
- name: Rust Cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
prefix-key: ${{ matrix.target }}-${{ matrix.runner }} | |
workspaces: | | |
. -> target | |
./lead -> target | |
./lead_docs -> target | |
./lead_docs_cli -> target | |
./leadman -> target | |
- name: Install Deps | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt update | |
sudo apt install gcc-aarch64-linux-gnu musl-tools clang lld | |
sudo apt install flex zip help2man gawk libtool libtool-bin libtool-doc bison texinfo | |
sudo apt install build-essential \ | |
curl \ | |
wget \ | |
file \ | |
pkg-config | |
target="${{ matrix.target }}" | |
sudo apt update | |
sudo apt install libwebkit2gtk-4.1-dev || true | |
sudo apt install build-essential \ | |
curl \ | |
wget \ | |
file \ | |
libxdo-dev \ | |
libssl-dev \ | |
libayatana-appindicator3-dev \ | |
librsvg2-dev \ | |
libgtk-3-dev | |
- name: Build Lead Docs UI | |
run: pnpm install; pnpm build | |
working-directory: lead_docs/ui | |
- name: Package stuff (Unix) | |
if: runner.os != 'Windows' | |
run: | | |
arch="${{ matrix.target }}" | |
cargo +nightly run --release | |
env: | |
TARGET: ${{ matrix.target }} | |
- name: Package stuff (Windows) | |
if: runner.os == 'Windows' | |
run: cargo +nightly run --release | |
env: | |
TARGET: ${{ matrix.target }} | |
- name: Build Leadman | |
run: | | |
cargo +nightly build --target ${{ matrix.ctarget || matrix.target }} --release | |
working-directory: leadman | |
env: | |
CFG_TARGET: ${{ matrix.target }} | |
- name: Publish Linux / Macos Bin | |
uses: shogo82148/actions-upload-release-asset@v1 | |
if: matrix.runner != 'windows-latest' | |
with: | |
asset_path: ./leadman/target/${{ matrix.ctarget || matrix.target }}/release/leadman | |
asset_name: leadman_${{ matrix.target }} | |
upload_url: ${{ needs.tag.outputs.upload }} | |
- name: Publish Windows Bin | |
uses: shogo82148/actions-upload-release-asset@v1 | |
if: runner.os == 'Windows' | |
with: | |
asset_path: ./leadman/target/${{ matrix.ctarget || matrix.target }}/release/leadman.exe | |
asset_name: leadman_${{ matrix.target }}.exe | |
upload_url: ${{ needs.tag.outputs.upload }} | |
- name: Publish Leadman SO | |
uses: shogo82148/actions-upload-release-asset@v1 | |
if: runner.os == 'Linux' | |
with: | |
asset_path: ./leadman/target/${{ matrix.ctarget || matrix.target }}/release/libleadman_lib.so | |
asset_name: libleadman_${{ matrix.target }}.so | |
upload_url: ${{ needs.tag.outputs.upload }} | |
- name: Publish Leadman Dylib | |
uses: shogo82148/actions-upload-release-asset@v1 | |
if: runner.os == 'macOS' | |
with: | |
asset_path: ./leadman/target/${{ matrix.ctarget || matrix.target }}/release/libleadman_lib.dylib | |
asset_name: libleadman_${{ matrix.target }}.dylib | |
upload_url: ${{ needs.tag.outputs.upload }} | |
- name: Publish Leadman DLL | |
uses: shogo82148/actions-upload-release-asset@v1 | |
if: runner.os == 'Windows' | |
with: | |
asset_path: ./leadman/target/${{ matrix.target }}/release/leadman_lib.dll | |
asset_name: leadman_${{ matrix.target }}_lib.dll | |
upload_url: ${{ needs.tag.outputs.upload }} | |
- name: Publish | |
uses: shogo82148/actions-upload-release-asset@v1 | |
with: | |
asset_path: ./build.zip | |
asset_name: binaries_${{ matrix.target }}.zip | |
upload_url: ${{ needs.tag.outputs.upload }} | |
build-cross: | |
name: Release & Publish T2 | |
continue-on-error: true | |
needs: [tag] | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- x86_64-unknown-linux-musl | |
- aarch64-unknown-linux-musl | |
- i686-unknown-linux-gnu | |
- armv7-unknown-linux-gnueabi | |
- armv7-unknown-linux-gnueabihf | |
- arm-unknown-linux-gnueabi | |
- arm-unknown-linux-gnueabihf | |
- armv5te-unknown-linux-gnueabi | |
- armv5te-unknown-linux-musleabi | |
# MUSL | |
- armv7-unknown-linux-musleabi | |
- armv7-unknown-linux-musleabihf | |
- arm-unknown-linux-musleabi | |
- arm-unknown-linux-musleabihf | |
# MIPS GNU | |
- mips-unknown-linux-gnu | |
- mips64-unknown-linux-gnuabi64 | |
- mips64el-unknown-linux-gnuabi64 | |
- mipsel-unknown-linux-gnu | |
# MIPS MUSL (to be fixed) | |
# - mips-unknown-linux-musl | |
# - mips64-unknown-linux-muslabi64 | |
# - mips64el-unknown-linux-muslabi64 | |
# - mipsel-unknown-linux-musl | |
# LongArch | |
- loongarch64-unknown-linux-gnu | |
- loongarch64-unknown-linux-musl | |
# PowerPC | |
- powerpc-unknown-linux-gnu | |
- powerpc64-unknown-linux-gnu | |
- powerpc64le-unknown-linux-gnu | |
# FreeBSD | |
- x86_64-unknown-freebsd | |
- aarch64-unknown-freebsd | |
- i686-unknown-freebsd | |
# NetBSD | |
- x86_64-unknown-netbsd | |
# Illumos & DFLY BSD | |
- x86_64-unknown-illumos | |
- x86_64-unknown-dragonfly | |
# Android | |
- aarch64-linux-android | |
- armv7-linux-androideabi | |
- i686-linux-android | |
- x86_64-linux-android | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
- name: Install Rust | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
toolchain: nightly-2025-01-25 | |
components: rust-src | |
override: true | |
- name: Install zip | |
run: | | |
sudo apt update | |
sudo apt install zip | |
sudo apt install libc6 | |
- name: Add Version Info | |
run: node ver.js | |
env: | |
NIGHTLY: ${{ github.event_name == 'push' }} | |
LEAD_VER: ${{ needs.tag.outputs.tag }} | |
- name: Package Stuff | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install podman | |
RUSTFLAGS="" cargo install cross --force --git https://github.com/cross-rs/cross | |
cargo run --release | |
env: | |
TARGET: ${{ matrix.target }} | |
CROSS_CONFIG: ${{ github.workspace }}/Cross.toml | |
USE_CROSS: true | |
- name: Build leadman | |
run: | | |
cross +nightly-2025-01-25 build --target ${{ matrix.target }} --release | |
working-directory: leadman | |
- name: Publish Unix Bin | |
uses: shogo82148/actions-upload-release-asset@v1 | |
with: | |
asset_path: ./leadman/target/${{ matrix.target }}/release/leadman | |
asset_name: leadman_${{ matrix.target }} | |
upload_url: ${{ needs.tag.outputs.upload }} | |
- name: Publish Leadman SO | |
uses: shogo82148/actions-upload-release-asset@v1 | |
with: | |
asset_path: ./leadman/target/${{ matrix.target }}/release/libleadman_lib.so | |
asset_name: libleadman_${{ matrix.target }}.so | |
upload_url: ${{ needs.tag.outputs.upload }} | |
- name: Publish | |
uses: shogo82148/actions-upload-release-asset@v1 | |
with: | |
asset_path: ./build.zip | |
asset_name: binaries_${{ matrix.target }}.zip | |
upload_url: ${{ needs.tag.outputs.upload }} | |
publish: | |
name: Undraft Release | |
needs: [tag, publish_cargo, build, build-cross] | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Initial Commit | |
uses: actions/checkout@v4 | |
- name: Publish Leadman Build | |
uses: shogo82148/actions-upload-release-asset@v1 | |
with: | |
asset_path: ./leadman/build | |
asset_name: build | |
upload_url: ${{ needs.tag.outputs.upload }} | |
- name: Undraft release | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
github.rest.repos.updateRelease({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
release_id: ${{ needs.tag.outputs.id }}, | |
draft: false | |
}) |