name: CI on: [push, pull_request,workflow_dispatch] env: BINARY_PREFIX: "go-cqhttp_" BINARY_SUFFIX: "" COMMIT_ID: "${{ github.sha }}" PR_PROMPT: "::warning:: Build artifact will not be uploaded due to the workflow is trigged by pull request." jobs: build: name: Build binary CI runs-on: ubuntu-latest strategy: matrix: # build and publish in parallel: linux/386, linux/amd64, windows/386, windows/amd64, darwin/amd64, darwin/arm64 goos: [linux, windows, darwin] goarch: ["386", amd64, arm, arm64] exclude: - goos: darwin goarch: arm - goos: darwin goarch: "386" fail-fast: true steps: - uses: actions/checkout@v2 - name: Setup Go environment uses: actions/setup-go@v2.1.3 with: go-version: 1.17 - name: Cache downloaded module uses: actions/cache@v2 with: path: | ~/.cache/go-build ~/go/pkg/mod key: ${{ runner.os }}-go-${{ matrix.goos }}-${{ matrix.goarch }}-${{ hashFiles('**/go.sum') }} - name: Build binary file env: GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.goarch }} IS_PR: ${{ !!github.head_ref }} run: | if [ $GOOS = "windows" ]; then export BINARY_SUFFIX="$BINARY_SUFFIX.exe"; fi if $IS_PR ; then echo $PR_PROMPT; fi export BINARY_NAME="$BINARY_PREFIX$GOOS_$GOARCH$BINARY_SUFFIX" export CGO_ENABLED=0 export LD_FLAGS="-w -s -X github.com/Mrs4s/go-cqhttp/internal/base.Version=${COMMIT_ID::7}" go build -o "output/$BINARY_NAME" -trimpath -ldflags "$LD_FLAGS" . - name: Upload artifact uses: actions/upload-artifact@v2 if: ${{ !github.head_ref }} with: name: ${{ matrix.goos }}_${{ matrix.goarch }} path: output/