diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dd28e27da..825a6a1da 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -62,10 +62,11 @@ jobs: generate-metadata-file: name: "Generate release metadata" - needs: get-product-version runs-on: ubuntu-latest + needs: get-product-version outputs: filepath: ${{ steps.generate-metadata-file.outputs.filepath }} + steps: - uses: actions/checkout@v2 - name: Generate package metadata @@ -81,27 +82,31 @@ jobs: path: ${{ steps.generate-metadata-file.outputs.filepath }} build: - needs: ["get-product-version", "get-go-version"] - runs-on: ubuntu-latest + name: Build for ${{ matrix.goos }}_${{ matrix.goarch }} + runs-on: ${{ matrix.runson }} + needs: + - get-product-version + - get-go-version + strategy: matrix: include: - - {goos: "freebsd", goarch: "386"} - - {goos: "freebsd", goarch: "amd64"} - - {goos: "freebsd", goarch: "arm"} - - {goos: "linux", goarch: "386"} - - {goos: "linux", goarch: "amd64"} - - {goos: "linux", goarch: "arm"} - - {goos: "linux", goarch: "arm64"} - - {goos: "openbsd", goarch: "386"} - - {goos: "openbsd", goarch: "amd64"} - - {goos: "solaris", goarch: "amd64"} - - {goos: "windows", goarch: "386"} - - {goos: "windows", goarch: "amd64"} + - {goos: "freebsd", goarch: "386", runson: "ubuntu-latest"} + - {goos: "freebsd", goarch: "amd64", runson: "ubuntu-latest"} + - {goos: "freebsd", goarch: "arm", runson: "ubuntu-latest"} + - {goos: "linux", goarch: "386", runson: "ubuntu-latest"} + - {goos: "linux", goarch: "amd64", runson: "ubuntu-latest"} + - {goos: "linux", goarch: "arm", runson: "ubuntu-latest"} + - {goos: "linux", goarch: "arm64", runson: "ubuntu-latest"} + - {goos: "openbsd", goarch: "386", runson: "ubuntu-latest"} + - {goos: "openbsd", goarch: "amd64", runson: "ubuntu-latest"} + - {goos: "solaris", goarch: "amd64", runson: "ubuntu-latest"} + - {goos: "windows", goarch: "386", runson: "ubuntu-latest"} + - {goos: "windows", goarch: "amd64", runson: "ubuntu-latest"} + - {goos: "darwin", goarch: "amd64", runson: "macos-latest"} + - {goos: "darwin", goarch: "arm64", runson: "macos-latest"} fail-fast: false - name: Build for ${{ matrix.goos }}_${{ matrix.goarch }} - steps: - uses: actions/checkout@v2 @@ -110,13 +115,22 @@ jobs: with: go-version: ${{ needs.get-go-version.outputs.go-version }} + # FIXME: We're not currently setting the hard-coded version string in + # version/version.go at any point here, which means that the packages + # this process builds are not suitable for release. Once we're using + # Go 1.18 we may begin using the version information automatically + # embedded by the Go toolchain, at which point we won't need any + # special steps during build, but failing that we'll need to rework + # the version/version.go package so we can more readily update it + # using linker flags rather than direct code modification. + - name: Build env: GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.goarch }} run: | mkdir dist out - go build -o dist/ . + go build -ldflags "-w -s" -o dist/ . zip -r -j out/${{ env.PKG_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip dist/ - uses: actions/upload-artifact@v2 @@ -145,6 +159,8 @@ jobs: echo "RPM_PACKAGE=$(basename out/*.rpm)" >> $GITHUB_ENV echo "DEB_PACKAGE=$(basename out/*.deb)" >> $GITHUB_ENV + # FIXME: Generate homebrew packages when targeting macOS. + - uses: actions/upload-artifact@v2 if: ${{ matrix.goos == 'linux' }} with: @@ -157,41 +173,6 @@ jobs: name: ${{ env.DEB_PACKAGE }} path: out/${{ env.DEB_PACKAGE }} - build-darwin: - needs: ["get-product-version", "get-go-version"] - runs-on: macos-latest - strategy: - matrix: - include: - - {goos: "darwin", goarch: "amd64"} - - {goos: "darwin", goarch: "arm64"} - fail-fast: false - - name: Build for ${{ matrix.goos }}_${{ matrix.goarch }} - - env: - GOOS: ${{ matrix.goos }} - GOARCH: ${{ matrix.goarch }} - - steps: - - uses: actions/checkout@v2 - - - name: Install Go toolchain - uses: actions/setup-go@v2 - with: - go-version: ${{ needs.get-go-version.outputs.go-version }} - - - name: Build - run: | - mkdir dist out - go build -o dist/ - zip -r -j out/${{ env.PKG_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip dist/ - - - uses: actions/upload-artifact@v2 - with: - name: ${{ env.PKG_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip - path: out/${{ env.PKG_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip - build-docker: name: Build Docker image for linux_${{ matrix.arch }} needs: @@ -319,7 +300,7 @@ jobs: runs-on: macos-latest needs: - get-product-version - - build-darwin + - build - e2etest-build strategy: