Merge pull request #385 from zhang-accounting/fix/stack-display-for-m… #231
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 release | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- "v*" | |
pull_request: | |
jobs: | |
create-release: | |
if: (startsWith(github.ref_name, 'v') && github.ref_type == 'tag') | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: taiki-e/create-gh-release-action@v1 | |
with: | |
title: $version | |
token: ${{ secrets.GITHUB_TOKEN }} | |
build-frontend: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v3 | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 'lts/*' | |
cache: 'pnpm' | |
cache-dependency-path: frontend/pnpm-lock.yaml | |
- name: frontend install | |
run: pnpm install | |
working-directory: ./frontend | |
- name: frontend build | |
run: pnpm build | |
working-directory: ./frontend | |
- uses: actions/upload-artifact@v4 | |
name: Save frontend build artifact | |
with: | |
name: frontend-build | |
if-no-files-found: error | |
retention-days: 1 | |
path: ./frontend/dist | |
publish: | |
name: Binary ${{ matrix.target }} (on ${{ matrix.os }}) | |
needs: | |
- build-frontend | |
continue-on-error: true | |
strategy: | |
matrix: | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
compress: true | |
cargo_flags: "--features frontend" | |
- os: ubuntu-latest | |
target: aarch64-unknown-linux-gnu | |
compress: true | |
cargo_flags: "--features frontend" | |
# - os: ubuntu-latest | |
# target: riscv64gc-unknown-linux-gnu | |
# compress: false | |
# cargo_flags: "--features frontend" | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
compress: true | |
cargo_flags: "--features frontend" | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
compress: true | |
cargo_flags: "--features frontend" | |
- os: macos-latest | |
target: aarch64-apple-darwin | |
compress: false | |
cargo_flags: "--features frontend" | |
- os: ubuntu-latest | |
target: x86_64-unknown-freebsd | |
compress: false | |
cargo_flags: "--features frontend" | |
# The type of runner that the job will run on | |
# Runs on Ubuntu if other os is not specified above | |
runs-on: ${{ matrix.os || 'ubuntu-latest' }} | |
timeout-minutes: 90 | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: create version file | |
if: (startsWith(github.ref_name, 'v') && github.ref_type == 'tag') | |
run: echo "${{github.ref_name}}" | tail -c+2 >> .build_version | |
- name: Get version from tag | |
id: extract_version | |
run: | | |
echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" | |
shell: bash | |
- uses: actions/download-artifact@v4 | |
with: | |
name: frontend-build | |
path: ./frontend/dist | |
- name: Setup Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- run: sudo apt install musl-tools | |
if: startsWith(matrix.os, 'ubuntu') | |
- name: Install openssl | |
if: startsWith(matrix.os, 'ubuntu') | |
run: sudo apt install pkg-config libssl-dev | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: cargo build | |
uses: houseabsolute/actions-rust-cross@v0 | |
with: | |
command: build | |
args: --release --locked --bin zhang ${{ matrix.cargo_flags }} | |
target: ${{ matrix.target }} | |
- name: Set exe extension for Windows | |
run: echo "EXE=.exe" >> $env:GITHUB_ENV | |
if: startsWith(matrix.os, 'windows') | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.target }} | |
path: target/${{ matrix.target }}/release/zhang${{ env.EXE }} | |
- name: Release | |
uses: svenstaro/upload-release-action@v2 | |
# only release if the commit is tagged with version | |
if: startsWith(github.ref_name, 'v') && github.ref_type == 'tag' | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: target/${{ matrix.target }}/release/zhang${{ env.EXE }} | |
tag: ${{ github.ref_name }} | |
asset_name: zhang-${{ steps.extract_version.outputs.version }}-${{ matrix.target }}${{ env.EXE }} | |
docker-image-release: | |
runs-on: ubuntu-latest | |
needs: publish | |
# Run for tags and pushes to the default branch | |
if: (startsWith(github.ref_name, 'v') && github.ref_type == 'tag') || github.event.repository.default_branch == github.ref_name | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get version from tag | |
id: extract_version | |
run: | | |
echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" | |
shell: bash | |
- name: Download artifact aarch64-unknown-linux-gnu | |
uses: actions/download-artifact@v4 | |
with: | |
name: aarch64-unknown-linux-gnu | |
path: target/aarch64-unknown-linux-gnu/release | |
- name: Download artifact x86_64-unknown-linux-gnu | |
uses: actions/download-artifact@v4 | |
with: | |
name: x86_64-unknown-linux-gnu | |
path: target/x86_64-unknown-linux-gnu/release | |
- name: podman login | |
run: podman login --username ${{ secrets.DOCKERHUB_USERNAME }} --password ${{ secrets.DOCKERHUB_TOKEN }} docker.io | |
- name: podman build linux/arm64 | |
run: podman build --format docker --platform linux/arm64/v8 --manifest zhang -f Dockerfile target/aarch64-unknown-linux-gnu/release | |
- name: podman build linux/amd64 | |
run: podman build --format docker --platform linux/amd64 --manifest zhang -f Dockerfile target/x86_64-unknown-linux-gnu/release | |
- name: podman manifest push snapshot | |
run: podman manifest push zhang docker.io/kilerd/zhang:snapshot | |
- name: podman manifest push snapshot with hash | |
run: podman manifest push zhang docker.io/kilerd/zhang:${{ github.sha }} | |
- name: podman manifest push latest | |
run: podman manifest push zhang docker.io/kilerd/zhang:latest | |
if: startsWith(github.ref_name, 'v') | |
- name: podman manifest push tag version | |
run: podman manifest push zhang docker.io/kilerd/zhang:${{ steps.extract_version.outputs.version }} | |
if: startsWith(github.ref_name, 'v') | |
notify-example-build: | |
runs-on: ubuntu-latest | |
needs: docker-image-release | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Echo git commit hash to file | |
run: | | |
mkdir example-deployment | |
echo "${GITHUB_SHA}" > ./example-deployment/git_sha | |
- name: Pushes to another repository | |
uses: cpina/github-action-push-to-another-repository@main | |
env: | |
API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }} | |
with: | |
source-directory: 'example-deployment' | |
destination-github-username: 'zhang-accounting' | |
destination-repository-name: 'zhang-example' | |
target-directory: 'example-deployment' | |
user-email: blove694@gmail.com | |
target-branch: main | |
release-wasm: | |
runs-on: ubuntu-latest | |
if: (startsWith(github.ref_name, 'v') && github.ref_type == 'tag') | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: update wasm version | |
run: | | |
chmod +x ./update-cargo-version.sh | |
./update-cargo-version.sh "${{github.ref_name}}" | |
working-directory: ./bindings/wasm | |
- uses: jetli/wasm-pack-action@v0.4.0 | |
with: | |
# Optional version of wasm-pack to install(eg. 'v0.9.1', 'latest') | |
version: 'v0.12.1' | |
- name: build wasm | |
run: wasm-pack build | |
working-directory: ./bindings/wasm | |
- name: pack wasm | |
run: wasm-pack pack | |
working-directory: ./bindings/wasm | |
- name: setup npm token | |
run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
env: | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- name: publish to npm | |
run: wasm-pack publish | |
working-directory: ./bindings/wasm |