name: Build and Release on: # push: # branches: [ main ] # pull_request: # branches: [ main ] # release: # types: [published] workflow_dispatch: jobs: build: name: Build and Test runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Go uses: actions/setup-go@v3 with: go-version: 'stable' - name: Build and Test on Default Platform run: | go build -v ./... go test -v ./... - name: Delete Existing Release Assets run: | release_id=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/oneclickvirt/backtrace/releases/tags/output" | jq -r '.id') echo "Deleting existing release assets..." assets=$(curl -s -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/oneclickvirt/backtrace/releases/$release_id/assets" | jq -r '.[] | .id') for asset in $assets; do echo "Deleting asset with ID: $asset" curl -X DELETE -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/oneclickvirt/backtrace/releases/assets/$asset" done sleep 60 release-binary: name: Release Go Binary runs-on: ubuntu-latest needs: build steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Go uses: actions/setup-go@v3 with: go-version: 'stable' - name: Build and Release run: | mkdir -p bin cd cmd CGO_ENABLED=0 GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} go build -o ../bin/backtrace-${{ matrix.goos }}-${{ matrix.goarch }} -v -ldflags="-extldflags=-static" . - name: Upload New Assets run: | release_id=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/oneclickvirt/backtrace/releases/tags/output" | jq -r '.id') echo "Uploading new assets to release..." for file in ./bin/*; do echo "Uploading $file to release..." curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ -H "Content-Type: application/octet-stream" \ --data-binary @"$file" \ "https://uploads.github.com/repos/oneclickvirt/backtrace/releases/$release_id/assets?name=$(basename "$file")" rm -rf $file done strategy: matrix: goos: [windows, freebsd, openbsd, linux, darwin] goarch: [amd64, 386] exclude: - goarch: 386 goos: darwin include: - goos: windows goarch: 386 - goos: windows goarch: amd64 - goos: windows goarch: arm64 - goos: windows goarch: arm goarm: 7 - goos: darwin goarch: arm64 - goos: linux goarch: arm goarm: 7 - goos: linux goarch: arm64 - goos: linux goarch: riscv64 - goos: linux goarch: mips64 - goos: linux goarch: mips64le - goos: linux goarch: mipsle - goos: linux goarch: mips - goos: linux goarch: ppc64 - goos: linux goarch: ppc64le - goos: freebsd goarch: arm64 - goos: freebsd goarch: arm goarm: 7 - goos: openbsd goarch: arm64 - goos: openbsd goarch: arm goarm: 7 # - goos: linux # goarch: mipsle # gomips: softfloat # - goos: linux # goarch: mips # gomips: softfloat # - goos: linux # goarch: arm # goarm: 6 # - goos: linux # goarch: arm # goarm: 5