Skip to content

fix toolcha

fix toolcha #184

Workflow file for this run

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' }}
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
with:
add: suffix
author_name: GitHub Actions
author_email: actions@github.com
message: Consume suffix file
build:
name: Release & Publish
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: x86_64-unknown-linux-gnu
runner: ubuntu-22.04
- target: aarch64-unknown-linux-gnu
runner: ubuntu-22.04-arm
- target: x86_64-unknown-linux-musl
runner: ubuntu-22.04
- target: aarch64-unknown-linux-musl
runner: ubuntu-22.04-arm
- target: mips-unknown-linux-musl
runner: ubuntu-latest
- target: mips64-unknown-linux-muslabi64
runner: ubuntu-latest
- target: mips64el-unknown-linux-muslabi64
runner: ubuntu-latest
- target: mipsel-unknown-linux-musl
runner: ubuntu-latest
- 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 }}
rustup component add rust-src --toolchain nightly-${{matrix.target}}
rustup default nightly
- 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 zip
sudo apt install build-essential \
curl \
wget \
file \
pkg-config
target="${{ matrix.target }}"
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev \
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.target }} --release
working-directory: leadman
- name: Publish Linux / Macos Bin
uses: shogo82148/actions-upload-release-asset@v1
if: matrix.runner != 'windows-latest'
with:
asset_path: ./leadman/target/${{ 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: matrix.runner == 'windows-latest'
with:
asset_path: ./leadman/target/${{ 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: matrix.runner == 'ubuntu-latest'
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 Leadman Dylib
uses: shogo82148/actions-upload-release-asset@v1
if: matrix.runner == 'macos-latest'
with:
asset_path: ./leadman/target/${{ 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: matrix.runner == 'windows-latest'
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
needs: [tag]
strategy:
fail-fast: false
matrix:
target:
- i686-unknown-linux-gnu
- i586-unknown-linux-gnu
- i586-unknown-linux-musl
- 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
# LongArch
- loongarch64-unknown-linux-gnu
- loongarch64-unknown-linux-musl
# PowerPC
- powerpc-unknown-linux-gnu
- powerpc64-unknown-linux-gnu
- powerpc64le-unknown-linux-gnu
# MIPS MUSL
# Moved to the other category
# 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
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 }}
USE_CROSS: true
- name: Build leadman
run: |
cross +nightly 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
})