From 749d7b682ec33acc3709ca35b91b3b584747051e Mon Sep 17 00:00:00 2001 From: nkanaev Date: Thu, 20 Mar 2025 23:44:36 +0000 Subject: [PATCH] update build workflow --- .github/workflows/build.yml | 170 ++++++++++++++----------------- .github/workflows/step-build.yml | 23 +++++ makefile | 12 +-- 3 files changed, 107 insertions(+), 98 deletions(-) create mode 100644 .github/workflows/step-build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dbf8378..5cf4e83 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 diff --git a/.github/workflows/step-build.yml b/.github/workflows/step-build.yml new file mode 100644 index 0000000..ded8fb8 --- /dev/null +++ b/.github/workflows/step-build.yml @@ -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 diff --git a/makefile b/makefile index 9a43c96..d0b1ad0 100644 --- a/makefile +++ b/makefile @@ -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