name: Build Rust Cross
on:
workflow_dispatch:
inputs:
version:
description: "Version to deploy"
required: true
push:
tags:
- "c[0-9]+.*"
release:
types: [created]
jobs:
create_release:
name: Create release
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Set variables
id: vars
run: echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Create release
id: create_release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
name: Cross Release ${{ steps.vars.outputs.tag }}
draft: false
prerelease: false
body: |
This is a new release of lumesh.
[Read the changelog here](https://github.com/superiums/lumesh/blob/${{ steps.vars.outputs.tag }}/CHANGELOG.md).
[Read the NEWS here](https://github.com/superiums/lumesh/blob/${{ steps.vars.outputs.tag }}/NEWS.md).
[最新动态](https://github.com/superiums/lumesh/blob/${{ steps.vars.outputs.tag }}/NEWS-cn.md).
- for unix user:
download `install.sh` and install via this script is suggestted.
- for windows user:
download `lume-x86_64-pc-windows-gnu.exe` and launch it from `wt` or `cmder`.
optional:
pick up one or more cmds completion data from data.tgz if you need.
as they're mainly for linux commands. but some are the same. eg: `wget`, `curl`
know issue:
use colorized prompt may leads cursor position move.
- data.tgz: command param completion data and mod, example configs.
- doc: help docs.
**Binary variants:**
- `lume-*`: interactive shell.
for windows/macos: AI on HTTPS via system TLS (`ai-tls`, default)
for linux/freebsd: AI on HTTP only.
if AI on HTTPS needed, download `lume-*-ai-https` instead,
or build on your machine to link to sysmtem TLS to get a lighter version. (install libssl-dev first and build with feature `ai-tls`)
- `lume-*-ai-https`: interactive shell, HTTPS via ureq (`ai-https`)
- `lume-se-*`: script engine only, no interactive shell, no AI
build_docs:
name: Build documentation
needs: create_release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Generate docs
run: |
mkdir -p tmp/doc
cp CHANGELOG.md tmp/doc/
cp README.md tmp/doc/
cp LICENSE tmp/doc/
cp docs/INS_README.md tmp/doc/
cp docs/RULE.md tmp/doc/
cp docs/install.sh tmp/install.sh
cp docs/install.ps1 tmp/install.ps1
- name: Create compressed files
run: |
tar -czf data.tgz -C docs/data lumesh
tar -czvf doc.tgz -C tmp doc
- name: Upload docs and install scripts
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: |
data.tgz
doc.tgz
tmp/install.sh
tmp/install.ps1
build:
needs: [create_release]
strategy:
matrix:
target:
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- x86_64-apple-darwin
- x86_64-pc-windows-gnu
- aarch64-unknown-linux-gnu
- aarch64-unknown-linux-musl
- x86_64-unknown-freebsd
- aarch64-linux-android
- aarch64-apple-darwin
- loongarch64-unknown-linux-gnu
- loongarch64-unknown-linux-musl
include:
- target: x86_64-unknown-linux-gnu
asset_name: lume-x86_64-linux-gnu
binary_name: lume
- target: x86_64-unknown-linux-musl
asset_name: lume-x86_64-linux-musl
binary_name: lume
- target: x86_64-apple-darwin
asset_name: lume-x86_64-apple-darwin
binary_name: lume
- target: x86_64-pc-windows-gnu
asset_name: lume-x86_64-pc-windows-gnu.exe
binary_name: lume.exe
- target: aarch64-unknown-linux-gnu
asset_name: lume-aarch64-linux-gnu
binary_name: lume
- target: aarch64-unknown-linux-musl
asset_name: lume-aarch64-linux-musl
binary_name: lume
- target: x86_64-unknown-freebsd
asset_name: lume-x86_64-freebsd
binary_name: lume
- target: aarch64-linux-android
asset_name: lume-aarch64-linux-android
binary_name: lume
- target: aarch64-apple-darwin
asset_name: lume-aarch64-apple-darwin
binary_name: lume
- target: loongarch64-unknown-linux-gnu
asset_name: lume-loongarch64-linux-gnu
binary_name: lume
- target: loongarch64-unknown-linux-musl
asset_name: lume-loongarch64-linux-musl
binary_name: lume
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build Release
uses: zijiren233/cargo-cross@v1
with:
command: build
targets: ${{ matrix.target }}
profile: release
features: ${{ (contains(matrix.target, 'apple') || contains(matrix.target, 'windows')) && 'cli,ai-tls' || 'cli' }}
bin: lume
build-std: true
toolchain: nightly
- name: Rename binary
run: cp target/${{ matrix.target }}/release/${{ matrix.binary_name }} ${{ matrix.asset_name }}
- name: Upload binary
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: ${{ matrix.asset_name }}
build_https:
name: Build lume (ai-https)
needs: [create_release]
strategy:
matrix:
target:
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- x86_64-apple-darwin
- x86_64-pc-windows-gnu
- aarch64-unknown-linux-gnu
- aarch64-unknown-linux-musl
- x86_64-unknown-freebsd
- aarch64-linux-android
- aarch64-apple-darwin
- loongarch64-unknown-linux-gnu
- loongarch64-unknown-linux-musl
include:
- target: x86_64-unknown-linux-gnu
asset_name: lume-x86_64-linux-gnu-ai-https
binary_name: lume
- target: x86_64-unknown-linux-musl
asset_name: lume-x86_64-linux-musl-ai-https
binary_name: lume
- target: x86_64-apple-darwin
asset_name: lume-x86_64-apple-darwin-ai-https
binary_name: lume
- target: x86_64-pc-windows-gnu
asset_name: lume-x86_64-pc-windows-gnu-ai-https.exe
binary_name: lume.exe
- target: aarch64-unknown-linux-gnu
asset_name: lume-aarch64-linux-gnu-ai-https
binary_name: lume
- target: aarch64-unknown-linux-musl
asset_name: lume-aarch64-linux-musl-ai-https
binary_name: lume
- target: x86_64-unknown-freebsd
asset_name: lume-x86_64-freebsd-ai-https
binary_name: lume
- target: aarch64-linux-android
asset_name: lume-aarch64-linux-android-ai-https
binary_name: lume
- target: aarch64-apple-darwin
asset_name: lume-aarch64-apple-darwin-ai-https
binary_name: lume
- target: loongarch64-unknown-linux-gnu
asset_name: lume-loongarch64-linux-gnu-ai-https
binary_name: lume
- target: loongarch64-unknown-linux-musl
asset_name: lume-loongarch64-linux-musl-ai-https
binary_name: lume
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build Release (ai-https)
uses: zijiren233/cargo-cross@v1
with:
command: build
targets: ${{ matrix.target }}
profile: release
features: cli,ai-https
no-default-features: true
bin: lume
build-std: true
toolchain: nightly
- name: Rename binary
run: cp target/${{ matrix.target }}/release/${{ matrix.binary_name }} ${{ matrix.asset_name }}-ai-https
- name: Upload binary
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: ${{ matrix.asset_name }}-ai-https
build_se:
name: Build lume-se
needs: [create_release]
strategy:
matrix:
target:
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- x86_64-apple-darwin
- x86_64-pc-windows-gnu
- aarch64-unknown-linux-gnu
- aarch64-unknown-linux-musl
- x86_64-unknown-freebsd
- aarch64-linux-android
- aarch64-apple-darwin
- loongarch64-unknown-linux-gnu
- loongarch64-unknown-linux-musl
include:
- target: x86_64-unknown-linux-gnu
asset_name: lume-se-x86_64-linux-gnu
binary_name: lume-se
- target: x86_64-unknown-linux-musl
asset_name: lume-se-x86_64-linux-musl
binary_name: lume-se
- target: x86_64-apple-darwin
asset_name: lume-se-x86_64-apple-darwin
binary_name: lume-se
- target: x86_64-pc-windows-gnu
asset_name: lume-se-x86_64-pc-windows-gnu.exe
binary_name: lume-se.exe
- target: aarch64-unknown-linux-gnu
asset_name: lume-se-aarch64-linux-gnu
binary_name: lume-se
- target: aarch64-unknown-linux-musl
asset_name: lume-se-aarch64-linux-musl
binary_name: lume-se
- target: x86_64-unknown-freebsd
asset_name: lume-se-x86_64-freebsd
binary_name: lume-se
- target: aarch64-linux-android
asset_name: lume-se-aarch64-linux-android
binary_name: lume-se
- target: aarch64-apple-darwin
asset_name: lume-se-aarch64-apple-darwin
binary_name: lume-se
- target: loongarch64-unknown-linux-gnu
asset_name: lume-se-loongarch64-linux-gnu
binary_name: lume-se
- target: loongarch64-unknown-linux-musl
asset_name: lume-se-loongarch64-linux-musl
binary_name: lume-se
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build Release (se)
uses: zijiren233/cargo-cross@v1
with:
command: build
targets: ${{ matrix.target }}
profile: release
features: runner
no-default-features: true
bin: lume-se
build-std: true
toolchain: nightly
- name: Rename binary
run: cp target/${{ matrix.target }}/release/${{ matrix.binary_name }} ${{ matrix.asset_name }}
- name: Upload binary
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: ${{ matrix.asset_name }}