diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2e81cae..fb5d0ca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,74 +3,40 @@ name: Build on: push: pull_request: + workflow_dispatch: jobs: build: 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 + + - 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: - repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "latest" - title: Development Build - prerelease: true + token: "${{ secrets.GITHUB_TOKEN }}" + 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