name: Cross-Build on: push: branches: - master - 2.* pull_request: branches: - master - 2.* jobs: cross-build-test: strategy: fail-fast: false matrix: goos: ['android', 'linux', 'solaris', 'illumos', 'dragonfly', 'freebsd', 'openbsd', 'plan9', 'windows', 'darwin', 'netbsd'] go: [ '1.18' ] include: # Set the minimum Go patch version for the given Go minor # Usable via ${{ matrix.GO_SEMVER }} - go: '1.18' GO_SEMVER: '~1.18.1' runs-on: ubuntu-latest continue-on-error: true steps: - name: Install Go uses: actions/setup-go@v3 with: go-version: ${{ matrix.GO_SEMVER }} check-latest: true - name: Print Go version and environment id: vars run: | printf "Using go at: $(which go)\n" printf "Go version: $(go version)\n" printf "\n\nGo environment:\n\n" go env printf "\n\nSystem environment:\n\n" env - name: Cache the build cache uses: actions/cache@v2 with: # In order: # * Module download cache # * Build cache (Linux) path: | ~/go/pkg/mod ~/.cache/go-build key: cross-build-go${{ matrix.go }}-${{ matrix.goos }}-${{ hashFiles('**/go.sum') }} restore-keys: | cross-build-go${{ matrix.go }}-${{ matrix.goos }} - name: Checkout code into the Go module directory uses: actions/checkout@v3 - name: Run Build env: CGO_ENABLED: 0 GOOS: ${{ matrix.goos }} shell: bash continue-on-error: true working-directory: ./cmd/caddy run: | GOOS=$GOOS go build -trimpath -o caddy-"$GOOS"-amd64 2> /dev/null if [ $? -ne 0 ]; then echo "::warning ::$GOOS Build Failed" exit 0 fi