118 lines
3.3 KiB
YAML
118 lines
3.3 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "grok-dev@*"
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
description: "Release tag to publish (for example grok-dev@1.1.4)"
|
|
required: true
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- runner: ubuntu-latest
|
|
build_output: grok
|
|
asset_name: grok-linux-x64
|
|
target: ""
|
|
- runner: macos-latest
|
|
build_output: grok
|
|
asset_name: grok-darwin-x64
|
|
target: --target=bun-darwin-x64
|
|
- runner: macos-latest
|
|
build_output: grok
|
|
asset_name: grok-darwin-arm64
|
|
target: ""
|
|
- runner: windows-latest
|
|
build_output: grok.exe
|
|
asset_name: grok-windows-x64.exe
|
|
target: ""
|
|
|
|
runs-on: ${{ matrix.runner }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Setup Bun
|
|
uses: oven-sh/setup-bun@v2
|
|
with:
|
|
bun-version: 1.3.11
|
|
|
|
- name: Install dependencies
|
|
run: bun install --frozen-lockfile
|
|
|
|
- name: Compile standalone binary
|
|
run: bun build --compile ${{ matrix.target }} --outfile "release/${{ matrix.build_output }}" ./src/index.ts
|
|
|
|
- name: Compute checksum (unix)
|
|
if: runner.os != 'Windows'
|
|
shell: bash
|
|
working-directory: release
|
|
run: |
|
|
cp "${{ matrix.build_output }}" "${{ matrix.asset_name }}"
|
|
shasum -a 256 "${{ matrix.asset_name }}" > "${{ matrix.asset_name }}.sha256"
|
|
|
|
- name: Compute checksum (windows)
|
|
if: runner.os == 'Windows'
|
|
shell: pwsh
|
|
working-directory: release
|
|
run: |
|
|
Copy-Item "${{ matrix.build_output }}" "${{ matrix.asset_name }}"
|
|
$hash = (Get-FileHash "${{ matrix.asset_name }}" -Algorithm SHA256).Hash.ToLower()
|
|
"$hash ${{ matrix.asset_name }}" | Out-File -Encoding ascii "${{ matrix.asset_name }}.sha256"
|
|
|
|
- name: Upload release artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.asset_name }}
|
|
path: |
|
|
release/${{ matrix.asset_name }}
|
|
release/${{ matrix.asset_name }}.sha256
|
|
|
|
publish:
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Resolve release tag
|
|
shell: bash
|
|
run: |
|
|
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
|
tag="${{ github.event.inputs.version }}"
|
|
else
|
|
tag="${{ github.ref_name }}"
|
|
fi
|
|
echo "RELEASE_TAG=${tag}" >> "$GITHUB_ENV"
|
|
|
|
- name: Download all build artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: release-assets
|
|
|
|
- name: Merge checksums
|
|
shell: bash
|
|
run: |
|
|
cat release-assets/**/*.sha256 | sort > release-assets/checksums.txt
|
|
|
|
- name: Publish GitHub Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
tag_name: ${{ env.RELEASE_TAG }}
|
|
generate_release_notes: true
|
|
files: |
|
|
release-assets/**/grok-linux-x64
|
|
release-assets/**/grok-darwin-x64
|
|
release-assets/**/grok-darwin-arm64
|
|
release-assets/**/grok-windows-x64.exe
|
|
release-assets/checksums.txt
|