From 3f344f4871a8d7c268826087425ae2366525095a Mon Sep 17 00:00:00 2001 From: KagurazakaNyaa Date: Tue, 2 Sep 2025 16:24:02 +0800 Subject: [PATCH 1/7] add 7z binaries --- .github/workflows/build.yml | 74 +++++++++---------------------------- .gitignore | 5 ++- 7z.version | 1 + build.sh | 31 ++++++++++++++++ download_7z.sh | 45 ++++++++++++++++++++++ 5 files changed, 98 insertions(+), 58 deletions(-) create mode 100644 7z.version create mode 100755 build.sh create mode 100755 download_7z.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2e81cae..5c10857 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,68 +9,28 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - - name: Set up Go - uses: actions/setup-go@v3 + - name: Setup Go + uses: actions/setup-go@v5 with: go-version: 1.19 - - name: Build - run: | - CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_win32_x64.exe - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_x64 - CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_arm64 - CGO_ENABLED=0 GOOS=linux GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_arm - CGO_ENABLED=0 GOOS=linux GOARCH=386 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_386 - CGO_ENABLED=0 GOOS=linux GOARCH=mips go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_mips - CGO_ENABLED=0 GOOS=linux GOARCH=mips64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_mips64 - CGO_ENABLED=0 GOOS=linux GOARCH=mipsle go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_mipsle - CGO_ENABLED=0 GOOS=linux GOARCH=ppc64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_ppc64 - CGO_ENABLED=0 GOOS=linux GOARCH=riscv64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_riscv64 - CGO_ENABLED=0 GOOS=linux GOARCH=s390x go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_linux_s390x - CGO_ENABLED=0 GOOS=netbsd GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_netbsd_x64 - CGO_ENABLED=0 GOOS=netbsd GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_netbsd_arm - CGO_ENABLED=0 GOOS=netbsd GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_netbsd_arm64 - CGO_ENABLED=0 GOOS=openbsd GOARCH=386 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_openbsd_386 - CGO_ENABLED=0 GOOS=openbsd GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_openbsd_x64 - CGO_ENABLED=0 GOOS=openbsd GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_openbsd_arm - CGO_ENABLED=0 GOOS=openbsd GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_openbsd_arm64 - CGO_ENABLED=0 GOOS=freebsd GOARCH=386 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_freebsd_386 - CGO_ENABLED=0 GOOS=freebsd GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_freebsd_x64 - CGO_ENABLED=0 GOOS=freebsd GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_freebsd_arm - CGO_ENABLED=0 GOOS=freebsd GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_freebsd_arm64 - CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_darwin_amd64 - CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o file_zip_darwin_arm64 + - name: Setup 7z + uses: milliewalky/setup-7-zip@v2 - - uses: "marvinpinto/action-automatic-releases@latest" + - name: Build zip-tools + run: build.sh + + - name: Download 7z binaries + run: download_7z.sh + + - uses: softprops/action-gh-release@v2 with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "latest" - title: Development Build + token: "${{ secrets.GITHUB_TOKEN }}" + tag_name: latest + name: Development Build prerelease: true + make_latest: true files: | - file_zip_win32_x64.exe - file_zip_linux_x64 - file_zip_linux_arm64 - file_zip_linux_arm - file_zip_linux_386 - file_zip_linux_mips - file_zip_linux_mips64 - file_zip_linux_mipsle - file_zip_linux_ppc64 - file_zip_linux_riscv64 - file_zip_linux_s390x - file_zip_netbsd_x64 - file_zip_netbsd_arm - file_zip_netbsd_arm64 - file_zip_openbsd_386 - file_zip_openbsd_x64 - file_zip_openbsd_arm - file_zip_openbsd_arm64 - file_zip_freebsd_386 - file_zip_freebsd_x64 - file_zip_freebsd_arm - file_zip_freebsd_arm64 - file_zip_darwin_amd64 - file_zip_darwin_arm64 + output/* diff --git a/.gitignore b/.gitignore index cc95302..31dc731 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,7 @@ file-zip .vscode main_linux -main \ No newline at end of file +main + +# 7z download target +output/ diff --git a/7z.version b/7z.version new file mode 100644 index 0000000..417189d --- /dev/null +++ b/7z.version @@ -0,0 +1 @@ +2501 \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..ff654cc --- /dev/null +++ b/build.sh @@ -0,0 +1,31 @@ +#!/bin/bash +set -ex + +mkdir -p output + +export CGO_ENABLED=0 + +GOOS=windows GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_win32_x64.exe +GOOS=linux GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_x64 +GOOS=linux GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_arm64 +GOOS=linux GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_arm +GOOS=linux GOARCH=386 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_386 +GOOS=linux GOARCH=mips go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_mips +GOOS=linux GOARCH=mips64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_mips64 +GOOS=linux GOARCH=mipsle go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_mipsle +GOOS=linux GOARCH=ppc64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_ppc64 +GOOS=linux GOARCH=riscv64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_riscv64 +GOOS=linux GOARCH=s390x go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_linux_s390x +GOOS=netbsd GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_netbsd_x64 +GOOS=netbsd GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_netbsd_arm +GOOS=netbsd GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_netbsd_arm64 +GOOS=openbsd GOARCH=386 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_openbsd_386 +GOOS=openbsd GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_openbsd_x64 +GOOS=openbsd GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_openbsd_arm +GOOS=openbsd GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_openbsd_arm64 +GOOS=freebsd GOARCH=386 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_freebsd_386 +GOOS=freebsd GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_freebsd_x64 +GOOS=freebsd GOARCH=arm go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_freebsd_arm +GOOS=freebsd GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_freebsd_arm64 +GOOS=darwin GOARCH=amd64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_darwin_amd64 +GOOS=darwin GOARCH=arm64 go build -trimpath -ldflags '-s -w --extldflags "-static -fpic"' -o output/file_zip_darwin_arm64 \ No newline at end of file diff --git a/download_7z.sh b/download_7z.sh new file mode 100755 index 0000000..12d9b2c --- /dev/null +++ b/download_7z.sh @@ -0,0 +1,45 @@ +#!/bin/bash +set -ex + +LIB7Z_VERSION="$(cat 7z.version)" +URL_7Z_WINDOWS_ALL=https://www.7-zip.org/a/7z${LIB7Z_VERSION}-extra.7z +URL_7Z_MAC_ALL=https://www.7-zip.org/a/7z${LIB7Z_VERSION}-mac.tar.xz +URL_7Z_LINUX_X86=https://www.7-zip.org/a/7z${LIB7Z_VERSION}-linux-x86.tar.xz +URL_7Z_LINUX_X86_64=https://www.7-zip.org/a/7z${LIB7Z_VERSION}-linux-x64.tar.xz +URL_7Z_LINUX_ARM=https://www.7-zip.org/a/7z${LIB7Z_VERSION}-linux-arm.tar.xz +URL_7Z_LINUX_ARM64=https://www.7-zip.org/a/7z${LIB7Z_VERSION}-linux-arm64.tar.xz + +mkdir -p output /tmp/7z + +echo "Downloading Windows binaries..." +wget "${URL_7Z_WINDOWS_ALL}" -O /tmp/7z/win32.7z +7z x /tmp/7z/win32.7z -o/tmp/7z/win32 -y +mv /tmp/7z/win32/x64/7za.exe output/7z_win32_x64.exe +mv /tmp/7z/win32/arm64/7za.exe output/7z_win32_arm64.exe +mv /tmp/7z/win32/License.txt output/7z-extra-license.txt +echo "Done." + +echo "Downloading Linux and Mac binaries..." +mkdir -p /tmp/7z/linux-x86 /tmp/7z/linux-x64 /tmp/7z/linux-arm /tmp/7z/linux-arm64 /tmp/7z/mac +wget "${URL_7Z_LINUX_X86}" -O /tmp/7z/linux-x86.tar.xz +wget "${URL_7Z_LINUX_X86_64}" -O /tmp/7z/linux-x64.tar.xz +wget "${URL_7Z_LINUX_ARM}" -O /tmp/7z/linux-arm.tar.xz +wget "${URL_7Z_LINUX_ARM64}" -O /tmp/7z/linux-arm64.tar.xz +wget "${URL_7Z_MAC_ALL}" -O /tmp/7z/mac.tar.xz +tar xJf /tmp/7z/linux-x86.tar.xz -C /tmp/7z/linux-x86 +tar xJf /tmp/7z/linux-x64.tar.xz -C /tmp/7z/linux-x64 +tar xJf /tmp/7z/linux-arm.tar.xz -C /tmp/7z/linux-arm +tar xJf /tmp/7z/linux-arm64.tar.xz -C /tmp/7z/linux-arm64 +tar xJf /tmp/7z/mac.tar.xz -C /tmp/7z/mac +mv /tmp/7z/mac/License.txt output/7z-unix-license.txt +mv /tmp/7z/linux-x86/7zz output/7z_linux_386 +mv /tmp/7z/linux-x64/7zz output/7z_linux_x64 +mv /tmp/7z/linux-arm/7zz output/7z_linux_arm +mv /tmp/7z/linux-arm64/7zz output/7z_linux_arm64 +mv /tmp/7z/mac/7zz output/7z_darwin_arm64 +cp output/7z_darwin_arm64 output/7z_darwin_x64 +echo "Done." + +echo "Cleanup..." +rm -rf /tmp/7z +echo "Done." \ No newline at end of file From 79acc45527d44d8c2e57de606748dcab2677eb29 Mon Sep 17 00:00:00 2001 From: KagurazakaNyaa Date: Tue, 2 Sep 2025 16:27:37 +0800 Subject: [PATCH 2/7] feat: manually trigger workflow --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5c10857..2cb3d55 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,6 +3,7 @@ name: Build on: push: pull_request: + workflow_dispatch: jobs: build: From f4e52c309ac058939836af58c43209114bc96ead Mon Sep 17 00:00:00 2001 From: KagurazakaNyaa Date: Tue, 2 Sep 2025 16:37:19 +0800 Subject: [PATCH 3/7] fix: run shell on workflow --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2cb3d55..eb985ec 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,10 +21,10 @@ jobs: uses: milliewalky/setup-7-zip@v2 - name: Build zip-tools - run: build.sh + run: ./build.sh - name: Download 7z binaries - run: download_7z.sh + run: ./download_7z.sh - uses: softprops/action-gh-release@v2 with: From 0bf1736b527bedce9452336aa1f7562cf8929f42 Mon Sep 17 00:00:00 2001 From: KagurazakaNyaa Date: Tue, 2 Sep 2025 16:50:36 +0800 Subject: [PATCH 4/7] fix: overwrite release --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eb985ec..e0fad7a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,7 +29,6 @@ jobs: - uses: softprops/action-gh-release@v2 with: token: "${{ secrets.GITHUB_TOKEN }}" - tag_name: latest name: Development Build prerelease: true make_latest: true From 100593e8418b1f0da0f0fbbb04096774022082d7 Mon Sep 17 00:00:00 2001 From: KagurazakaNyaa Date: Tue, 2 Sep 2025 16:54:23 +0800 Subject: [PATCH 5/7] fix: only release with tag --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e0fad7a..8a81d4d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,6 +27,7 @@ jobs: run: ./download_7z.sh - uses: softprops/action-gh-release@v2 + if: github.ref_type == 'tag' with: token: "${{ secrets.GITHUB_TOKEN }}" name: Development Build From 89edde565c42a832b08c105eb4a1fd43577954f8 Mon Sep 17 00:00:00 2001 From: KagurazakaNyaa Date: Tue, 2 Sep 2025 17:09:48 +0800 Subject: [PATCH 6/7] fix: fix latest --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8a81d4d..217b7d8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,6 @@ jobs: with: token: "${{ secrets.GITHUB_TOKEN }}" name: Development Build - prerelease: true make_latest: true files: | output/* From 7e0e09f2d1a5198537f703b35aad0a080a31cf2b Mon Sep 17 00:00:00 2001 From: KagurazakaNyaa Date: Tue, 2 Sep 2025 17:20:39 +0800 Subject: [PATCH 7/7] chore: upload artifacts to actions --- .github/workflows/build.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 217b7d8..fb5d0ca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,11 +26,17 @@ jobs: - name: Download 7z binaries run: ./download_7z.sh + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: Development Build + path: | + output/* + - uses: softprops/action-gh-release@v2 if: github.ref_type == 'tag' with: token: "${{ secrets.GITHUB_TOKEN }}" - name: Development Build make_latest: true files: | output/*