update build workflow

This commit is contained in:
nkanaev 2025-03-20 23:44:36 +00:00
parent 35850d6310
commit 749d7b682e
3 changed files with 107 additions and 98 deletions

View File

@ -11,114 +11,114 @@ jobs:
name: Build for MacOS
runs-on: macos-13
steps:
- name: "Checkout"
- name: Checkout
uses: actions/checkout@v4
- name: "Setup Go"
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: '^1.18'
- name: "Build"
run: make build_macos
- name: Upload
uses: actions/upload-artifact@v4
- name: Build arm64 gui
uses: ./.github/actions/build.yml
with:
name: macos
path: _output/macos/yarr.app
id: darwin_arm64_gui
cmd: make darwin_arm64_gui
out: out/darwin_arm64_gui/yarr.app
- name: Build amd64 gui
uses: ./.github/actions/build.yml
with:
id: darwin_amd64_gui
cmd: make darwin_amd64_gui
out: out/darwin_amd64_gui/yarr.app
- name: Build arm64
uses: ./.github/actions/build.yml
with:
id: darwin_arm64
cmd: make darwin_arm64
out: out/darwin_arm64/yarr
- name: Build amd64
uses: ./.github/actions/build.yml
with:
id: darwin_amd64
cmd: make darwin_amd64
out: out/darwin_amd64/yarr
build_windows:
name: Build for Windows
runs-on: windows-2022
steps:
- name: "Checkout"
- name: Checkout
uses: actions/checkout@v4
- name: "Setup Go"
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: '^1.18'
- name: "Build"
run: make build_windows
- name: Upload
uses: actions/upload-artifact@v4
- name: Setup Zig
uses: mlugg/setup-zig@v1
with:
name: windows
path: _output/windows/yarr.exe
version: 0.14.0
- name: Build arm64 gui
uses: ./.github/actions/build.yml
with:
id: windows_arm64_gui
cmd: make windows_arm64_gui
out: out/windows_arm64_gui/yarr.app
- name: Build amd64 gui
uses: ./.github/actions/build.yml
with:
id: windows_amd64_gui
cmd: make windows_amd64_gui
out: out/windows_amd64_gui/yarr.app
- name: Build arm64
uses: ./.github/actions/build.yml
with:
id: windows_arm64
cmd: make windows_arm64
out: out/windows_arm64/yarr
- name: Build amd64
uses: ./.github/actions/build.yml
with:
id: windows_amd64
cmd: make windows_amd64
out: out/windows_amd64/yarr
build_linux:
name: Build for Linux
runs-on: ubuntu-22.04
steps:
- name: "Checkout"
- name: Checkout
uses: actions/checkout@v4
- name: "Setup Go"
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: '^1.18'
- name: "Build"
run: make build_linux
- name: Upload
uses: actions/upload-artifact@v4
- name: Setup Zig
uses: mlugg/setup-zig@v1
with:
name: linux
path: _output/linux/yarr
build_linux-arm:
name: Build for Linux ARM
runs-on: ubuntu-22.04
steps:
- name: Install dependencies
run: >
sudo apt-get install -y
gcc-arm-linux-gnueabihf
libc6-dev-armhf-cross
- name: "Checkout"
uses: actions/checkout@v4
- name: "Setup Go"
uses: actions/setup-go@v4
version: 0.14.0
- name: Build amd64
uses: ./.github/actions/build.yml
with:
go-version: '^1.18'
- name: "Build"
env:
CC: arm-linux-gnueabihf-gcc
GOARCH: arm
GOARM: 7
run: make build_linux
- name: Upload
uses: actions/upload-artifact@v4
id: windows_amd64
cmd: make windows_amd64
out: out/windows_amd64/yarr
- name: Build arm64
uses: ./.github/actions/build.yml
with:
name: linux_arm
path: _output/linux/yarr
build_linux-arm64:
name: Build for Linux ARM64
runs-on: ubuntu-22.04
steps:
- name: Install dependencies
run: >
sudo apt-get install -y
gcc-aarch64-linux-gnu
libc6-dev-arm64-cross
- name: "Checkout"
uses: actions/checkout@v4
- name: "Setup Go"
uses: actions/setup-go@v4
id: windows_arm64
cmd: make windows_arm64
out: out/windows_arm64/yarr
- name: Build armv7
uses: ./.github/actions/build.yml
with:
go-version: '^1.18'
- name: "Build"
env:
CC: aarch64-linux-gnu-gcc
GOARCH: arm64
run: make build_linux
- name: Upload
uses: actions/upload-artifact@v4
with:
name: linux_arm64
path: _output/linux/yarr
id: windows_armv7
cmd: make windows_armv7
out: out/windows_armv7/yarr
create_release:
name: Create Release
runs-on: ubuntu-latest
if: ${{ startsWith(github.ref, 'refs/tags/') && !contains(github.ref, 'test') }}
needs: [build_macos, build_windows, build_linux, build_linux-arm, build_linux-arm64]
if: ${{ startsWith(github.ref, 'refs/tags/') }}
needs: [build_macos, build_windows, build_linux]
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4.1.7
@ -127,26 +127,12 @@ jobs:
- name: Preparation
run: |
ls -R
chmod u+x macos/Contents/MacOS/yarr
chmod u+x linux/yarr
chmod u+x linux_arm/yarr
chmod u+x linux_arm64/yarr
mv macos yarr.app && zip -r yarr-${GITHUB_REF_NAME}-macos64.zip yarr.app
( cd windows && zip ../yarr-${GITHUB_REF_NAME}-windows64.zip yarr.exe )
( cd linux && zip ../yarr-${GITHUB_REF_NAME}-linux64.zip yarr )
( cd linux_arm && zip ../yarr-${GITHUB_REF_NAME}-linux_arm.zip yarr )
( cd linux_arm64 && zip ../yarr-${GITHUB_REF_NAME}-linux_arm64.zip yarr )
- name: Upload Release
if: false
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
draft: true
prerelease: true
files: |
yarr-${{ github.ref_name }}-macos64.zip
yarr-${{ github.ref_name }}-windows64.zip
yarr-${{ github.ref_name }}-linux64.zip
yarr-${{ github.ref_name }}-linux_arm.zip
yarr-${{ github.ref_name }}-linux_arm64.zip
files: *.zip

23
.github/workflows/step-build.yml vendored Normal file
View File

@ -0,0 +1,23 @@
name: Build & Upload
inputs:
id:
description: artifact name
required: true
cmd:
description: command to run
required: true
out:
description: path to output file
required: true
runs:
using: composite
steps:
- name: compile
run: ${{ inputs.cmd }}
- name: archive
run: tar -cvf ${{ out }}.tar ${{ out }}
- name: upload
uses: actions/upload-artifact@v4
with:
name: ${{ id }}
path: ${{ out }}.tar

View File

@ -35,12 +35,12 @@ host:
go build $(GO_FLAGS) -o out/yarr ./cmd/yarr
darwin_amd64:
# not supported yet
# CC="zig cc -target x86_64-macos-none" GOOS=darwin GOARCH=arm64 go build $(subst -s ,,$(GO_FLAGS)) -o out/$@/yarr ./cmd/yarr
# cross-compilation not supported: CC="zig cc -target x86_64-macos-none"
GOOS=darwin GOARCH=arm64 go build $(GO_FLAGS) -o out/$@/yarr ./cmd/yarr
darwin_arm64:
# not supported yet
# CC="zig cc -target aarch64-macos-none" GOOS=darwin GOARCH=arm64 go build $(subst -s ,,$(GO_FLAGS)) -o out/$@/yarr ./cmd/yarr
# cross-compilation not supported: CC="zig cc -target aarch64-macos-none"
GOOS=darwin GOARCH=arm64 go build $(GO_FLAGS) -o out/$@/yarr ./cmd/yarr
linux_amd64:
CC="zig cc -target x86_64-linux-musl -O2 -g0" CGO_CFLAGS="-D_LARGEFILE64_SOURCE" GOOS=linux GOARCH=amd64 \
@ -69,10 +69,10 @@ darwin_amd64_gui: etc/icon.icns
./etc/macos_package.sh $(VERSION) etc/icon.icns out/$@/yarr out/$@
windows_amd64_gui: windows_versioninfo
GOOS=windows GOARCH=amd64 go build $(GO_FLAGS_GUI_WIN) -o out/$@/yarr ./cmd/yarr
GOOS=windows GOARCH=amd64 go build $(GO_FLAGS_GUI_WIN) -o out/$@/yarr.exe ./cmd/yarr
windows_arm64_gui: src/platform/versioninfo.rc
GOOS=windows GOARCH=arm64 go build $(GO_FLAGS_GUI_WIN) -o out/$@/yarr ./cmd/yarr
GOOS=windows GOARCH=arm64 go build $(GO_FLAGS_GUI_WIN) -o out/$@/yarr.exe ./cmd/yarr
serve:
go run $(GO_FLAGS) ./cmd/yarr -db local.db