/ .github / workflows / gobuild.yml
gobuild.yml
 1  name: Go Build
 2  
 3  on:
 4    workflow_dispatch:
 5    pull_request:
 6      paths-ignore:
 7        - '**/*.md'
 8    push:
 9      branches:
10        - 'master'
11  
12  concurrency:
13    group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event_name == 'push' && github.sha || github.ref }}
14    cancel-in-progress: true
15  
16  jobs:
17    go-build:
18      if: github.repository == 'ipfs/kubo' || github.event_name == 'workflow_dispatch'
19      runs-on: ${{ fromJSON(github.repository == 'ipfs/kubo' && '["self-hosted", "linux", "x64", "4xlarge"]' || '"ubuntu-latest"') }}
20      timeout-minutes: 20
21      env:
22        TEST_DOCKER: 0
23        TEST_VERBOSE: 1
24        GIT_PAGER: cat
25        IPFS_CHECK_RCMGR_DEFAULTS: 1
26      defaults:
27        run:
28          shell: bash
29      steps:
30        - uses: actions/checkout@v6
31        - uses: actions/setup-go@v6
32          with:
33            go-version-file: 'go.mod'
34            cache: true
35            cache-dependency-path: go.sum
36  
37        - name: Build all platforms
38          run: |
39            # Read platforms from build-platforms.yml and build each one
40            echo "Building kubo for all platforms..."
41  
42            # Read and build each platform
43            grep '^  - ' .github/build-platforms.yml | sed 's/^  - //' | while read -r platform; do
44              if [ -z "$platform" ]; then
45                continue
46              fi
47  
48              echo "::group::Building $platform"
49              GOOS=$(echo "$platform" | cut -d- -f1)
50              GOARCH=$(echo "$platform" | cut -d- -f2)
51  
52              echo "Building $platform"
53              echo "  GOOS=$GOOS GOARCH=$GOARCH go build -o /dev/null ./cmd/ipfs"
54              GOOS=$GOOS GOARCH=$GOARCH go build -o /dev/null ./cmd/ipfs
55              echo "::endgroup::"
56            done
57  
58            echo "All platforms built successfully"