From 73ee6616cbe751b8a9c877dc431d41e449e798f1 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Mon, 11 May 2020 18:05:46 -0700 Subject: [PATCH] github actions build --- .github/workflows/master.yml | 194 ++++++++--------------------------- Makefile | 53 +++++----- 2 files changed, 69 insertions(+), 178 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index add9c6e1..0714c341 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -187,7 +187,7 @@ jobs: timeoutRequest: 15000 delayRequest: 1000 - build-mac: + build-binaries: needs: compile runs-on: ubuntu-latest steps: @@ -196,6 +196,30 @@ 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 \ + gcc-5-arm-linux-gnueabi g++-5-arm-linux-gnueabi libc6-dev-armel-cross linux-headers-gen \ + 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" @@ -205,10 +229,7 @@ jobs: - name: Download Go mods if: steps.golangcache.outputs.cache-hit != 'true' - run: | - go mod download - go mod verify - make test-deps + run: make test-deps - name: Download Compiled Frontend (rice-box.go) uses: actions/download-artifact@v1 @@ -220,108 +241,16 @@ jobs: env: VERSION: ${{ env.VERSION }} COMMIT: $GITHUB_SHA - run: make build-mac + run: make build-folders build-linux build-linux-arm build-darwin build-win compress-folders - - name: Upload MacOSX Builds + - name: Upload Builds uses: actions/upload-artifact@v1 with: - name: darwin-builds - path: ./build - - build-linux: - needs: compile - runs-on: ubuntu-latest - steps: - - uses: actions/setup-go@v2 - with: - go-version: '1.14.2' - - uses: actions/checkout@v2 - - - name: Install Libraries - run: | - sudo apt update - sudo apt install libc-dev gcc-multilib build-essential musl-dev gcc g++ -y - - - 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 - if: steps.golangcache.outputs.cache-hit != 'true' - run: | - go mod download - go mod verify - make test-deps - - - name: Download Compiled Frontend (rice-box.go) - uses: actions/download-artifact@v1 - with: - name: static-rice-box - path: ./source - - - name: Setup tmate session - uses: mxschmitt/action-tmate@v2 - - - name: Build Binaries - env: - VERSION: ${{ env.VERSION }} - COMMIT: $GITHUB_SHA - run: | - go env - make build-linux - - - name: Upload Linux Builds - uses: actions/upload-artifact@v1 - with: - name: linux-builds - 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 - if: steps.golangcache.outputs.cache-hit != 'true' - run: | - go mod download - go mod verify - make test-deps - - - name: Download Compiled Frontend (rice-box.go) - uses: actions/download-artifact@v1 - with: - name: static-rice-box - path: ./source - - - name: Build Binaries - env: - VERSION: ${{ env.VERSION }} - COMMIT: $GITHUB_SHA - run: make build-win - - - name: Upload Windows Builds - uses: actions/upload-artifact@v1 - with: - name: windows-builds + name: builds path: ./build upload-release: - needs: [test, test-postman, build-linux, build-mac, build-windows] + needs: [test, test-postman, build-binaries] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -333,26 +262,14 @@ jobs: echo ::set-env name=VERSION::$(cat version.txt) shell: bash - - name: Download Linux Builds + - name: Download Builds uses: actions/download-artifact@v1 with: - name: linux-builds - path: ./linux + name: builds + path: ./builds - - name: Download MacOSX Builds - uses: actions/download-artifact@v1 - with: - name: darwin-builds - path: ./darwin - - - name: Download Windows Builds - uses: actions/download-artifact@v1 - with: - name: windows-builds - path: ./windows - - - name: Upload Linux Release - id: upload-linux-asset + - name: Upload Releases + id: upload-assets uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -362,38 +279,15 @@ jobs: draft: false prerelease: false files: | - linux/statping-linux-386.tar.gz - linux/statping-linux-amd64.tar.gz - linux/statping-linux-arm.tar.gz - linux/statping-linux-arm64.tar.gz - - - name: Upload MaxOSX Release - id: upload-darwin-asset - uses: softprops/action-gh-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - VERSION: ${{ env.VERSION }} - with: - tag_name: v${{ env.VERSION }} - draft: false - prerelease: false - files: | - darwin/statping-darwin-386.tar.gz - darwin/statping-darwin-amd64.tar.gz - - - name: Upload Windows Release - id: upload-windows-asset - uses: softprops/action-gh-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - VERSION: ${{ env.VERSION }} - with: - tag_name: v${{ env.VERSION }} - draft: false - prerelease: false - files: | - windows/statping-windows-386.zip - windows/statping-windows-amd64.zip + builds/statping-linux-386.tar.gz + builds/statping-linux-amd64.tar.gz + builds/statping-linux-arm.tar.gz + builds/statping-linux-arm64.tar.gz + builds/statping-darwin-386.tar.gz + builds/statping-darwin-amd64.tar.gz + builds/statping-windows-386.zip + builds/statping-windows-amd64.zip + builds/statping-windows-arm.zip docker-release: needs: upload-release diff --git a/Makefile b/Makefile index 9142bf40..73f5d96b 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ VERSION=$(shell cat version.txt) SIGN_KEY=B76D61FAA6DB759466E83D9964B9C6AAE2D55278 BINARY_NAME=statping GOBUILD=go build -a -GOVERSION=1.14.2 +GOVERSION=1.14.0 XGO=xgo -go $(GOVERSION) --dest=build BUILDVERSION=-ldflags "-X main.VERSION=${VERSION} -X main.COMMIT=$(TRAVIS_COMMIT)" TRVIS_SECRET=O3/2KTOV8krv+yZ1EB/7D1RQRe6NdpFUEJNJkMS/ollYqmz3x2mCO7yIgIJKCKguLXZxjM6CxJcjlCrvUwibL+8BBp7xJe4XFIOrjkPvbbVPry4HkFZCf2GfcUK6o4AByQ+RYqsW2F17Fp9KLQ1rL3OT3eLTwCAGKx3tlY8y+an43zkmo5dN64V6sawx26fh6XTfww590ey+ltgQTjf8UPNup2wZmGvMo9Hwvh/bYR/47bR6PlBh6vhlKWyotKf2Fz1Bevbu0zc35pee5YlsrHR+oSF+/nNd/dOij34BhtqQikUR+zQVy9yty8SlmneVwD3yOENvlF+8roeKIXb6P6eZnSMHvelhWpAFTwDXq2N3d/FIgrQtLxsAFTI3nTHvZgs6OoTd6dA0wkhuIGLxaL3FOeztCdxP5J/CQ9GUcTvifh5ArGGwYxRxQU6rTgtebJcNtXFISP9CEUR6rwRtb6ax7h6f1SbjUGAdxt+r2LbEVEk4ZlwHvdJ2DtzJHT5DQtLrqq/CTUgJ8SJFMkrJMp/pPznKhzN4qvd8oQJXygSXX/gz92MvoX0xgpNeLsUdAn+PL9KketfR+QYosBz04d8k05E+aTqGaU7FUCHPTLwlOFvLD8Gbv0zsC/PWgSLXTBlcqLEz5PHwPVHTcVzspKj/IyYimXpCSbvu1YOIjyc= @@ -151,6 +151,24 @@ install-local: build generate: cd source && go 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 + +build-darwin: + CGO_ENABLED=1 GO111MODULE="on" GOOS=darwin GOARCH=amd64 go build -a -ldflags "-s -w -X main.VERSION=${VERSION}" -o releases/statping-darwin-amd64/statping --tags "libsqlite3 darwin" ./cmd + CGO_ENABLED=1 GO111MODULE="on" GOOS=darwin GOARCH=386 go build -a -ldflags "-s -w -X main.VERSION=${VERSION}" -o releases/statping-darwin-386/statping --tags "libsqlite3 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 "libsqlite3 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 "libsqlite3 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 + build-folders: mkdir build || true for os in windows darwin linux;\ @@ -171,32 +189,13 @@ compress-folders: tar -czf releases/statping-$$os-$$arch.tar.gz -C releases/statping-$$os-$$arch statping || true; \ done \ done + chmod +x releases/statping-windows-386/statping.exe || true + chmod +x releases/statping-windows-amd64/statping.exe || true + chmod +x releases/statping-windows-arm/statping.exe || true + zip -j releases/statping-windows-386.zip releases/statping-windows-386/statping.exe || true; \ + zip -j releases/statping-windows-amd64.zip releases/statping-windows-amd64/statping.exe || true; \ + zip -j releases/statping-windows-arm.zip releases/statping-windows-arm/statping.exe || true; \ find ./releases/ -name "*.tar.gz" -type f -size +1M -exec mv "{}" build/ \; - -build-linux: - xgo --go $(GOVERSION) --dest=build --out statping --ldflags="-s -w -extldflags -static -X main.VERSION=${VERSION}" --targets="linux/amd64,linux/386,linux/arm-7,linux/arm64" --pkg cmd . - for arch in 386 amd64 arm-7 arm64;\ - do \ - chmod +x build/statping-linux-$$arch && mv build/statping-linux-$$arch build/statping; \ - tar -czf build/statping-linux-$$arch.tar.gz -C build statping; \ - rm -f build/statping; \ - done - -build-mac: - xgo --go $(GOVERSION) --dest=build --out statping --ldflags="-s -w -extldflags -static -X main.VERSION=${VERSION}" --targets="darwin-10.11/386,darwin-10.11/amd64" --pkg cmd . - for arch in 386 amd64;\ - do \ - chmod +x build/statping-darwin-10.11-$$arch && mv build/statping-darwin-10.11-$$arch build/statping; \ - tar -czf build/statping-darwin-10.11-$$arch.tar.gz -C build statping; \ - rm -f build/statping; \ - done - -build-win: - xgo --go $(GOVERSION) --dest=build --out statping --ldflags="-s -w -extldflags -static -X main.VERSION=${VERSION}" --targets="windows-6.0/386,windows-6.0/amd64" --pkg cmd . - chmod +x build/statping-windows-6.0-amd64.exe - chmod +x build/statping-windows-6.0-386.exe - mv build/statping-windows-6.0-amd64.exe build/statping.exe && zip -j build/statping-windows-amd64.zip build/statping.exe && rm -f build/statping.exe; \ - mv build/statping-windows-6.0-386.exe build/statping.exe && zip -j build/statping-windows-386.zip build/statping.exe && rm -f build/statping.exe; \ find ./releases/ -name "*.zip" -type f -size +1M -exec mv "{}" build/ \; # remove files for a clean compile/build @@ -238,8 +237,6 @@ print_details: @echo \==== Monitoring and IDE ==== @echo \Grafana: http://localhost:3000 \(username: admin, password: admin\) -build-all: clean compile build-linux build-mac build-win - coverage: test-deps $(GOPATH)/bin/goveralls -coverprofile=coverage.out -service=travis -repotoken $(COVERALLS)