github actions build

pull/585/head
hunterlong 2020-05-11 18:05:46 -07:00
parent c99ad9cf02
commit 73ee6616cb
2 changed files with 69 additions and 178 deletions

View File

@ -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

View File

@ -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)