From b1978c375c43283b55ca6bbc4fd1a84d9fbdb3b2 Mon Sep 17 00:00:00 2001 From: Arya Date: Thu, 6 Feb 2025 08:38:28 +0700 Subject: [PATCH] Update go.yml --- .github/workflows/go.yml | 74 +++++++++++++++++++++++++++++++--------- 1 file changed, 58 insertions(+), 16 deletions(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 730c96a..6393132 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -1,28 +1,70 @@ -# 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 +name: Build and Release on: push: - branches: [ "master" ] + branches: + - main pull_request: - branches: [ "master" ] + branches: + - main + push: + tags: + - 'v*' # Runs when a new tag (e.g., v1.0.0) is pushed jobs: - build: + name: Compile Go Binaries runs-on: ubuntu-latest + + strategy: + matrix: + os: [linux, windows, darwin] # Linux, Windows, macOS + arch: [amd64] # x86_64 architecture + steps: - - uses: actions/checkout@v4 + - name: Checkout Repository + uses: actions/checkout@v4 - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.23' + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.21' # Change to your required Go version + + - name: Build Binary + run: | + mkdir -p build + BIN_NAME="myprogram-${{ matrix.os }}-${{ matrix.arch }}" + [ "${{ matrix.os }}" == "windows" ] && BIN_NAME+=".exe" + GOOS=${{ matrix.os }} GOARCH=${{ matrix.arch }} CGO_ENABLED=0 go build -o build/$BIN_NAME main.go + + - name: Upload Artifact to GitHub Actions + uses: actions/upload-artifact@v4 + with: + name: myprogram-${{ matrix.os }}-${{ matrix.arch }} + path: build/* + + release: + name: Publish Release + needs: build + if: startsWith(github.ref, 'refs/tags/v') + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 - - name: Build - run: go build -v ./... + - name: Download Artifacts + uses: actions/download-artifact@v4 + with: + path: build/ - - name: Test - run: go test -v ./... + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + files: build/**/* + tag_name: ${{ github.ref_name }} + name: "Release ${{ github.ref_name }}" + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}