Skip to content

Build

Build #58

Workflow file for this run

name: Build & Publish
permissions: write-all
on:
push:
schedule:
- cron: "0 0 1 * *"
jobs:
publish_cargo:
name: Publish to cargo
continue-on-error: true
runs-on: ubuntu-latest
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' }}
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: nightly
- 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: [email protected]
message: Consume suffix file
build:
name: Release & Publish
continue-on-error: true
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-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
- 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' }}
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: nightly
target: ${{ matrix.target }}
- name: Install Deps (Linux aarch64)
if: matrix.target == 'aarch64-unknown-linux-gnu'
run: |
sudo apt update
sudo apt install gcc-aarch64-linux-gnu
sudo dpkg --add-architecture arm64
sudo cat ubuntu | sudo tee /etc/apt/sources.list
sudo apt-get update && sudo apt-get upgrade -y
sudo apt install build-essential \
curl \
wget \
file \
libxdo-dev:arm64 \
libayatana-appindicator3-dev:arm64 \
librsvg2-dev:arm64 \
libgtk-3-dev:arm64
sudo apt install libwebkit2gtk-4.1-dev:arm64
sudo apt install libssl-dev:arm64
sudo apt install zip
- name: Install Deps (Linux x86)
if: matrix.target == 'x86_64-unknown-linux-gnu'
run: |
sudo apt update
sudo apt install zip
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
run: cargo +nightly run --release
env:
TARGET: ${{ matrix.target }}
- name: Build Leadman
run: cargo +nightly build --target ${{ matrix.target }} --release
working-directory: leadman
- name: chmod
if: runner.os == 'Linux'
run: chmod 777 ./publish
- name: Get tag
run: ./publish
id: tag
- name: Publish Linux / Macos Bin
uses: svenstaro/upload-release-action@v2
if: matrix.runner != 'windows-latest'
with:
file: ./leadman/target/${{ matrix.target }}/release/leadman
asset_name: leadman_${{ matrix.target }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ steps.tag.outputs.TAG_NAME }}
prerelease: ${{ github.event_name == 'push' }}
- name: Publish Windows Bin
uses: svenstaro/upload-release-action@v2
if: matrix.runner == 'windows-latest'
with:
file: ./leadman/target/${{ matrix.target }}/release/leadman.exe
asset_name: leadman_${{ matrix.target }}.exe
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ steps.tag.outputs.TAG_NAME }}
prerelease: ${{ github.event_name == 'push' }}
- name: Publish
uses: svenstaro/upload-release-action@v2
with:
file: ./build.zip
asset_name: binaries_${{ matrix.target }}.zip
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ steps.tag.outputs.TAG_NAME }}
prerelease: ${{ github.event_name == 'push' }}