From 91d604222f9b5020d34ef2ac7f8e19dfc8cfa00d Mon Sep 17 00:00:00 2001 From: bepass <43346478+uoosef@users.noreply.github.com> Date: Tue, 23 Jan 2024 21:52:51 +0330 Subject: [PATCH 1/4] Create go-build.yaml Signed-off-by: bepass <43346478+uoosef@users.noreply.github.com> --- .github/workflows/go-build.yaml | 187 ++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 .github/workflows/go-build.yaml diff --git a/.github/workflows/go-build.yaml b/.github/workflows/go-build.yaml new file mode 100644 index 000000000..dd33bb42a --- /dev/null +++ b/.github/workflows/go-build.yaml @@ -0,0 +1,187 @@ +# This workflow will build a golang project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go + +name: Go + +on: + workflow_dispatch: + release: + types: [published] + push: + branches: + - main + paths: + - "**/*.go" + - "go.mod" + - "go.sum" + - ".github/workflows/*.yml" + + +jobs: + build: + permissions: + contents: write + strategy: + matrix: + # Include amd64 on all platforms. + goos: [windows, freebsd, openbsd, linux, dragonfly, darwin] + goarch: [amd64, 386] + exclude: + # Exclude i386 on darwin and dragonfly. + - goarch: 386 + goos: dragonfly + - goarch: 386 + goos: darwin + include: + # BEIGIN MacOS ARM64 + - goos: darwin + goarch: arm64 + # END MacOS ARM64 + # BEGIN Linux ARM 5 6 7 + - goos: linux + goarch: arm + goarm: 7 + - goos: linux + goarch: arm + goarm: 6 + - goos: linux + goarch: arm + goarm: 5 + # END Linux ARM 5 6 7 + # BEGIN Android ARM 8 + - goos: android + goarch: arm64 + # END Android ARM 8 + # Windows ARM + - goos: windows + goarch: arm64 + - goos: windows + goarch: arm + goarm: 7 + # BEGIN Other architectures + # BEGIN riscv64 & ARM64 & LOONG64 + - goos: linux + goarch: arm64 + - goos: linux + goarch: riscv64 + - goos: linux + goarch: loong64 + # END riscv64 & ARM64 & LOONG64 + # BEGIN MIPS + - goos: linux + goarch: mips64 + - goos: linux + goarch: mips64le + - goos: linux + goarch: mipsle + - goos: linux + goarch: mips + # END MIPS + # BEGIN PPC + - goos: linux + goarch: ppc64 + - goos: linux + goarch: ppc64le + # END PPC + # BEGIN FreeBSD ARM + - goos: freebsd + goarch: arm64 + - goos: freebsd + goarch: arm + goarm: 7 + # END FreeBSD ARM + # BEGIN S390X + - goos: linux + goarch: s390x + # END S390X + # END Other architectures + # BEGIN OPENBSD ARM + - goos: openbsd + goarch: arm64 + - goos: openbsd + goarch: arm + goarm: 7 + # END OPENBSD ARM + fail-fast: false + + runs-on: ubuntu-latest + env: + GOOS: ${{ matrix.goos }} + GOARCH: ${{ matrix.goarch }} + GOARM: ${{ matrix.goarm }} + CGO_ENABLED: 0 + steps: + + - name: Checkout codebase + uses: actions/checkout@v3 + + - name: Show workflow information + run: | + export _NAME=$GOOS-$GOARCH$GOARM$GOMIPS.${GITHUB_SHA::6} + echo "GOOS: $GOOS, GOARCH: $GOARCH, GOARM: $GOARM, GOMIPS: $GOMIPS, RELEASE_NAME: $_NAME" + echo "ASSET_NAME=$_NAME" >> $GITHUB_ENV + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.21' + check-latest: true + + - name: move to warp + run: | + ls + + - name: Build warp + run: | + mkdir -p build_assets + go build -v -o build_assets/warp -trimpath -ldflags "-s -w -buildid=" ./main.go + + - name: Build Mips softfloat warp + if: matrix.goarch == 'mips' || matrix.goarch == 'mipsle' + run: | + GOMIPS=softfloat go build -v -o build_assets/warp_softfloat -trimpath -ldflags "-s -w -buildid=" ./cmd/cli + + - name: Rename Windows warp + if: matrix.goos == 'windows' + run: | + cd ./build_assets || exit 1 + mv warp warp.exe + + - name: Copy README.md & LICENSE + run: | + cp ${GITHUB_WORKSPACE}/README.md ./build_assets/README.md + cp ${GITHUB_WORKSPACE}/LICENSE ./build_assets/LICENSE + + - name: Create ZIP archive + shell: bash + run: | + pushd ./build_assets || exit 1 + touch -mt $(date +%Y01010000) * + zip -9vr ../warp-${{ env.ASSET_NAME }}.zip . + popd || exit 1 + FILE=./warp-${{ env.ASSET_NAME }}.zip + DGST=$FILE.dgst + for METHOD in {"md5","sha1","sha256","sha512"} + do + openssl dgst -$METHOD $FILE | sed 's/([^)]*)//g' >>$DGST + done + + - name: Change the name + run: | + mv ./build_assets ./warp-${{ env.ASSET_NAME }} + + - name: Upload files to Artifacts + uses: actions/upload-artifact@v3 + with: + name: warp-${{ env.ASSET_NAME }} + path: | + ./warp-${{ env.ASSET_NAME }}/* + + - name: Upload binaries to release + uses: svenstaro/upload-release-action@v2 + if: github.event_name == 'release' + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ./warp-${{ env.ASSET_NAME }}.zip* + tag: ${{ github.ref }} + file_glob: true From 2e3a7bab5aac8a6bc67dd62a62a104a5a0f22ec7 Mon Sep 17 00:00:00 2001 From: bepass <43346478+uoosef@users.noreply.github.com> Date: Tue, 23 Jan 2024 21:56:51 +0330 Subject: [PATCH 2/4] Update go-build.yaml Signed-off-by: bepass <43346478+uoosef@users.noreply.github.com> --- .github/workflows/go-build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go-build.yaml b/.github/workflows/go-build.yaml index dd33bb42a..89cf2191c 100644 --- a/.github/workflows/go-build.yaml +++ b/.github/workflows/go-build.yaml @@ -139,7 +139,7 @@ jobs: - name: Build Mips softfloat warp if: matrix.goarch == 'mips' || matrix.goarch == 'mipsle' run: | - GOMIPS=softfloat go build -v -o build_assets/warp_softfloat -trimpath -ldflags "-s -w -buildid=" ./cmd/cli + GOMIPS=softfloat go build -v -o build_assets/warp_softfloat -trimpath -ldflags "-s -w -buildid=" ./main.go - name: Rename Windows warp if: matrix.goos == 'windows' From 0e64b9d81f15cd27af1af75b65013f9f4a886ee3 Mon Sep 17 00:00:00 2001 From: bepass <43346478+uoosef@users.noreply.github.com> Date: Tue, 23 Jan 2024 22:00:25 +0330 Subject: [PATCH 3/4] Update go-build.yaml Signed-off-by: bepass <43346478+uoosef@users.noreply.github.com> --- .github/workflows/go-build.yaml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/go-build.yaml b/.github/workflows/go-build.yaml index 89cf2191c..22ea414ab 100644 --- a/.github/workflows/go-build.yaml +++ b/.github/workflows/go-build.yaml @@ -24,14 +24,8 @@ jobs: strategy: matrix: # Include amd64 on all platforms. - goos: [windows, freebsd, openbsd, linux, dragonfly, darwin] + goos: [windows, freebsd, openbsd, linux, darwin] goarch: [amd64, 386] - exclude: - # Exclude i386 on darwin and dragonfly. - - goarch: 386 - goos: dragonfly - - goarch: 386 - goos: darwin include: # BEIGIN MacOS ARM64 - goos: darwin From b98eb9411f69749a18c8a104bb0278931c32d2aa Mon Sep 17 00:00:00 2001 From: bepass <43346478+uoosef@users.noreply.github.com> Date: Tue, 23 Jan 2024 22:04:15 +0330 Subject: [PATCH 4/4] Update go-build.yaml Signed-off-by: bepass <43346478+uoosef@users.noreply.github.com> --- .github/workflows/go-build.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/go-build.yaml b/.github/workflows/go-build.yaml index 22ea414ab..4511385c1 100644 --- a/.github/workflows/go-build.yaml +++ b/.github/workflows/go-build.yaml @@ -26,6 +26,10 @@ jobs: # Include amd64 on all platforms. goos: [windows, freebsd, openbsd, linux, darwin] goarch: [amd64, 386] + exclude: + # Exclude i386 on darwin. + - goarch: 386 + goos: darwin include: # BEIGIN MacOS ARM64 - goos: darwin