Skip to content

v0.2.1

v0.2.1 #7

Workflow file for this run

name: Build and Release
on:
release:
types: [created]
workflow_dispatch:
inputs:
version:
description: "Version tag (e.g., v1.0.0)"
required: false
default: "dev"
permissions:
contents: write
packages: write
actions: write
jobs:
build-macos:
name: Build macOS
runs-on: macos-latest
strategy:
matrix:
include:
- arch: amd64
goarch: amd64
- arch: arm64
goarch: arm64
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.25"
- name: Get version
id: version
run: |
if [ "${{ github.event_name }}" == "release" ]; then
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
else
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
fi
- name: Build binary
env:
CGO_ENABLED: 1
GOOS: darwin
GOARCH: ${{ matrix.goarch }}
run: |
go build -o typr-corrige-darwin-${{ matrix.arch }} .
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: typr-corrige-darwin-${{ matrix.arch }}
path: typr-corrige-darwin-${{ matrix.arch }}
build-linux:
name: Build Linux
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
include:
- arch: amd64
goarch: amd64
cc: gcc
runs-on: ubuntu-latest
- arch: arm64
goarch: arm64
cc: aarch64-linux-gnu-gcc
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.25"
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libgl1-mesa-dev \
xorg-dev \
libx11-dev \
libxcursor-dev \
libxrandr-dev \
libxinerama-dev \
libxi-dev \
libxxf86vm-dev \
libxkbcommon-dev \
libwayland-dev \
libwayland-egl-dev
# Install cross-compilation toolchain for ARM64
if [ "${{ matrix.arch }}" == "arm64" ]; then
sudo dpkg --add-architecture arm64
sudo apt-get update
sudo apt-get install -y \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu \
libgl1-mesa-dev:arm64 \
libx11-dev:arm64 \
libxcursor-dev:arm64 \
libxrandr-dev:arm64 \
libxinerama-dev:arm64 \
libxi-dev:arm64 \
libxxf86vm-dev:arm64 \
libxkbcommon-dev:arm64 \
libwayland-dev:arm64 \
libwayland-egl-dev:arm64 \
libudev-dev:arm64 \
libinput-dev:arm64 \
libstdc++-13-dev:arm64
fi
- name: Get version
id: version
run: |
if [ "${{ github.event_name }}" == "release" ]; then
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
else
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
fi
- name: Build binary
env:
CGO_ENABLED: 1
GOOS: linux
GOARCH: ${{ matrix.goarch }}
CC: ${{ matrix.cc }}
run: |
go build -o typr-corrige-linux-${{ matrix.arch }} .
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: typr-corrige-linux-${{ matrix.arch }}
path: typr-corrige-linux-${{ matrix.arch }}
build-windows:
name: Build Windows
runs-on: windows-latest
strategy:
matrix:
include:
- arch: amd64
goarch: amd64
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.25"
- name: Get version
id: version
shell: bash
run: |
if [ "${{ github.event_name }}" == "release" ]; then
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
else
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
fi
- name: Build binary with MSVC
shell: powershell
env:
CGO_ENABLED: 1
GOOS: windows
GOARCH: ${{ matrix.goarch }}
CC: cl.exe
run: |
$vsPath = (vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath).Trim()
if (-not $vsPath) {
throw "could not find Visual Studio installation"
}
$vcvars = "$vsPath\VC\Auxiliary\Build\vcvars64.bat"
$cmd = "call `"$vcvars`" && go build -o typr-corrige-windows-${{ matrix.arch }}.exe ."
cmd /c $cmd
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: typr-corrige-windows-${{ matrix.arch }}
path: typr-corrige-windows-${{ matrix.arch }}.exe
publish-release:
name: Publish to Release
runs-on: ubuntu-latest
needs: [build-macos, build-linux, build-windows]
if: github.event_name == 'release'
steps:
- name: Download darwin-amd64 artifact
uses: actions/download-artifact@v4
with:
name: typr-corrige-darwin-amd64
path: ./typr-corrige-darwin-amd64
- name: Download darwin-arm64 artifact
uses: actions/download-artifact@v4
with:
name: typr-corrige-darwin-arm64
path: ./typr-corrige-darwin-arm64
- name: Download linux-amd64 artifact
uses: actions/download-artifact@v4
with:
name: typr-corrige-linux-amd64
path: ./typr-corrige-linux-amd64
- name: Download linux-arm64 artifact
uses: actions/download-artifact@v4
with:
name: typr-corrige-linux-arm64
path: ./typr-corrige-linux-arm64
- name: Download windows-amd64 artifact
uses: actions/download-artifact@v4
with:
name: typr-corrige-windows-amd64
path: ./typr-corrige-windows-amd64.exe
- name: Upload darwin-amd64 to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./typr-corrige-darwin-amd64
asset_name: typr-corrige-darwin-amd64
asset_content_type: application/octet-stream
- name: Upload darwin-arm64 to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./typr-corrige-darwin-arm64
asset_name: typr-corrige-darwin-arm64
asset_content_type: application/octet-stream
- name: Upload linux-amd64 to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./typr-corrige-linux-amd64
asset_name: typr-corrige-linux-amd64
asset_content_type: application/octet-stream
- name: Upload linux-arm64 to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./typr-corrige-linux-arm64
asset_name: typr-corrige-linux-arm64
asset_content_type: application/octet-stream
- name: Upload windows-amd64 to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./typr-corrige-windows-amd64.exe
asset_name: typr-corrige-windows-amd64.exe
asset_content_type: application/octet-stream