Merge pull request #222 from jemand771/dev-gha-docker

Refactor GitHub actions + fix build
pull/1118/head
Willy 2023-05-11 21:15:21 +02:00 committed by GitHub
commit 006476dbd5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 298 additions and 1522 deletions

View File

@ -1,501 +0,0 @@
name: 2. Unstable Build, Test and Deploy
on:
push:
branches:
- unstable
paths-ignore:
- '**.md'
jobs:
frontend:
runs-on: [self-hosted, linux, aboutcher-hosted, rocky8]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
- uses: actions/setup-node@v1
with:
node-version: 16.14.0
- name: Set Version
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Install Global Dependencies
run: npm install -g yarn sass cross-env mjml
- name: Download Frontend Dependencies
working-directory: ./frontend
run: yarn
- name: Download Go mods
run: |
go mod download
go mod verify
make test-deps
- name: Build Frontend Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
MJML_APP: ${{ secrets.MJML_APP }}
MJML_PRIVATE: ${{ secrets.MJML_PRIVATE }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: make clean generate compile
- name: Upload Compiled Frontend (rice-box.go)
uses: actions/upload-artifact@v1
with:
name: static-rice-box
path: ./source
build:
needs: frontend
runs-on: ubuntu-latest
strategy:
matrix:
platform: [linux]
arch: [386, amd64, arm-7, arm-6, arm64]
include:
- platform: darwin
arch: arm64
- platform: darwin
arch: amd64
- platform: windows
arch: 386
- platform: windows
arch: amd64
steps:
- uses: actions/checkout@v2
- name: Download Compiled Frontend (rice-box.go)
uses: actions/download-artifact@v1
with:
name: static-rice-box
path: ./source
- name: Add GOBIN to PATH
run: |
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Set Linux Build Flags
if: matrix.platform == 'linux'
run: |
echo "BUILD_FLAGS=-extldflags -static" >> $GITHUB_ENV
echo "XGO_TAGS=netgo osusergo linux sqlite_omit_load_extension" >> $GITHUB_ENV
shell: bash
- name: Set MacOS (Darwin) Build Flags
if: matrix.platform == 'darwin'
run : |
echo "XGO_TAGS=netgo osusergo darwin sqlite_omit_load_extension" >> $GITHUB_ENV
shell: bash
- name: Set Windows Build Flags
if: matrix.platform == 'windows'
run: |
echo "BUILD_FLAGS=-extldflags -static -buildmode=exe" >> $GITHUB_ENV
echo "XGO_TAGS=netgo osusergo sqlite_omit_load_extension" >> $GITHUB_ENV
shell: bash
- name: Build ${{ matrix.platform }}/${{ matrix.arch }}
uses: crazy-max/ghaction-xgo@v1
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
with:
xgo_version: latest
go_version: 1.17.x
dest: build
prefix: statping
targets: ${{ matrix.platform }}/${{ matrix.arch }}
v: true
x: true
pkg: cmd
buildmode: pie
tags: ${{ env.XGO_TAGS }}
ldflags: -s -w -X main.VERSION=${{ env.VERSION }} -X main.COMMIT=${{ env.COMMIT }} ${{ env.BUILD_FLAGS }}
- name: Compress Linux Builds
if: matrix.platform == 'linux'
run: |
cd build
mv statping-linux-${{ matrix.arch }} statping
chmod +x statping
tar -czvf statping-linux-${{ matrix.arch }}.tar.gz statping
rm -rf statping
echo "compressed=statping-linux-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV
- name: Compress Windows Builds
if: matrix.platform == 'windows'
run: |
cd build
mv statping-windows-${{ matrix.arch }}.exe statping.exe
chmod +x statping.exe
zip statping-windows-${{ matrix.arch }}.zip statping.exe
rm -rf statping.exe
echo "compressed=statping-windows-${{ matrix.arch }}.zip" >> $GITHUB_ENV
- name: Compress MacOS (Darwin) Builds
if: matrix.platform == 'darwin'
run: |
cd build
mv statping-darwin-${{ matrix.arch }} statping
chmod +x statping
tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz *
rm -rf statping
echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV
- name: Upload Compiled Statping Binary
uses: actions/upload-artifact@v1
with:
name: statping-${{ matrix.platform }}-${{ matrix.arch }}
path: ./build
- name: Upload Releases
id: upload-assets
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VERSION: ${{ env.VERSION }}
with:
tag_name: dev-v${{ env.VERSION }}
draft: true
prerelease: true
files: build/${{ env.compressed }}
# test:
# needs: frontend
# runs-on: [self-hosted, linux, aboutcher-hosted]
# services:
# postgres:
# image: postgres:10.8
# env:
# POSTGRES_USER: root
# POSTGRES_PASSWORD: password123
# POSTGRES_DB: statping
# ports:
# - 5432:5432
# options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
# mysql:
# image: mysql:5.7
# env:
# MYSQL_ROOT_PASSWORD: password123
# MYSQL_DATABASE: statping
# ports:
# - 3306:3306
# options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
# steps:
# - uses: actions/checkout@v2
# - uses: actions/setup-go@v2
# with:
# go-version: 1.17.x
# - uses: actions/setup-node@v1
# with:
# node-version: 16.14.0
# - name: Install Global Dependencies
# run: npm install -g yarn sass newman cross-env wait-on @sentry/cli
# - name: Setting ENV's
# run: |
# echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
# echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
# echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
# shell: bash
# - name: Download Compiled Frontend (rice-box.go)
# uses: actions/download-artifact@v1
# with:
# name: static-rice-box
# path: ./source
# - name: Install Statping
# env:
# VERSION: ${{ env.VERSION }}
# COMMIT: ${{ github.sha }}
# run: |
# make build certs
# chmod +x statping
# mv statping $(go env GOPATH)/bin/
# - name: Go Tests
# run: |
# go get gotest.tools/gotestsum
# gotestsum --no-summary=skipped --format testname -- -covermode=count -coverprofile=coverage.out -p=1 ./...
# env:
# VERSION: ${{ env.VERSION }}
# COMMIT: ${{ github.sha }}
# DB_CONN: sqlite3
# STATPING_DIR: ${{ github.workspace }}
# API_SECRET: demopassword123
# DISABLE_LOGS: false
# ALLOW_REPORTS: true
# SAMPLE_DATA: true
# COVERALLS: ${{ secrets.COVERALLS }}
# DISCORD_URL: ${{ secrets.DISCORD_URL }}
# EMAIL_HOST: ${{ secrets.EMAIL_HOST }}
# EMAIL_USER: ${{ secrets.EMAIL_USER }}
# EMAIL_PASS: ${{ secrets.EMAIL_PASS }}
# EMAIL_OUTGOING: ${{ secrets.EMAIL_OUTGOING }}
# EMAIL_SEND_TO: ${{ secrets.EMAIL_SEND_TO }}
# EMAIL_PORT: ${{ secrets.EMAIL_PORT }}
# MOBILE_ID: ${{ secrets.MOBILE_ID }}
# MOBILE_NUMBER: ${{ secrets.MOBILE_NUMBER }}
# PUSHOVER_TOKEN: ${{ secrets.PUSHOVER_TOKEN }}
# PUSHOVER_API: ${{ secrets.PUSHOVER_API }}
# SLACK_URL: ${{ secrets.SLACK_URL }}
# TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
# TELEGRAM_CHANNEL: ${{ secrets.TELEGRAM_CHANNEL }}
# TWILIO_SID: ${{ secrets.TWILIO_SID }}
# TWILIO_SECRET: ${{ secrets.TWILIO_SECRET }}
# TWILIO_FROM: ${{ secrets.TWILIO_FROM }}
# TWILIO_TO: ${{ secrets.TWILIO_TO }}
# TEST_EMAIL: ${{ secrets.TEST_EMAIL }}
# GOTIFY_URL: ${{ secrets.GOTIFY_URL }}
# GOTIFY_TOKEN: ${{ secrets.GOTIFY_TOKEN }}
# SNS_TOKEN: ${{ secrets.SNS_TOKEN }}
# SNS_SECRET: ${{ secrets.SNS_SECRET }}
# SNS_REGION: ${{ secrets.SNS_REGION }}
# SNS_TOPIC: ${{ secrets.SNS_TOPIC }}
# - name: Coveralls Testing Coverage
# run: |
# go get github.com/mattn/goveralls
# goveralls -coverprofile=coverage.out -repotoken $COVERALLS
# env:
# COVERALLS: ${{ secrets.COVERALLS }}
test-postman-sqlite:
needs: frontend
runs-on: [self-hosted, linux, aboutcher-hosted, centos7]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
- name: Setting ENV's
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Download Compiled Frontend (rice-box.go)
uses: actions/download-artifact@v1
with:
name: static-rice-box
path: ./source
- name: Install Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
run: |
make build
chmod +x statping
mv statping $(go env GOPATH)/bin/
- name: Run Statping
run: |
API_SECRET=demosecret123 statping --port=8585 > /dev/null &
sleep 5
- name: Postman SQLite Tests
uses: matt-ball/newman-action@master
with:
apiKey: ${{ secrets.POSTMAN_API }}
collection: ./dev/postman.json
environment: ./dev/postman_env_sqlite.json
timeoutRequest: 30000
delayRequest: 600
test-postman-mysql:
needs: frontend
runs-on: ubuntu-latest
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: password123
MYSQL_DATABASE: statping
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
- name: Setting ENV's
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Download Compiled Frontend (rice-box.go)
uses: actions/download-artifact@v1
with:
name: static-rice-box
path: ./source
- name: Install Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
MJML_APP: ${{ secrets.MJML_APP }}
MJML_PRIVATE: ${{ secrets.MJML_PRIVATE }}
run: |
make build
chmod +x statping
mv statping $(go env GOPATH)/bin/
- name: Run Statping
run: |
API_SECRET=demosecret123 statping --port=8585 > /dev/null &
sleep 5
- name: Postman MySQL Tests
uses: matt-ball/newman-action@master
with:
apiKey: ${{ secrets.POSTMAN_API }}
collection: ./dev/postman.json
environment: ./dev/postman_env_mysql.json
timeoutRequest: 30000
delayRequest: 600
test-postman-postgres:
needs: frontend
runs-on: ubuntu-latest
services:
postgres:
image: postgres:10.8
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: password123
POSTGRES_DB: statping
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
- name: Setting ENV's
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Download Compiled Frontend (rice-box.go)
uses: actions/download-artifact@v1
with:
name: static-rice-box
path: ./source
- name: Install Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
run: |
make build
chmod +x statping
mv statping $(go env GOPATH)/bin/
- name: Run Statping
run: |
API_SECRET=demosecret123 statping --port=8585 > /dev/null &
sleep 5
- name: Postman Postgres Tests
uses: matt-ball/newman-action@master
with:
apiKey: ${{ secrets.POSTMAN_API }}
collection: ./dev/postman.json
environment: ./dev/postman_env_postgres.json
timeoutRequest: 30000
delayRequest: 600
docker-release:
needs: [build, test-postman-sqlite, test-postman-mysql, test-postman-postgres]
runs-on: [self-hosted, linux, aboutcher-hosted, rocky8]
steps:
- name: Checkout Statping Repo
uses: actions/checkout@v2
- name: Setting ENV's
run: echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
id: buildx
with:
install: true
- name: Cache Docker layers
uses: actions/cache@v2
id: buildx-docker-master
with:
path: /tmp/.buildx-cache
key: buildx-docker-master
restore-keys: |
buildx-docker-master
# - name: Docker Login
# env:
# DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
# DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
# run: echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin#
# - name: Docker Build :base
# run: make buildx-base
- name: Docker Login
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
run: echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
- name: Docker Build :dev
run: make buildx-dev
# sentry-release:
# needs: [test, test-postman-sqlite, test-postman-postgres, test-postman-mysql]
# runs-on: [self-hosted, linux, aboutcher-hosted]
# steps:
# - name: Checkout Statping Repo
# uses: actions/checkout@v2
#
# - name: Setup Sentry CLI
# uses: mathrix-education/setup-sentry-cli@master
# with:
# version: latest
# url: ${{ secrets.SENTRY_URL }}
# token: ${{ secrets.SENTRY_AUTH_TOKEN }}
# organization: statping
#
# - name: Setting ENV's
# run: echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
# shell: bash
#
# - name: Sentry Release
# run: make sentry-release

View File

@ -1,557 +0,0 @@
name: 3. Stable Build, Test and Deploy
on:
push:
branches:
- stable
paths-ignore:
- '**.md'
jobs:
frontend:
runs-on: [self-hosted, linux, aboutcher-hosted, rocky8]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
- uses: actions/setup-node@v1
with:
node-version: 16.14.0
- name: Set Version
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Install Global Dependencies
run: npm install -g yarn sass cross-env mjml
- name: Download Frontend Dependencies
working-directory: ./frontend
run: yarn
- name: Download Go mods
run: |
go mod download
go mod verify
make test-deps
- name: Build Frontend Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
MJML_APP: ${{ secrets.MJML_APP }}
MJML_PRIVATE: ${{ secrets.MJML_PRIVATE }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: make clean generate compile
- name: Upload Compiled Frontend (rice-box.go)
uses: actions/upload-artifact@v1
with:
name: static-rice-box
path: ./source
# - name: Configure AWS credentials for Asset uploads
# uses: aws-actions/configure-aws-credentials@v1
# with:
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# aws-region: us-west-2
#
# - name: Upload Static Assets to S3
# run: |
# tar -czvf source.tar.gz source/
# aws s3 cp source.tar.gz s3://assets.statping.com/commit/${{ github.sha }}/
# rm -rf source.tar.gz
build:
needs: [test-postman-sqlite, test-postman-mysql, test-postman-postgres]
runs-on: ubuntu-latest
strategy:
matrix:
platform: [linux]
arch: [386, amd64, arm-7, arm-6, arm64]
include:
- platform: darwin
arch: arm64
- platform: darwin
arch: amd64
- platform: windows
arch: 386
- platform: windows
arch: amd64
steps:
- uses: actions/checkout@v2
- name: Download Compiled Frontend (rice-box.go)
uses: actions/download-artifact@v1
with:
name: static-rice-box
path: ./source
# - name: Configure AWS credentials for Asset uploads
# uses: aws-actions/configure-aws-credentials@v1
# with:
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# aws-region: us-west-2
- name: Add GOBIN to PATH
run: |
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Set Linux Build Flags
if: matrix.platform == 'linux'
run: |
echo "BUILD_FLAGS=-extldflags -static" >> $GITHUB_ENV
echo "XGO_TAGS=netgo osusergo linux sqlite_omit_load_extension" >> $GITHUB_ENV
shell: bash
- name: Set MacOS (Darwin) Build Flags
if: matrix.platform == 'darwin'
run: echo "XGO_TAGS=netgo osusergo darwin sqlite_omit_load_extension" >> $GITHUB_ENV
shell: bash
- name: Set Windows Build Flags
if: matrix.platform == 'windows'
run: |
echo "BUILD_FLAGS=-extldflags -static -buildmode=exe" >> $GITHUB_ENV
echo "XGO_TAGS=netgo osusergo sqlite_omit_load_extension" >> $GITHUB_ENV
shell: bash
- name: Build ${{ matrix.platform }}/${{ matrix.arch }}
uses: crazy-max/ghaction-xgo@v1
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
with:
xgo_version: latest
go_version: 1.17.x
dest: build
prefix: statping
targets: ${{ matrix.platform }}/${{ matrix.arch }}
v: false
x: false
pkg: cmd
buildmode: pie
tags: ${{ env.XGO_TAGS }}
ldflags: -s -w -X main.VERSION=${{ env.VERSION }} -X main.COMMIT=${{ env.COMMIT }} ${{ env.BUILD_FLAGS }}
- name: Compress Linux Builds
if: matrix.platform == 'linux'
run: |
cd build
mv statping-linux-${{ matrix.arch }} statping
chmod +x statping
tar -czvf statping-linux-${{ matrix.arch }}.tar.gz statping
rm -rf statping
echo "compressed=statping-linux-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV
- name: Compress Windows Builds
if: matrix.platform == 'windows'
run: |
cd build
mv statping-windows-${{ matrix.arch }}.exe statping.exe
chmod +x statping.exe
zip statping-windows-${{ matrix.arch }}.zip statping.exe
rm -rf statping.exe
echo "compressed=statping-windows-${{ matrix.arch }}.zip" >> $GITHUB_ENV
- name: Compress MacOS (Darwin) Builds
if: matrix.platform == 'darwin'
run: |
cd build
mv statping-darwin-${{ matrix.arch }} statping
chmod +x statping
tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz statping
rm -rf statping
echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV
- name: Upload Compiled Statping Binary
uses: actions/upload-artifact@v1
with:
name: statping-${{ matrix.platform }}-${{ matrix.arch }}
path: ./build
- name: Upload Releases
id: upload-assets
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VERSION: ${{ env.VERSION }}
with:
tag_name: v${{ env.VERSION }}
draft: true
prerelease: true
files: build/${{ env.compressed }}
# - name: Upload Compiled Binaries to S3
# run: |
# aws s3 cp build/${{ env.compressed }} s3://assets.statping.com/commit/${{ github.sha }}/
# test:
# needs: frontend
# runs-on: ubuntu-latest
# services:
# postgres:
# image: postgres:10.8
# env:
# POSTGRES_USER: root
# POSTGRES_PASSWORD: password123
# POSTGRES_DB: statping
# ports:
# - 5432:5432
# options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
#
# mysql:
# image: mysql:5.7
# env:
# MYSQL_ROOT_PASSWORD: password123
# MYSQL_DATABASE: statping
# ports:
# - 3306:3306
# options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
#
# steps:
# - uses: actions/checkout@v2
# - uses: actions/setup-go@v2
# with:
# go-version: 1.17.x
# - uses: actions/setup-node@v1
# with:
# node-version: 16.14.0
#
# - name: Install Global Dependencies
# run: npm install -g yarn sass newman cross-env wait-on @sentry/cli
#
# - name: Setting ENV's
# run: |
# echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
# echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
# echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
# shell: bash
#
# - name: Download Compiled Frontend (rice-box.go)
# uses: actions/download-artifact@v1
# with:
# name: static-rice-box
# path: ./source
#
# - name: Install Statping
# env:
# VERSION: ${{ env.VERSION }}
# COMMIT: ${{ github.sha }}
# run: |
# make build certs
# chmod +x statping
# mv statping $(go env GOPATH)/bin/
#
# - name: Go Tests
# run: |
# go get gotest.tools/gotestsum
# gotestsum --no-summary=skipped --format testname -- -covermode=count -coverprofile=coverage.out -p=1 ./...
# env:
# VERSION: ${{ env.VERSION }}
# COMMIT: ${{ github.sha }}
# DB_CONN: sqlite3
# STATPING_DIR: ${{ github.workspace }}
# API_SECRET: demopassword123
# DISABLE_LOGS: false
# ALLOW_REPORTS: true
# SAMPLE_DATA: true
# COVERALLS: ${{ secrets.COVERALLS }}
# DISCORD_URL: ${{ secrets.DISCORD_URL }}
# EMAIL_HOST: ${{ secrets.EMAIL_HOST }}
# EMAIL_USER: ${{ secrets.EMAIL_USER }}
# EMAIL_PASS: ${{ secrets.EMAIL_PASS }}
# EMAIL_OUTGOING: ${{ secrets.EMAIL_OUTGOING }}
# EMAIL_SEND_TO: ${{ secrets.EMAIL_SEND_TO }}
# EMAIL_PORT: ${{ secrets.EMAIL_PORT }}
# MOBILE_ID: ${{ secrets.MOBILE_ID }}
# MOBILE_NUMBER: ${{ secrets.MOBILE_NUMBER }}
# PUSHOVER_TOKEN: ${{ secrets.PUSHOVER_TOKEN }}
# PUSHOVER_API: ${{ secrets.PUSHOVER_API }}
# SLACK_URL: ${{ secrets.SLACK_URL }}
# TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
# TELEGRAM_CHANNEL: ${{ secrets.TELEGRAM_CHANNEL }}
# TWILIO_SID: ${{ secrets.TWILIO_SID }}
# TWILIO_SECRET: ${{ secrets.TWILIO_SECRET }}
# TWILIO_FROM: ${{ secrets.TWILIO_FROM }}
# TWILIO_TO: ${{ secrets.TWILIO_TO }}
# TEST_EMAIL: ${{ secrets.TEST_EMAIL }}
# GOTIFY_URL: ${{ secrets.GOTIFY_URL }}
# GOTIFY_TOKEN: ${{ secrets.GOTIFY_TOKEN }}
# SNS_TOKEN: ${{ secrets.SNS_TOKEN }}
# SNS_SECRET: ${{ secrets.SNS_SECRET }}
# SNS_REGION: ${{ secrets.SNS_REGION }}
# SNS_TOPIC: ${{ secrets.SNS_TOPIC }}
#
# - name: Coveralls Testing Coverage
# run: |
# go get github.com/mattn/goveralls
# goveralls -coverprofile=coverage.out -repotoken $COVERALLS
# env:
# COVERALLS: ${{ secrets.COVERALLS }}
test-postman-sqlite:
needs: frontend
runs-on: [self-hosted, linux, aboutcher-hosted, centos7]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
- name: Setting ENV's
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Download Compiled Frontend (rice-box.go)
uses: actions/download-artifact@v1
with:
name: static-rice-box
path: ./source
- name: Install Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
run: |
make build
chmod +x statping
mv statping $(go env GOPATH)/bin/
- name: Run Statping
run: |
API_SECRET=demosecret123 statping --port=8585 > /dev/null &
sleep 5
- name: Postman SQLite Tests
uses: matt-ball/newman-action@master
with:
apiKey: ${{ secrets.POSTMAN_API }}
collection: ./dev/postman.json
environment: ./dev/postman_env_sqlite.json
timeoutRequest: 30000
delayRequest: 600
test-postman-mysql:
needs: frontend
runs-on: ubuntu-latest
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: password123
MYSQL_DATABASE: statping
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
- name: Setting ENV's
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Download Compiled Frontend (rice-box.go)
uses: actions/download-artifact@v1
with:
name: static-rice-box
path: ./source
- name: Install Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
MJML_APP: ${{ secrets.MJML_APP }}
MJML_PRIVATE: ${{ secrets.MJML_PRIVATE }}
run: |
make build
chmod +x statping
mv statping $(go env GOPATH)/bin/
- name: Run Statping
run: |
API_SECRET=demosecret123 statping --port=8585 > /dev/null &
sleep 5
- name: Postman MySQL Tests
uses: matt-ball/newman-action@master
with:
apiKey: ${{ secrets.POSTMAN_API }}
collection: ./dev/postman.json
environment: ./dev/postman_env_mysql.json
timeoutRequest: 30000
delayRequest: 600
test-postman-postgres:
needs: frontend
runs-on: ubuntu-latest
services:
postgres:
image: postgres:10.8
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: password123
POSTGRES_DB: statping
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
- name: Setting ENV's
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Download Compiled Frontend (rice-box.go)
uses: actions/download-artifact@v1
with:
name: static-rice-box
path: ./source
- name: Install Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
run: |
make build
chmod +x statping
mv statping $(go env GOPATH)/bin/
- name: Run Statping
run: |
API_SECRET=demosecret123 statping --port=8585 > /dev/null &
sleep 5
- name: Postman Postgres Tests
uses: matt-ball/newman-action@master
with:
apiKey: ${{ secrets.POSTMAN_API }}
collection: ./dev/postman.json
environment: ./dev/postman_env_postgres.json
timeoutRequest: 30000
delayRequest: 600
docker-release:
needs: build
runs-on: [self-hosted, linux, aboutcher-hosted, rocky8]
steps:
- name: Checkout Statping Repo
uses: actions/checkout@v2
- name: Setting ENV's
run: echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
id: buildx
with:
install: true
- name: Cache Docker layers
uses: actions/cache@v2
id: buildx-docker
with:
path: /tmp/.buildx-cache
key: buildx-docker
restore-keys: |
buildx-docker
# - name: Docker Login
# env:
# DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
# DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
# run: echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
#
# - name: Docker Build :base
# run: make buildx-base
- name: Docker Login
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
run: echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
- name: Docker Build :lastest
run: make buildx-latest
# sentry-release:
# needs: docker-release
# runs-on: ubuntu-latest
# steps:
# - name: Checkout Statping Repo
# uses: actions/checkout@v2
#
# - name: Setup Sentry CLI
# uses: mathrix-education/setup-sentry-cli@master
# with:
# version: latest
# url: ${{ secrets.SENTRY_URL }}
# token: ${{ secrets.SENTRY_AUTH_TOKEN }}
# organization: statping
#
# - name: Setting ENV's
# run: echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
# shell: bash
#
# - name: Sentry Release
# run: make sentry-release
# homebrew-release:
# needs: docker-release
# runs-on: ubuntu-latest
# steps:
# - name: Checkout Statping Repo
# uses: actions/checkout@v2
#
# - name: Setting ENV's
# run: echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
# shell: bash
#
# - name: Update Homebrew Package
# env:
# VERSION: ${{ env.VERSION }}
# TRAVIS_API: ${{ secrets.TRAVIS_API }}
# run: make publish-homebrew
#
# slack-update:
# needs: docker-release
# runs-on: ubuntu-latest
# steps:
# - name: Checkout Statping Repo
# uses: actions/checkout@v2
#
# - name: Setting ENV's
# run: echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
# shell: bash
#
# - name: Slack Notification
# uses: rtCamp/action-slack-notify@master
# env:
# SLACK_WEBHOOK: ${{ secrets.SLACK_URL }}
# SLACK_CHANNEL: dev
# SLACK_USERNAME: StatpingDev

View File

@ -1,53 +1,97 @@
name: 1. Development Build and Testing
name: Statping build
on:
push:
branches:
- dev
paths-ignore:
- '**.md'
- "**.md"
pull_request:
paths-ignore:
- "**.md"
jobs:
data:
# this job collects general variables and inputs for later use.
# not all of them might be needed but having them in a central place is more helpful than 100% efficiency.
# also, the name is intentionally short to make later references shorter.
runs-on: ubuntu-latest
outputs:
is_release: ${{ steps.statping-versions.outputs.is_release }}
is_prerelease: ${{ steps.statping-versions.outputs.is_prerelease }}
# this will be v1.2.3 for on-tag builds and v1.2.3-numberofcommits-sha for off-tag builds
version: ${{ steps.statping-versions.outputs.version }}
go_version: ${{ steps.tool-versions.outputs.go_version }}
node_version: ${{ steps.tool-versions.outputs.node_version }}
steps:
- uses: actions/checkout@v3
with:
# check on https://github.com/actions/checkout/pull/579 occasionally if actions/checkout can do this natively yet
fetch-depth: 0
- name: get statping version information
id: statping-versions
run: |
STABLE_TAG=$(git describe --tags --exclude '*-*')
BETA_TAG=$(git describe --tags --match '*-*')
echo "stable_tag=$STABLE_TAG" >> $GITHUB_OUTPUT
echo "beta_tag=$BETA_TAG" >> $GITHUB_OUTPUT
if [ "${{ github.ref }}" = "refs/tags/$STABLE_TAG" ]; then
echo "is_release=true" >> $GITHUB_OUTPUT
echo "is_prerelease=false" >> $GITHUB_OUTPUT
echo "version=$STABLE_TAG" >> $GITHUB_OUTPUT
elif [ "${{ github.ref }}" = "refs/tags/$BETA_TAG" ]; then
echo "is_release=true" >> $GITHUB_OUTPUT
echo "is_prerelease=true" >> $GITHUB_OUTPUT
echo "version=$BETA_TAG" >> $GITHUB_OUTPUT
else
echo "is_release=false" >> $GITHUB_OUTPUT
echo "is_prerelease=false" >> $GITHUB_OUTPUT
echo "version=$STABLE_TAG" >> $GITHUB_OUTPUT
fi
shell: bash
- name: get go/node version information
id: tool-versions
run: |
echo "go_version=1.20.x" >> $GITHUB_OUTPUT
echo "node_version=16.14.0" >> $GITHUB_OUTPUT
shell: bash
- name: show data results
run: |
echo == tools versions ==
echo go_version: ${{ steps.tool-versions.outputs.go_version }}
echo node_version: ${{ steps.tool-versions.outputs.node_version }}
echo == matched tags ==
echo stable_tag: ${{ steps.versions.outputs.stable_tag }}
echo beta_tag: ${{ steps.versions.outputs.beta_tag }}
echo == release information ==
echo is_release: ${{ steps.versions.outputs.is_release }}
echo is_prerelease: ${{ steps.versions.outputs.is_prerelease }}
echo == statping version ==
echo version: ${{ steps.versions.outputs.version }}
frontend:
runs-on: ubuntu-latest
needs: data
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
go-version: ${{ needs.data.outputs.go_version }}
- name: Install rice
run: go install github.com/GeertJohan/go.rice/rice@latest
- uses: actions/setup-node@v1
with:
node-version: 16.14.0
- name: Set Version
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Install Global Dependencies
run: npm install -g yarn sass cross-env mjml
node-version: ${{ needs.data.outputs.node_version }}
- name: Download Frontend Dependencies
working-directory: ./frontend
run: yarn
- name: Download Go mods
run: |
go mod download
go mod verify
make test-deps
- name: Build Frontend Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
MJML_APP: ${{ secrets.MJML_APP }}
MJML_PRIVATE: ${{ secrets.MJML_PRIVATE }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: make clean generate compile
working-directory: ./frontend
run: yarn build
- name: Copy built frontend
run: |
cp -r frontend/dist source/
cp -r frontend/src/assets/scss source/dist/
cp frontend/public/robots.txt source/dist/
- name: Build rice-box.go
run: rice embed-go
working-directory: source
- name: Upload Compiled Frontend (rice-box.go)
uses: actions/upload-artifact@v1
with:
@ -55,21 +99,22 @@ jobs:
path: ./source
build:
needs: frontend
needs: [ data, frontend ]
runs-on: ubuntu-latest
strategy:
matrix:
platform: [linux]
arch: [386, amd64, arm-7, arm-6, arm64]
platform: [ linux ]
arch: [ 386, amd64, arm-7, arm-6, arm64 ]
include:
# TODO darwin/386 is broken, ignore for now
# - platform: darwin
# arch: 386
- platform: darwin
arch: arm64
- platform: darwin
arch: amd64
- platform: windows
arch: amd64
- platform: windows
arch: 386
- platform: windows
arch: amd64
steps:
- uses: actions/checkout@v2
@ -80,11 +125,6 @@ jobs:
name: static-rice-box
path: ./source
- name: Add GOBIN to PATH
run: |
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Set Linux Build Flags
if: matrix.platform == 'linux'
run: |
@ -92,9 +132,9 @@ jobs:
echo "XGO_TAGS=netgo osusergo linux sqlite_omit_load_extension" >> $GITHUB_ENV
shell: bash
- name: Set MacOS (Darwin) Build Flags
- name: Set Darwin Build Flags
if: matrix.platform == 'darwin'
run : |
run: |
echo "XGO_TAGS=netgo osusergo darwin sqlite_omit_load_extension" >> $GITHUB_ENV
shell: bash
@ -106,22 +146,22 @@ jobs:
shell: bash
- name: Build ${{ matrix.platform }}/${{ matrix.arch }}
uses: crazy-max/ghaction-xgo@v1
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
uses: crazy-max/ghaction-xgo@v2
with:
xgo_version: latest
go_version: 1.17.x
go_version: ${{ needs.data.outputs.go_version }}
dest: build
prefix: statping
targets: ${{ matrix.platform }}/${{ matrix.arch }}
# v and x enable additional debug output
v: true
x: true
pkg: cmd
buildmode: pie
tags: ${{ env.XGO_TAGS }}
ldflags: -s -w -X main.VERSION=${{ env.VERSION }} -X main.COMMIT=${{ env.COMMIT }} ${{ env.BUILD_FLAGS }}
ldflags: -s -w -X main.VERSION=${{ needs.data.outputs.version }} -X main.COMMIT=${{ github.sha }} ${{ env.BUILD_FLAGS }}
- run: ls -la build
- name: Compress Linux Builds
if: matrix.platform == 'linux'
@ -143,24 +183,28 @@ jobs:
rm -rf statping.exe
echo "compressed=statping-windows-${{ matrix.arch }}.zip" >> $GITHUB_ENV
- name: Compress MacOS (Darwin) Builds
- name: Compress Darwin Builds
if: matrix.platform == 'darwin'
run: |
cd build
mv statping-darwin-${{ matrix.arch }} statping
chmod +x statping
tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz *
tar -czvf statping-darwin-${{ matrix.arch }}.tar.gz statping
rm -rf statping
echo "compressed=statping-darwin-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV
- name: Upload Compiled Statping Binary
uses: actions/upload-artifact@v1
with:
name: statping-${{ matrix.platform }}-${{ matrix.arch }}
name: binaries
path: ./build
# TODO refactor (and fix) tests
test:
needs: frontend
needs: [ data, frontend ]
# temporarily disabled
if: "false"
runs-on: ubuntu-latest
services:
postgres:
@ -186,10 +230,10 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
go-version: ${{ needs.data.outputs.go_version }}
- uses: actions/setup-node@v1
with:
node-version: 16.14.0
node-version: ${{ needs.data.outputs.node_version }}
- name: Install Global Dependencies
run: npm install -g yarn sass newman cross-env wait-on @sentry/cli
@ -197,8 +241,7 @@ jobs:
- name: Setting ENV's
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
echo "/opt/hostedtoolcache/node/${{ needs.data.outputs.node_version }}/x64/bin" >> $GITHUB_PATH
shell: bash
- name: Download Compiled Frontend (rice-box.go)
@ -208,9 +251,6 @@ jobs:
path: ./source
- name: Install Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
run: |
make build certs
chmod +x statping
@ -221,7 +261,7 @@ jobs:
go get gotest.tools/gotestsum
gotestsum --no-summary=skipped --format testname -- -covermode=count -coverprofile=coverage.out -p=1 ./...
env:
VERSION: ${{ env.VERSION }}
VERSION: ${{ needs.data.outputs.version }}
COMMIT: ${{ github.sha }}
DB_CONN: sqlite3
STATPING_DIR: ${{ github.workspace }}
@ -241,7 +281,7 @@ jobs:
MOBILE_NUMBER: ${{ secrets.MOBILE_NUMBER }}
PUSHOVER_TOKEN: ${{ secrets.PUSHOVER_TOKEN }}
PUSHOVER_API: ${{ secrets.PUSHOVER_API }}
SLACK_URL: https://hooks.slack.com/services/TTJ1B90DP/RENU20O9M/9uI823SUnYBuGcxYlpSimD6H
SLACK_URL: ${{ secrets.SLACK_URL }}
TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
TELEGRAM_CHANNEL: ${{ secrets.TELEGRAM_CHANNEL }}
TWILIO_SID: ${{ secrets.TWILIO_SID }}
@ -256,27 +296,26 @@ jobs:
SNS_REGION: ${{ secrets.SNS_REGION }}
SNS_TOPIC: ${{ secrets.SNS_TOPIC }}
# - name: Coveralls Testing Coverage
# run: |
# go get github.com/mattn/goveralls
# goveralls -coverprofile=coverage.out -repotoken $COVERALLS
# env:
# COVERALLS: ${{ secrets.COVERALLS }}
- name: Coveralls Testing Coverage
run: |
go get github.com/mattn/goveralls
goveralls -coverprofile=coverage.out -repotoken $COVERALLS
env:
COVERALLS: ${{ secrets.COVERALLS }}
test-postman-sqlite:
needs: frontend
needs: [ data, frontend ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
go-version: ${{ needs.data.outputs.go_version }}
- name: Setting ENV's
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
echo "/opt/hostedtoolcache/node/${{ needs.data.outputs.node_version }}/x64/bin" >> $GITHUB_PATH
shell: bash
- name: Download Compiled Frontend (rice-box.go)
@ -286,9 +325,6 @@ jobs:
path: ./source
- name: Install Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
run: |
make build
chmod +x statping
@ -307,7 +343,7 @@ jobs:
delayRequest: 600
test-postman-mysql:
needs: frontend
needs: [ data, frontend ]
runs-on: ubuntu-latest
services:
@ -324,13 +360,12 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
go-version: ${{ needs.data.outputs.go_version }}
- name: Setting ENV's
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
echo "/opt/hostedtoolcache/node/${{ needs.data.outputs.node_version }}/x64/bin" >> $GITHUB_PATH
shell: bash
- name: Download Compiled Frontend (rice-box.go)
@ -340,11 +375,6 @@ jobs:
path: ./source
- name: Install Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
MJML_APP: ${{ secrets.MJML_APP }}
MJML_PRIVATE: ${{ secrets.MJML_PRIVATE }}
run: |
make build
chmod +x statping
@ -363,7 +393,7 @@ jobs:
delayRequest: 600
test-postman-postgres:
needs: frontend
needs: [ data, frontend ]
runs-on: ubuntu-latest
services:
@ -381,13 +411,12 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.17.x
go-version: ${{ needs.data.outputs.go_version }}
- name: Setting ENV's
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
echo "/opt/hostedtoolcache/node/${{ needs.data.outputs.node_version }}/x64/bin" >> $GITHUB_PATH
shell: bash
- name: Download Compiled Frontend (rice-box.go)
@ -397,9 +426,6 @@ jobs:
path: ./source
- name: Install Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
run: |
make build
chmod +x statping
@ -416,3 +442,57 @@ jobs:
environment: ./dev/postman_env_postgres.json
timeoutRequest: 30000
delayRequest: 600
docker-build:
needs: [ data ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: jemand771/docker-build-action@main
with:
GITHUB_TOKEN: ${{ github.token }}
push_strategy: artifact
platforms: linux/amd64
args: |
COMMIT=${{ github.sha }}
VERSION=${{ needs.data.outputs.version }}
BUILDKIT_INLINE_CACHE=true
# all other release jobs should be based on this
release:
# only run release jobs on push to stable/unstable.
if: ${{ success() && fromJSON(needs.data.outputs.is_release) }}
needs: [ data, build, test-postman-sqlite, test-postman-mysql, test-postman-postgres, docker-build ]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
with:
name: binaries
path: binaries
- uses: actions/download-artifact@v3
with:
name: docker-images
path: images
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}
- uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifactErrorsFailBuild: true
artifacts: binaries/*
draft: true
generateReleaseNotes: true
omitBodyDuringUpdate: true
prerelease: ${{ fromJSON(needs.data.outputs.is_prerelease) && 'true' || 'false'}}
updateOnlyUnreleased: true
- name: import images
run: for file in images/*.tar; do docker load < $file; done
- run: docker image ls
- name: push all images
run: for image in $(cat images/docker-images.txt); do echo pushing $image; docker push $image; done
# TODO bring back dockerhub image

View File

@ -1,173 +0,0 @@
name: Push Request Testing
on:
push:
branches:
- '*' # matches every branch
- '*/*' # matches every branch containing a single '/'
- '!master' # excludes master
- '!dev' # excludes dev
pull_request:
branches:
- '*' # matches every branch
- '*/*' # matches every branch containing a single '/'
- '!master' # excludes master
- '!dev' # excludes dev
jobs:
compile:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-go@v2
with:
go-version: '1.17.8'
- uses: actions/setup-node@v1
with:
node-version: '16.14.0'
- uses: actions/checkout@v2
- name: Add GOBIN to PATH
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Install Global Dependencies
run: npm install -g yarn sass cross-env
- name: Download Frontend Dependencies
if: steps.nodecache.outputs.cache-hit != 'true'
working-directory: ./frontend
run: yarn
- name: Download Go mods
if: steps.golangcache.outputs.cache-hit != 'true'
run: |
go mod download
go mod verify
make test-deps
- name: Build Frontend Statping
run: make clean compile
- name: Upload Compiled Frontend (rice-box.go)
uses: actions/upload-artifact@v1
with:
name: static-rice-box
path: ./source
pr-test:
needs: compile
runs-on: ubuntu-latest
services:
postgres:
image: postgres:10.8
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: password123
POSTGRES_DB: statping
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: password123
MYSQL_DATABASE: statping
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- uses: actions/setup-go@v2
with:
go-version: 1.15.x
- uses: actions/setup-node@v1
with:
node-version: 16.14.0
- uses: actions/checkout@v2
- name: Install Global Dependencies
run: |
go get gotest.tools/gotestsum
npm install -g yarn sass newman cross-env wait-on @sentry/cli
- name: Setting ENV's
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Download Compiled Frontend (rice-box.go)
uses: actions/download-artifact@v1
with:
name: static-rice-box
path: ./source
- name: Install Statping
env:
VERSION: ${{ env.VERSION }}
run: |
make build certs
chmod +x statping
mv statping $(go env GOPATH)/bin/
- name: Go Tests
run: |
SASS=`which sass` gotestsum --no-summary=skipped --format testname -- -covermode=count -coverprofile=coverage.out -p=1 ./...
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
DB_CONN: sqlite3
STATPING_DIR: ${{ github.workspace }}
API_SECRET: demopassword123
DISABLE_LOGS: false
ALLOW_REPORTS: true
PUSH_REQUEST: true
pr-test-postman:
needs: compile
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.15.x
- name: Setting ENV's
run: |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
echo "/opt/hostedtoolcache/node/16.14.0/x64/bin" >> $GITHUB_PATH
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
shell: bash
- name: Download Compiled Frontend (rice-box.go)
uses: actions/download-artifact@v1
with:
name: static-rice-box
path: ./source
- name: Install Statping
env:
VERSION: ${{ env.VERSION }}
COMMIT: ${{ github.sha }}
run: |
make build
chmod +x statping
mv statping $(go env GOPATH)/bin/
- name: Run Statping
run: |
API_SECRET=demosecret123 statping --port=8080 > /dev/null &
sleep 3
- name: Postman Tests
uses: matt-ball/newman-action@master
with:
collection: ./dev/postman.json
environment: ./dev/postman_environment_sqlite.json
timeoutRequest: 15000
delayRequest: 500

4
.gitmodules vendored Normal file
View File

@ -0,0 +1,4 @@
[submodule "source/statping-ng.wiki"]
path = source/statping-ng.wiki
# TODO should this be a relative path? (would require wiki fork for statping forks)
url = https://github.com/statping-ng/statping-ng.wiki.git

View File

@ -10,7 +10,7 @@ RUN yarn build && yarn cache clean
# Statping Golang BACKEND building from source
# Creates "/go/bin/statping" and "/usr/local/bin/sass" for copying
FROM golang:1.17-alpine AS backend
FROM golang:1.20-alpine AS backend
LABEL maintainer="Statping-NG (https://github.com/statping-ng)"
ARG VERSION
ARG COMMIT
@ -21,7 +21,7 @@ RUN apk add --update --no-cache libstdc++ gcc g++ make git autoconf \
update-ca-certificates
WORKDIR /root
RUN git clone https://github.com/sass/sassc.git
RUN git clone --depth 1 --branch 3.6.2 https://github.com/sass/sassc.git
RUN . sassc/script/bootstrap && make -C sassc -j4
# sassc binary: /root/sassc/bin/sassc
@ -30,15 +30,17 @@ ADD go.mod go.sum ./
RUN go mod download
ENV GO111MODULE on
ENV CGO_ENABLED 1
RUN go get github.com/stretchr/testify/assert && \
go get github.com/stretchr/testify/require && \
go get github.com/GeertJohan/go.rice/rice && \
go get github.com/cortesi/modd/cmd/modd && \
go get github.com/crazy-max/xgo
COPY . .
COPY cmd ./cmd
COPY database ./database
COPY handlers ./handlers
COPY notifiers ./notifiers
COPY source ./source
COPY types ./types
COPY utils ./utils
COPY --from=frontend /statping/dist/ ./source/dist/
RUN make clean generate embed
RUN go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION} -X main.COMMIT=${COMMIT}" -o statping --tags "netgo linux" ./cmd
RUN go install github.com/GeertJohan/go.rice/rice@latest
RUN cd source && rice embed-go
RUN go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=$VERSION -X main.COMMIT=$COMMIT" -o statping --tags "netgo linux" ./cmd
RUN chmod a+x statping && mv statping /go/bin/statping
# /go/bin/statping - statping binary
# /root/sassc/bin/sassc - sass binary

View File

@ -1,45 +0,0 @@
FROM node:16.14.0-alpine AS frontend
LABEL maintainer="Statping-ng (https://github.com/statping-ng)"
ARG BUILDPLATFORM
WORKDIR /statping
COPY ./frontend/package.json .
COPY ./frontend/yarn.lock .
RUN yarn install --pure-lockfile --network-timeout 1000000
COPY ./frontend .
RUN yarn build && yarn cache clean
# Statping Golang BACKEND building from source
# Creates "/go/bin/statping" and "/usr/local/bin/sass" for copying
FROM golang:1.17-alpine AS backend
LABEL maintainer="Statping-NG (https://github.com/statping-ng)"
ARG VERSION
ARG COMMIT
ARG BUILDPLATFORM
ARG TARGETARCH
RUN apk add --update --no-cache libstdc++ gcc g++ make git autoconf \
libtool ca-certificates linux-headers wget curl jq && \
update-ca-certificates
WORKDIR /root
RUN git clone https://github.com/sass/sassc.git
RUN . sassc/script/bootstrap && make -C sassc -j4
# sassc binary: /root/sassc/bin/sassc
WORKDIR /go/src/github.com/statping-ng/statping-ng
ADD go.mod go.sum ./
RUN go mod download
ENV GO111MODULE on
ENV CGO_ENABLED 1
RUN go get github.com/stretchr/testify/assert && \
go get github.com/stretchr/testify/require && \
go get github.com/GeertJohan/go.rice/rice && \
go get github.com/cortesi/modd/cmd/modd && \
go get github.com/crazy-max/xgo
COPY . .
COPY --from=frontend /statping/dist/ ./source/dist/
RUN make clean generate embed
RUN go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION} -X main.COMMIT=${COMMIT}" -o statping --tags "netgo linux" ./cmd
RUN chmod a+x statping && mv statping /go/bin/statping
# /go/bin/statping - statping binary
# /root/sassc/bin/sassc - sass binary
# /statping - Vue frontend (from frontend)

View File

@ -19,7 +19,7 @@ import (
var (
// VERSION stores the current version of Statping
VERSION string
VERSION string = "dev"
// COMMIT stores the git commit hash for this version of Statping
COMMIT string
log = utils.Log.WithField("type", "cmd")
@ -83,7 +83,7 @@ func start() {
log.Errorf("Statping Log Error: %v\n", err)
}
log.Info(fmt.Sprintf("Starting Statping v%s", VERSION))
log.Info(fmt.Sprintf("Starting Statping %s", VERSION))
utils.Params.Set("SERVER_IP", ipAddress)
utils.Params.Set("SERVER_PORT", port)

42
dev/maintainer-docs.md vendored Normal file
View File

@ -0,0 +1,42 @@
# Statping-ng maintainer documentation
This document will briefly outline our workflows and give instructions on some common tasks.
Feel free to expand this; at the moment it's pretty empty here.
## GitHub actions
Binaries and docker images get built automatically by GitHub actions.
If the builds succeed, tests are run to ensure nothing is completely broken.
Build artifacts can be downloaded from the actions tab on GitHub.
This happens on every push to this repo and on every pull request update.
## Releases
We used to have a model of "stable" and "unstable" releases, which would get triggered by pushing to a respective release branch.
The new system tries to address some of the issues with the old system and simplifies the workflow definitions.
Incoming pull requests are merged into the `main` (default) branch.
Once you feel like we have enough new changes to justify a release, a tag can be created.
This is **not** a GitHub release and sadly can't be done from github.com directly.
Either
* create a stable release ready for general usage as `v{major}.{minor}.{patch}`, e.g. `v1.2.3`
* or create a beta release intended for testing as `v{major}.{minor}.{patch}-{suffix}`, e.g. `v1.2.3-rc0`
* personal note: I don't know what a good format for suffixes is. I'm not even sure if we _need_ beta releases long term. We'll see; I'm open to suggestions
To create a tag from your local workspace, run
```bash
git checkout main
git pull
git tag v1.2.3
git push origin v1.2.3
```
You can also create tags on different branches (e.g. for backports).
Remember to check out the revision you want to tag _before_ tagging.
Do not move existing (pushed) tags!
When a new tag is pushed, the same build+test actions described above run, but additionally the built docker images are pushed and a draft release on GitHub is created.
All artifacts will get attached to that release.
The release will be in draft mode to allow last minute changes if necessary.
Untick the draft checkbox if everything looks alright.

99
dev/postman.json vendored
View File

@ -766,105 +766,6 @@
"description": "You can create custom badges with dynamic information by using [Shields.io](https://shields.io/) and parsing JSON fields with [JSONPath](http://jsonpath.com/). \n\n## Examples\n\n#### Service Uptime Percent\n<img src=\"https://img.shields.io/badge/dynamic/json?color=blue&label=%20Statping%20Uptime&query=%24.online_24_hours&url=https%3A%2F%2Fdemo.statping.com%2Fapi%2Fservices%2F2&suffix=%\">\n\n- URL: [https://demo.statping.com/api/services/2](https://demo.statping.com/api/services/2)\n- JSON Path: `$.online_24_hours`\n- Suffix: `%`\n\n```\nhttps://img.shields.io/badge/dynamic/json?color=blue&label=%20Statping%20Uptime&query=%24.online_24_hours&url=https%3A%2F%2Fdemo.statping.com%2Fapi%2Fservices%2F2&suffix=%\n```\n\n#### Count Services\n<img src=\"https://img.shields.io/badge/dynamic/json?color=purple&label=Demo%20Site&query=%24.services&url=https://demo.statping.com/health&suffix=%20services\">\n\n- URL: [https://demo.statping.com/health](https://demo.statping.com/health)\n- JSON Path: `$.services`\n- Suffix: ` services`\n\n```\nhttps://img.shields.io/badge/dynamic/json?color=purple&label=Demo%20Site&query=%24.services&url=https://demo.statping.com/health&suffix=%20services\n```"
},
"response": []
},
{
"name": "Send Push Notification",
"event": [
{
"listen": "test",
"script": {
"id": "11fe392f-3636-4d2d-84e9-1119b351d8ee",
"exec": [
""
],
"type": "text/javascript"
}
}
],
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"notifications\": [\n {\n \"tokens\": [\"dBLB1WvTJkiWl3ZPjP0-BS:APA91bGXUbKy65CaN1XqExHXZ892jik2k9XORXSiqdUyXhcQ5RDiJ6LfXrckuH3StYJFcma4UCDr_N038YUtxYsRIHYx_8vWZ6D2uq3199LegWXGl5tz-9zk3M4WZGX8WGxIRUJ31QtW\"],\n \"platform\": 2,\n \"message\": \"This notification will go to iOS and Android platform via Firebase!\"\n }\n ]\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "https://push.statping.com/api/push",
"protocol": "https",
"host": [
"push",
"statping",
"com"
],
"path": [
"api",
"push"
]
},
"description": "Send a push notification to the Statping mobile app using your Firebase device identifier."
},
"response": [
{
"name": "Send Push Notification",
"originalRequest": {
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"notifications\": [\n {\n \"tokens\": [\"dBLB1WvTJkiWl3ZPjP0-BS:APA91bGXUbKy65CaN1XqExHXZ892jik2k9XORXSiqdUyXhcQ5RDiJ6LfXrckuH3StYJFcma4UCDr_N038YUtxYsRIHYx_8vWZ6D2uq3199LegWXGl5tz-9zk3M4WZGX8WGxIRUJ31QtW\"],\n \"platform\": 2,\n \"message\": \"This notification will go to iOS and Android Statping App\"\n }\n ]\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "https://push.statping.com/api/push",
"protocol": "https",
"host": [
"push",
"statping",
"com"
],
"path": [
"api",
"push"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Length",
"value": "37"
},
{
"key": "Content-Type",
"value": "application/json; charset=utf-8"
},
{
"key": "Date",
"value": "Thu, 13 Aug 2020 02:24:17 GMT"
},
{
"key": "X-Gorush-Version",
"value": "No Version Provided"
}
],
"cookie": [],
"body": "{\n \"counts\": 1,\n \"logs\": [],\n \"success\": \"ok\"\n}"
}
]
}
],
"description": "This is for Statping's miscellaneous API endpoints that aren't a part of another category.",

View File

@ -7,7 +7,7 @@
</div>
<span class="font-1 mt-3">
<a href="https://github.com/statping-ng/statping-ng" class="statping" target="_blank">
Statping v{{core.version}} made with <font-awesome-icon icon="heart" class="hlight font-1"/></a>
Statping {{core.version}} made with <font-awesome-icon icon="heart" class="hlight font-1"/></a>
</span>
</div>
</div>

View File

@ -68,7 +68,7 @@
<font-awesome-icon icon="code-branch" class="mr-3"/> {{$t('repo')}}
</a>
<span class="small text-dim text-center mt-5">Statping-ng v{{core.version}}<br>
<span class="small text-dim text-center mt-5">Statping-ng {{core.version}}<br>
<a class="small text-muted no-decoration" v-if="core.commit" v-bind:href="`https://github.com/statping-ng/statping-ng/commit/${core.commit}`">{{core.commit.slice(0,8)}}</a>
</span>

27
go.mod
View File

@ -1,10 +1,9 @@
module github.com/statping-ng/statping-ng
// +heroku goVersion go1.17
go 1.17
go 1.19
require (
github.com/GeertJohan/go.rice v1.0.2
github.com/GeertJohan/go.rice v1.0.3
github.com/aws/aws-sdk-go v1.30.20
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/fatih/structs v1.1.0
@ -23,9 +22,9 @@ require (
github.com/spf13/cobra v1.0.0
github.com/spf13/viper v1.6.3
github.com/statping-ng/emails v1.0.3
github.com/stretchr/testify v1.6.1
github.com/stretchr/testify v1.8.1
github.com/t-tiger/gorm-bulk-insert/v2 v2.0.1
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519
golang.org/x/crypto v0.4.0
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
google.golang.org/grpc v1.28.1
gopkg.in/natefinch/lumberjack.v2 v2.0.0
@ -51,12 +50,12 @@ require (
github.com/cenkalti/backoff/v4 v4.0.2 // indirect
github.com/cloudflare/cloudflare-go v0.11.6 // indirect
github.com/cpu/goacmedns v0.0.2 // indirect
github.com/daaku/go.zipexe v1.0.0 // indirect
github.com/daaku/go.zipexe v1.0.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dimchansky/utfbom v1.1.0 // indirect
github.com/dnsimple/dnsimple-go v0.60.0 // indirect
github.com/exoscale/egoscale v0.18.1 // indirect
github.com/fsnotify/fsnotify v1.5.1 // indirect
github.com/fsnotify/fsnotify v1.5.4 // indirect
github.com/go-acme/lego/v3 v3.7.0 // indirect
github.com/go-errors/errors v1.0.2 // indirect
github.com/go-resty/resty/v2 v2.2.0 // indirect
@ -64,6 +63,8 @@ require (
github.com/gofrs/uuid v3.2.0+incompatible // indirect
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
github.com/golang/protobuf v1.4.2 // indirect
github.com/gomarkdown/markdown v0.0.0-20221013030248-663e2500819c // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/google/go-querystring v1.0.0 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/googleapis/gax-go/v2 v2.0.5 // indirect
@ -78,6 +79,7 @@ require (
github.com/json-iterator/go v1.1.9 // indirect
github.com/kolo/xmlrpc v0.0.0-20200310150728-e0350524596b // indirect
github.com/konsorten/go-windows-terminal-sequences v1.0.3 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/labbsr0x/bindman-dns-webhook v1.0.2 // indirect
github.com/labbsr0x/goh v1.0.1 // indirect
github.com/lextoumbourou/goodhosts v2.1.0+incompatible // indirect
@ -110,23 +112,26 @@ require (
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/subosito/gotenv v1.2.0 // indirect
github.com/tdewolff/minify/v2 v2.12.4 // indirect
github.com/tdewolff/parse/v2 v2.6.4 // indirect
github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7 // indirect
github.com/transip/gotransip/v6 v6.0.2 // indirect
github.com/vultr/govultr v0.3.3 // indirect
go.opencensus.io v0.22.3 // indirect
go.uber.org/ratelimit v0.1.0 // indirect
golang.org/x/net v0.2.0 // indirect
golang.org/x/net v0.4.0 // indirect
golang.org/x/sync v0.1.0 // indirect
golang.org/x/sys v0.2.0 // indirect
golang.org/x/text v0.4.0 // indirect
golang.org/x/sys v0.3.0 // indirect
golang.org/x/text v0.5.0 // indirect
golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 // indirect
google.golang.org/api v0.21.0 // indirect
google.golang.org/appengine v1.6.6 // indirect
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 // indirect
google.golang.org/protobuf v1.25.0 // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
gopkg.in/ini.v1 v1.55.0 // indirect
gopkg.in/ns1/ns1-go.v2 v2.3.0 // indirect
gopkg.in/square/go-jose.v2 v2.5.0 // indirect
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

65
go.sum
View File

@ -75,8 +75,8 @@ github.com/DATA-DOG/go-sqlmock v1.4.1 h1:ThlnYciV1iM/V0OSF/dtkqWb6xo5qITT1TJBG1M
github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/GeertJohan/go.incremental v1.0.0/go.mod h1:6fAjUhbVuX1KcMD3c8TEgVUqmo4seqhv0i0kdATSkM0=
github.com/GeertJohan/go.rice v1.0.0/go.mod h1:eH6gbSOAUv07dQuZVnBmoDP8mgsM1rtixis4Tib9if0=
github.com/GeertJohan/go.rice v1.0.2 h1:PtRw+Tg3oa3HYwiDBZyvOJ8LdIyf6lAovJJtr7YOAYk=
github.com/GeertJohan/go.rice v1.0.2/go.mod h1:af5vUNlDNkCjOZeSGFgIJxDje9qdjsO6hshx0gTmZt4=
github.com/GeertJohan/go.rice v1.0.3 h1:k5viR+xGtIhF61125vCE1cmJ5957RQGXG6dmbaWZSmI=
github.com/GeertJohan/go.rice v1.0.3/go.mod h1:XVdrU4pW00M4ikZed5q56tPf1v2KwnIKeIdc9CBYNt4=
github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY=
github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7/go.mod h1:6E6s8o2AE4KhCrqr6GRJjdC/gNfTdxkIXvuGZZda2VM=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
@ -133,8 +133,9 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/daaku/go.zipexe v1.0.0 h1:VSOgZtH418pH9L16hC/JrgSNJbbAL26pj7lmD1+CGdY=
github.com/daaku/go.zipexe v1.0.0/go.mod h1:z8IiR6TsVLEYKwXAoE/I+8ys/sDkgTzSL0CLnGVd57E=
github.com/daaku/go.zipexe v1.0.2 h1:Zg55YLYTr7M9wjKn8SY/WcpuuEi+kR2u4E8RhvpyXmk=
github.com/daaku/go.zipexe v1.0.2/go.mod h1:5xWogtqlYnfBXkSB1o9xysukNP9GTvaNkqzUZbt3Bw8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@ -148,6 +149,7 @@ github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUn
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4=
github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE=
github.com/dnaeon/go-vcr v0.0.0-20180814043457-aafff18a5cc2/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
github.com/dnsimple/dnsimple-go v0.60.0 h1:N+q+ML1CZGf+5r4udu9Opy7WJNtOaFT9aM86Af9gLhk=
@ -176,8 +178,8 @@ github.com/foomo/tlsconfig v0.0.0-20180418120404-b67861b076c9 h1:RPOsDNbnDUFaSt/
github.com/foomo/tlsconfig v0.0.0-20180418120404-b67861b076c9/go.mod h1:OdiGKKgTAfMv7x9Hh9qYFueue77tr09LUAxwy2+M8wY=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=
github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc=
github.com/getsentry/sentry-go v0.5.1 h1:MIPe7ScHADsrK2vznqmhksIUFxq7m0JfTh+ZIMkI+VQ=
github.com/getsentry/sentry-go v0.5.1/go.mod h1:B8H7x8TYDPkeWPRzGpIiFO97LZP6rL8A3hEt8lUItMw=
@ -248,6 +250,8 @@ github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/gomarkdown/markdown v0.0.0-20200820230800-3724143f5294/go.mod h1:aii0r/K0ZnHv7G0KF7xy1v0A7s2Ljrb5byB7MO5p6TU=
github.com/gomarkdown/markdown v0.0.0-20221013030248-663e2500819c h1:iyaGYbCmcYK0Ja9a3OUa2Fo+EaN0cbLu0eKpBwPFzc8=
github.com/gomarkdown/markdown v0.0.0-20221013030248-663e2500819c/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
@ -256,8 +260,9 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k=
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@ -360,6 +365,9 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJ
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@ -426,7 +434,6 @@ github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ
github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4=
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nkovacs/streamquote v0.0.0-20170412213628-49af9bddb229/go.mod h1:0aYXnNPJ8l7uZxf45rWW1a/uME32OF0rhiYGNQ2oF2E=
github.com/nkovacs/streamquote v1.0.0/go.mod h1:BN+NaZ2CmdKqUuTUXUEm9j95B2TRbpOWpxbJYzzgUsc=
@ -460,6 +467,7 @@ github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAv
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@ -494,6 +502,8 @@ github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKc
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
@ -542,21 +552,31 @@ github.com/statping/emails v1.0.0/go.mod h1:xFU85jXaiWQadqHqu/jDrGsAn6WPSk1WgKyT
github.com/statping/statping v0.90.64/go.mod h1:lbyNPB73IjWtnommV4wSejYfgUT1yLhhqelMjl1ZBb8=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/t-tiger/gorm-bulk-insert/v2 v2.0.1 h1:HGVkRrwDCbmSP6h1CoBDj6l/mhnvsP5JbYaQ4ss0R6o=
github.com/t-tiger/gorm-bulk-insert/v2 v2.0.1/go.mod h1:I3xbaE9ud9/TEXzehwkHx86SyJwqeSNsX2X5oV61jIg=
github.com/tdewolff/minify/v2 v2.8.0/go.mod h1:6zN8VLhMfFxNrwHROcboYNo2+huPNu4SV8DPh3PUQ8E=
github.com/tdewolff/minify/v2 v2.12.4 h1:kejsHQMM17n6/gwdw53qsi6lg0TGddZADVyQOz1KMdE=
github.com/tdewolff/minify/v2 v2.12.4/go.mod h1:h+SRvSIX3kwgwTFOpSckvSxgax3uy8kZTSF1Ojrr3bk=
github.com/tdewolff/parse/v2 v2.4.4/go.mod h1:WzaJpRSbwq++EIQHYIRTpbYKNA3gn9it1Ik++q4zyho=
github.com/tdewolff/parse/v2 v2.6.4 h1:KCkDvNUMof10e3QExio9OPZJT8SbdKojLBumw8YZycQ=
github.com/tdewolff/parse/v2 v2.6.4/go.mod h1:woz0cgbLwFdtbjJu8PIKxhW05KplTFQkOdX78o+Jgrs=
github.com/tdewolff/test v1.0.6/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7 h1:CpHxIaZzVy26GqJn8ptRyto8fuoYOd1v0fXm9bG3wQ8=
github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLplxEC/etjIhdr3dNzV3JeT27LbVu5pYWm0JCBY=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
@ -628,8 +648,9 @@ golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20200406173513-056763e48d71/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200420201142-3c4aac89819a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8=
golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@ -699,8 +720,9 @@ golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81R
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU=
golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@ -761,22 +783,22 @@ golang.org/x/sys v0.0.0-20200724161237-0e2f3a69832c/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@ -827,7 +849,6 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
@ -901,8 +922,9 @@ gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
@ -936,8 +958,9 @@ gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

View File

@ -176,7 +176,7 @@ func DeleteAllAssets(folder string) error {
func CopyAllToPublic(box *rice.Box) error {
exclude := map[string]bool{
// "base.gohtml": true,
"index.html": true,
"index.html": true,
}
return box.Walk("/", func(path string, info os.FileInfo, err error) error {

View File

@ -6,10 +6,6 @@ package utils
import (
"errors"
"os"
"os/exec"
"regexp"
"strconv"
"strings"
"syscall"
)

View File

@ -1 +0,0 @@
0.91.0