diff --git a/.github/workflows/releaser.yml b/.github/workflows/releaser.yml new file mode 100644 index 000000000..f3b8238f0 --- /dev/null +++ b/.github/workflows/releaser.yml @@ -0,0 +1,35 @@ +# .github/workflows/release.yml +name: goreleaser + +on: + workflow_dispatch: + push: + tags: + - "*" + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: setup dependencies + uses: actions/setup-go@v2 + + - name: Login to Docker hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Log tag name + run: echo "Build for tag ${{ github.ref_name }}" + + - name: release dry run + run: make release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAG: ${{ github.ref_name }} diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 000000000..9da62fd0e --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,105 @@ +env: + - CGO_ENABLED=1 +builds: + - id: suave-geth-darwin-amd64 + binary: suave-geth + main: ./cmd/geth + goarch: + - amd64 + goos: + - darwin + env: + - CC=o64-clang + - CXX=o64-clang++ + flags: + - -trimpath + - id: suave-geth-darwin-arm64 + binary: suave-geth + main: ./cmd/geth + goarch: + - arm64 + goos: + - darwin + env: + - CC=oa64-clang + - CXX=oa64-clang++ + flags: + - -trimpath + - id: suave-geth-linux-amd64 + binary: suave-geth + main: ./cmd/geth + env: + - CC=x86_64-linux-gnu-gcc + - CXX=x86_64-linux-gnu-g++ + goarch: + - amd64 + goos: + - linux + flags: + - -trimpath + ldflags: + - -extldflags "-lc -lrt -lpthread --static" + - id: suave-geth-linux-arm64 + binary: suave-geth + main: ./cmd/geth + goarch: + - arm64 + goos: + - linux + env: + - CC=aarch64-linux-gnu-gcc + - CXX=aarch64-linux-gnu-g++ + flags: + - -trimpath + ldflags: + - -extldflags "-lc -lrt -lpthread --static" + - id: suave-geth-windows-amd64 + binary: suave-geth + main: ./cmd/geth + goarch: + - amd64 + goos: + - windows + env: + - CC=x86_64-w64-mingw32-gcc + - CXX=x86_64-w64-mingw32-g++ + flags: + - -trimpath + - -buildmode=exe + +archives: + - id: w/version + builds: + - suave-geth-darwin-amd64 + - suave-geth-darwin-arm64 + - suave-geth-linux-amd64 + - suave-geth-linux-arm64 + - suave-geth-windows-amd64 + name_template: "suave-geth_v{{ .Version }}_{{ .Os }}_{{ .Arch }}" + wrap_in_directory: false + format: zip + files: + - none* + +dockers: + - dockerfile: ./Dockerfile.suave + use: buildx + goarch: amd64 + goos: linux + build_flag_templates: + - --platform=linux/amd64 + image_templates: + - "ghcr.io/flashbots/suave-geth:{{ .ShortCommit }}" + - "ghcr.io/flashbots/suave-geth:{{ .Tag }}" + - "ghcr.io/flashbots/suave-geth:latest" + +checksum: + name_template: "checksums.txt" + +release: + draft: true + header: | + # 🚀 Features + # 🎄 Enhancements + # 🐞 Notable bug fixes + # 🎠 Community diff --git a/Makefile b/Makefile index 71d98a6b5..59c19ef0d 100644 --- a/Makefile +++ b/Makefile @@ -54,3 +54,16 @@ devnet-down: fmt-contracts: cd suave && forge fmt + +release: + docker run \ + --rm \ + -e CGO_ENABLED=1 \ + -e GITHUB_TOKEN="$(GITHUB_TOKEN)" \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -v $(HOME)/.docker/config.json:/root/.docker/config.json \ + -v `pwd`:/go/src/$(PACKAGE_NAME) \ + -v `pwd`/sysroot:/sysroot \ + -w /go/src/$(PACKAGE_NAME) \ + ghcr.io/goreleaser/goreleaser-cross:v1.19.5 \ + release --clean