Skip to content

build: publish v0.1.4 #19

build: publish v0.1.4

build: publish v0.1.4 #19

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*'
workflow_dispatch:
jobs:
build-binaries:
name: Build Binaries
runs-on: ${{ matrix.platform }}
strategy:
matrix:
platform: [ubuntu-latest, windows-latest, macos-latest]
arch:
- x64
- arm64
exclude:
- platform: windows-latest
arch: arm64
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Tools
uses: ./.github/actions/install-tools
- name: Set up MSVC Environment
if: runner.os == 'Windows'
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.arch }}
- name: Remove Git link.exe from PATH
if: runner.os == 'Windows'
run: |
echo "Original PATH: %PATH%"
set PATH=%PATH:"C:\Program Files\Git\usr\bin";=%
echo "Modified PATH: %PATH%"
shell: cmd
- name: Check for Correct link.exe
if: runner.os == 'Windows'
run: where link
- name: Install Cross
if: runner.os != 'Windows'
run: cargo install cross --locked
- name: Build Binaries
if: runner.os != 'Windows'
run: |
echo "Building for ${{ matrix.platform }} on architecture ${{ matrix.arch }}"
if [[ "${{ matrix.platform }}" == "ubuntu-latest" ]]; then
if [[ "${{ matrix.arch }}" == "x64" ]]; then
cross build --release --target x86_64-unknown-linux-gnu
elif [[ "${{ matrix.arch }}" == "arm64" ]]; then
cross build --release --target aarch64-unknown-linux-gnu
fi
elif [[ "${{ matrix.platform }}" == "macos-latest" ]]; then
if [[ "${{ matrix.arch }}" == "x64" ]]; then
cross build --release --target x86_64-apple-darwin
elif [[ "${{ matrix.arch }}" == "arm64" ]]; then
cross build --release --target aarch64-apple-darwin
fi
shell: bash
- name: Build Binaries
if: runner.os == 'Windows'
run: |
echo "Building for ${{ matrix.platform }} on architecture ${{ matrix.arch }}"
cargo build --release --target x86_64-pc-windows-msvc
shell: cmd
- name: Move Binaries to Bin Folder
if: runner.os != 'Windows'
run: |
if [[ "${{ matrix.platform }}" == "ubuntu-latest" ]]; then
if [[ "${{ matrix.arch }}" == "x64" ]]; then
mkdir -p ./bin/linux/x64
cp target/x86_64-unknown-linux-gnu/release/todoctor ./bin/linux/x64/todoctor
elif [[ "${{ matrix.arch }}" == "arm64" ]]; then
mkdir -p ./bin/linux/arm64
cp target/aarch64-unknown-linux-gnu/release/todoctor ./bin/linux/arm64/todoctor
fi
elif [[ "${{ matrix.platform }}" == "macos-latest" ]]; then
if [[ "${{ matrix.arch }}" == "x64" ]]; then
mkdir -p ./bin/macos/x64
cp target/x86_64-apple-darwin/release/todoctor ./bin/macos/x64/todoctor
elif [[ "${{ matrix.arch }}" == "arm64" ]]; then
mkdir -p ./bin/macos/arm64
cp target/aarch64-apple-darwin/release/todoctor ./bin/macos/arm64/todoctor
fi
fi
shell: bash
- name: Move Binaries to Bin Folder
if: runner.os == 'Windows'
run: |
mkdir -p ./bin/windows/x64
cp target/x86_64-pc-windows-msvc/release/todoctor.exe ./bin/windows/x64/todoctor.exe
shell: cmd
- name: Upload Binaries
uses: actions/upload-artifact@v4
with:
name: todoctor-${{ matrix.platform }}-${{ matrix.arch }}
path: ./bin/${{ matrix.platform }}/${{ matrix.arch }}/
release:
name: Release
runs-on: ubuntu-latest
needs: build-binaries
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Tools
uses: ./.github/actions/install-tools
- name: Install Dependencies
run: pnpm install
- name: Build Static Assets
run: pnpm run build:preview
- name: Download Binaries
uses: actions/download-artifact@v4
with:
name: 'todoctor-*'
path: .
- name: Create GitHub Release
run: pnpm run ci:changelog
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Configure NPM Auth
run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NODE_AUTH_TOKEN }}" > ~/.npmrc
- name: Clear Package JSON
run: pnpm run ci:clear
- name: Publish to NPM
run: pnpm run ci:publish