From 132863bb630cc4a517d4384e2827152481fae975 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Thu, 23 Jul 2020 11:17:22 -0700 Subject: [PATCH] snapcraft build, binary building libs, workflows --- .github/workflows/dev.yml | 40 ++++++++++++++++++++++++++++++++++++ .github/workflows/master.yml | 25 +++------------------- Makefile | 10 +++++++-- snapcraft.yaml | 29 +++++++++++++++++++++----- 4 files changed, 75 insertions(+), 29 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 75856bfe..6f3ec839 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -306,6 +306,46 @@ jobs: timeoutRequest: 30000 delayRequest: 600 + build-binaries: + needs: compile + runs-on: ubuntu-latest + steps: + - uses: actions/setup-go@v2 + with: + 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 \ + libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi \ + libncurses5-dev build-essential bison flex libssl-dev bc gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \ + gcc-arm-linux-gnueabi g++-arm-linux-gnueabi libsqlite3-dev gcc-mingw-w64 gcc-mingw-w64-x86-64 + + - name: Setting ENV's + run: | + echo "::add-path::$(go env GOPATH)/bin" + echo "::add-path::/opt/hostedtoolcache/node/12.18.2/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 Binaries + env: + VERSION: ${{ env.VERSION }} + COMMIT: $GITHUB_SHA + run: make build-folders build-linux build-linux-arm build-darwin build-win compress-folders + docker-release: needs: [test, test-postman-sqlite, test-postman-mysql, test-postman-postgres] runs-on: ubuntu-latest diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 017d78cf..490779eb 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -5,9 +5,6 @@ on: - master paths-ignore: - '**.md' - pull_request: - branches: - - master jobs: compile: @@ -317,25 +314,9 @@ jobs: 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 + libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi \ + libncurses5-dev build-essential bison flex libssl-dev bc gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \ + gcc-arm-linux-gnueabi g++-arm-linux-gnueabi libsqlite3-dev gcc-mingw-w64 gcc-mingw-w64-x86-64 - name: Setting ENV's run: | diff --git a/Makefile b/Makefile index 1204f7e6..989069c3 100644 --- a/Makefile +++ b/Makefile @@ -158,11 +158,16 @@ 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 \ + CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ 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 \ + CGO_ENABLED=1 CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ 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-deps: + apt install libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi \ + libncurses5-dev build-essential bison flex libssl-dev bc gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \ + gcc-arm-linux-gnueabi g++-arm-linux-gnueabi libsqlite3-dev gcc-mingw-w64 gcc-mingw-w64-x86-64 + 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 "netgo darwin" ./cmd @@ -353,6 +358,7 @@ buildx-base: multiarch docker buildx rm statping-base multiarch: + mkdir /tmp/.buildx-cache || true docker run --rm --privileged multiarch/qemu-user-static --reset -p yes .PHONY: all build certs multiarch build-all buildx-base buildx-dev buildx-latest build-alpine test-all test test-api docker frontend up down print_details lite sentry-release snapcraft build-linux build-mac build-win build-all postman diff --git a/snapcraft.yaml b/snapcraft.yaml index 150860d4..dbc0e6d6 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -12,16 +12,35 @@ description: > type: app confinement: strict grade: stable +architectures: + - build-on: amd64 + - build-on: armhf + - build-on: arm64 -parts: - statping: - plugin: dump - source: ./build/statping-linux.tar.gz +adopt-info: statping apps: statping: command: statping plugs: - home + - network - network-bind - - network \ No newline at end of file + +parts: + statping: + plugin: git + source: https://github.com/statping/statping.git + source-type: git + override-pull: | + snapcraftctl set-version "$(cat version.txt)" + override-build: | + export GOPATH=$PWD + cd src/github.com/statping/statping + GOOS=linux go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=$(cat version.txt)" -o statping --tags "netgo linux" ./cmd + build-snaps: + - go + build-packages: + - git + - sed +