From 65d654b86d945dc5fe179753d417813c250748d3 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Wed, 20 May 2020 16:40:54 -0700 Subject: [PATCH] attempt to use GH actions and xgo to build binaries --- .github/workflows/master.yml | 126 ++++++++++++++++++++++++++--------- Makefile | 30 +++++---- 2 files changed, 112 insertions(+), 44 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 1e85a347..1a5d61d0 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -298,7 +298,7 @@ jobs: timeoutRequest: 15000 delayRequest: 500 - build-binaries: + build-linux: needs: compile runs-on: ubuntu-latest steps: @@ -307,30 +307,6 @@ jobs: go-version: '1.14.2' - uses: actions/checkout@v2 - - name: Install cross compiling libraries - run: | - sudo apt-get update - sudo apt-get install -y automake autogen build-essential ca-certificates libsqlite3-dev \ - gcc-5-arm-linux-gnueabi g++-5-arm-linux-gnueabi libc6-dev-armel-cross linux-headers-generic \ - gcc-5-arm-linux-gnueabihf g++-5-arm-linux-gnueabihf libc6-dev-armhf-cross \ - gcc-5-aarch64-linux-gnu g++-5-aarch64-linux-gnu libc6-dev-arm64-cross \ - gcc-5-mips-linux-gnu g++-5-mips-linux-gnu libc6-dev-mips-cross \ - gcc-5-mipsel-linux-gnu g++-5-mipsel-linux-gnu libc6-dev-mipsel-cross \ - gcc-5-mips64-linux-gnuabi64 g++-5-mips64-linux-gnuabi64 libc6-dev-mips64-cross \ - gcc-5-mips64el-linux-gnuabi64 g++-5-mips64el-linux-gnuabi64 libc6-dev-mips64el-cross \ - gcc-5-multilib g++-5-multilib gcc-mingw-w64 g++-mingw-w64 clang llvm-dev \ - gcc-6-arm-linux-gnueabi g++-6-arm-linux-gnueabi libc6-dev-armel-cross \ - gcc-6-arm-linux-gnueabihf g++-6-arm-linux-gnueabihf libc6-dev-armhf-cross \ - gcc-6-aarch64-linux-gnu g++-6-aarch64-linux-gnu libc6-dev-arm64-cross \ - gcc-6-mips-linux-gnu g++-6-mips-linux-gnu libc6-dev-mips-cross \ - gcc-6-mipsel-linux-gnu g++-6-mipsel-linux-gnu libc6-dev-mipsel-cross \ - gcc-6-mips64-linux-gnuabi64 g++-6-mips64-linux-gnuabi64 libc6-dev-mips64-cross \ - gcc-6-mips64el-linux-gnuabi64 g++-6-mips64el-linux-gnuabi64 libc6-dev-mips64el-cross \ - gcc-6-multilib gcc-7-multilib g++-6-multilib gcc-mingw-w64 g++-mingw-w64 clang llvm-dev \ - libtool libxml2-dev uuid-dev libssl-dev swig openjdk-8-jdk pkg-config patch \ - make xz-utils cpio wget zip unzip p7zip git mercurial bzr texinfo help2man cmake --no-install-recommends - sudo ln -s /usr/include/asm-generic/ /usr/include/asm - - name: Setting ENV's run: | echo "::add-path::$(go env GOPATH)/bin" @@ -348,20 +324,96 @@ jobs: name: static-rice-box path: ./source - - name: Build Binaries + - name: Build Linux Binaries env: VERSION: ${{ env.VERSION }} COMMIT: $GITHUB_SHA - run: make build-folders build-linux build-linux-arm build-darwin build-win compress-folders + run: make build-linux build-linux-arm - name: Upload Builds uses: actions/upload-artifact@v1 with: - name: builds + name: builds-linux + path: ./build + + build-windows: + needs: compile + runs-on: ubuntu-latest + steps: + - uses: actions/setup-go@v2 + with: + go-version: '1.14.2' + - uses: actions/checkout@v2 + + - name: Setting ENV's + run: | + echo "::add-path::$(go env GOPATH)/bin" + echo "::add-path::/opt/hostedtoolcache/node/10.20.1/x64/bin" + echo ::set-env name=VERSION::$(cat version.txt) + shell: bash + + - name: Download Go mods + run: | + make test-deps + + - name: Download Compiled Frontend (rice-box.go) + uses: actions/download-artifact@v1 + with: + name: static-rice-box + path: ./source + + - name: Build Windows Binaries + env: + VERSION: ${{ env.VERSION }} + COMMIT: $GITHUB_SHA + run: make build-win + + - name: Upload Builds + uses: actions/upload-artifact@v1 + with: + name: builds-windows + path: ./build + + build-mac: + needs: compile + runs-on: ubuntu-latest + steps: + - uses: actions/setup-go@v2 + with: + go-version: '1.14.2' + - uses: actions/checkout@v2 + + - name: Setting ENV's + run: | + echo "::add-path::$(go env GOPATH)/bin" + echo "::add-path::/opt/hostedtoolcache/node/10.20.1/x64/bin" + echo ::set-env name=VERSION::$(cat version.txt) + shell: bash + + - name: Download Go mods + run: | + make test-deps + + - name: Download Compiled Frontend (rice-box.go) + uses: actions/download-artifact@v1 + with: + name: static-rice-box + path: ./source + + - name: Build MacOSX Binaries + env: + VERSION: ${{ env.VERSION }} + COMMIT: $GITHUB_SHA + run: make build-darwin + + - name: Upload Builds + uses: actions/upload-artifact@v1 + with: + name: builds-mac path: ./build upload-release: - needs: [test, test-postman-sqlite, test-postman-mysql, test-postman-postgres, build-binaries] + needs: [test, test-postman-sqlite, test-postman-mysql, test-postman-postgres, build-linux, build-windows, build-mac] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -373,10 +425,22 @@ jobs: echo ::set-env name=VERSION::$(cat version.txt) shell: bash - - name: Download Builds + - name: Download Linux Builds uses: actions/download-artifact@v1 with: - name: builds + name: builds-linux + path: ./builds + + - name: Download Windows Builds + uses: actions/download-artifact@v1 + with: + name: builds-windows + path: ./builds + + - name: Download MacOSX Builds + uses: actions/download-artifact@v1 + with: + name: builds-mac path: ./builds - name: Upload Releases diff --git a/Makefile b/Makefile index d9f3c8be..efa33e71 100644 --- a/Makefile +++ b/Makefile @@ -156,25 +156,29 @@ generate: build-all: clean compile build-folders build-linux build-linux-arm build-darwin build-win compress-folders build-win: - CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix GO111MODULE="on" GOOS=windows GOARCH=amd64 \ - go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o releases/statping-windows-amd64/statping.exe ./cmd - CGO_ENABLED=1 CC=i686-w64-mingw32-gcc-posix CXX=i686-w64-mingw32-g++-posix GO111MODULE="on" GOOS=windows GOARCH=386 \ - go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o releases/statping-windows-386/statping.exe ./cmd + xgo --go=1.14.2 --dest=build --targets="windows-6.0/386,windows-6.0/amd64" -out statping -ldflags="-s -w -extldflags -static -X main.VERSION=${VERSION}" --pkg cmd /home/runner/work/statping/statping +# CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix GO111MODULE="on" GOOS=windows GOARCH=amd64 \ +# go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o releases/statping-windows-amd64/statping.exe ./cmd +# CGO_ENABLED=1 CC=i686-w64-mingw32-gcc-posix CXX=i686-w64-mingw32-g++-posix GO111MODULE="on" GOOS=windows GOARCH=386 \ +# go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o releases/statping-windows-386/statping.exe ./cmd build-darwin: - GO111MODULE="on" GOOS=darwin GOARCH=amd64 go build -a -ldflags "-s -w -X main.VERSION=${VERSION}" -o releases/statping-darwin-amd64/statping --tags "darwin" ./cmd + xgo --go=1.14.2 --dest=build --targets="darwin/386,darwin/amd64" -out statping -ldflags="-s -w -X main.VERSION=${VERSION}" --pkg cmd /home/runner/work/statping/statping +# GO111MODULE="on" GOOS=darwin GOARCH=amd64 go build -a -ldflags "-s -w -X main.VERSION=${VERSION}" -o releases/statping-darwin-amd64/statping --tags "darwin" ./cmd build-linux: - CGO_ENABLED=1 GO111MODULE="on" GOOS=linux GOARCH=amd64 \ - go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o releases/statping-linux-amd64/statping --tags "linux" ./cmd - CGO_ENABLED=1 GO111MODULE="on" GOOS=linux GOARCH=386 \ - go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o releases/statping-linux-386/statping --tags "linux" ./cmd + xgo --go=1.14.2 --dest=build --targets="linux/386,linux/amd64" -out statping -ldflags="-s -w -extldflags -static -X main.VERSION=${VERSION}" --pkg cmd /home/runner/work/statping/statping +# CGO_ENABLED=1 GO111MODULE="on" GOOS=linux GOARCH=amd64 \ +# go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o releases/statping-linux-amd64/statping --tags "linux" ./cmd +# CGO_ENABLED=1 GO111MODULE="on" GOOS=linux GOARCH=386 \ +# go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o releases/statping-linux-386/statping --tags "linux" ./cmd build-linux-arm: - CGO_ENABLED=1 CC=arm-linux-gnueabihf-gcc-6 CXX=arm-linux-gnueabihf-g++-6 GO111MODULE="on" GOOS=linux GOARCH=arm GOARM=7 \ - go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o releases/statping-linux-arm/statping ./cmd - CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc-6 CXX=aarch64-linux-gnu-g++-6 GO111MODULE="on" GOOS=linux GOARCH=arm64 \ - go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o releases/statping-linux-arm64/statping ./cmd + xgo --go=1.14.2 --dest=build --targets="linux/arm-7,linux/arm64" -out statping -ldflags="-s -w -extldflags -static -X main.VERSION=${VERSION}" --pkg cmd /home/runner/work/statping/statping +# CGO_ENABLED=1 CC=arm-linux-gnueabihf-gcc-6 CXX=arm-linux-gnueabihf-g++-6 GO111MODULE="on" GOOS=linux GOARCH=arm GOARM=7 \ +# go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o releases/statping-linux-arm/statping ./cmd +# CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc-6 CXX=aarch64-linux-gnu-g++-6 GO111MODULE="on" GOOS=linux GOARCH=arm64 \ +# go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION}" -o releases/statping-linux-arm64/statping ./cmd build-folders: mkdir build || true