|
|
|
name: CI
|
|
|
|
# This workflow is triggered on pushes & pull requests
|
|
|
|
on: [pull_request]
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
test-frontend:
|
|
|
|
name: Test Frontend
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- name: Checkout
|
|
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Test Frontend
|
|
|
|
run: |
|
|
|
|
make binary-frontend-test-coverage
|
|
|
|
- name: Upload coverage
|
|
|
|
uses: actions/upload-artifact@v4
|
|
|
|
with:
|
|
|
|
name: coverage
|
|
|
|
path: ${{ github.workspace }}/webapp/frontend/coverage/lcov.info
|
|
|
|
retention-days: 1
|
|
|
|
test-backend:
|
|
|
|
name: Test Backend
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
container: ghcr.io/packagrio/packagr:latest-golang
|
|
|
|
# Service containers to run with `build` (Required for end-to-end testing)
|
|
|
|
services:
|
|
|
|
influxdb:
|
|
|
|
image: influxdb:2.2
|
|
|
|
env:
|
|
|
|
DOCKER_INFLUXDB_INIT_MODE: setup
|
|
|
|
DOCKER_INFLUXDB_INIT_USERNAME: admin
|
|
|
|
DOCKER_INFLUXDB_INIT_PASSWORD: password12345
|
|
|
|
DOCKER_INFLUXDB_INIT_ORG: scrutiny
|
|
|
|
DOCKER_INFLUXDB_INIT_BUCKET: metrics
|
|
|
|
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: my-super-secret-auth-token
|
|
|
|
ports:
|
|
|
|
- 8086:8086
|
|
|
|
env:
|
|
|
|
STATIC: true
|
|
|
|
steps:
|
|
|
|
- name: Git
|
|
|
|
run: |
|
|
|
|
apt-get update && apt-get install -y software-properties-common
|
|
|
|
add-apt-repository ppa:git-core/ppa && apt-get update && apt-get install -y git
|
|
|
|
git --version
|
|
|
|
- name: Checkout
|
|
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Test Backend
|
|
|
|
run: |
|
|
|
|
make binary-clean binary-test-coverage
|
|
|
|
- name: Upload coverage
|
|
|
|
uses: actions/upload-artifact@v4
|
|
|
|
with:
|
|
|
|
name: coverage
|
|
|
|
path: ${{ github.workspace }}/coverage.txt
|
|
|
|
retention-days: 1
|
|
|
|
test-coverage:
|
|
|
|
name: Test Coverage Upload
|
|
|
|
needs:
|
|
|
|
- test-backend
|
|
|
|
- test-frontend
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- name: Checkout
|
|
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Download coverage reports
|
|
|
|
uses: actions/download-artifact@v4
|
|
|
|
with:
|
|
|
|
name: coverage
|
|
|
|
- name: Upload coverage reports
|
|
|
|
uses: codecov/codecov-action@v2
|
|
|
|
with:
|
|
|
|
files: ${{ github.workspace }}/coverage.txt,${{ github.workspace }}/lcov.info
|
|
|
|
flags: unittests
|
|
|
|
fail_ci_if_error: true
|
|
|
|
verbose: true
|
|
|
|
|
|
|
|
build:
|
|
|
|
name: Build ${{ matrix.cfg.goos }}/${{ matrix.cfg.goarch }}
|
|
|
|
runs-on: ${{ matrix.cfg.on }}
|
|
|
|
env:
|
|
|
|
GOOS: ${{ matrix.cfg.goos }}
|
|
|
|
GOARCH: ${{ matrix.cfg.goarch }}
|
|
|
|
GOARM: ${{ matrix.cfg.goarm }}
|
|
|
|
STATIC: true
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
cfg:
|
|
|
|
- { on: ubuntu-latest, goos: linux, goarch: amd64 }
|
|
|
|
- { on: ubuntu-latest, goos: linux, goarch: arm, goarm: 5 }
|
|
|
|
- { on: ubuntu-latest, goos: linux, goarch: arm, goarm: 6 }
|
|
|
|
- { on: ubuntu-latest, goos: linux, goarch: arm, goarm: 7 }
|
|
|
|
- { on: ubuntu-latest, goos: linux, goarch: arm64 }
|
|
|
|
- { on: macos-latest, goos: darwin, goarch: amd64 }
|
|
|
|
- { on: macos-latest, goos: darwin, goarch: arm64 }
|
|
|
|
- { on: macos-latest, goos: freebsd, goarch: amd64 }
|
|
|
|
- { on: windows-latest, goos: windows, goarch: amd64 }
|
|
|
|
- { on: windows-latest, goos: windows, goarch: arm64 }
|
|
|
|
steps:
|
|
|
|
- name: Checkout
|
|
|
|
uses: actions/checkout@v2
|
|
|
|
- uses: actions/setup-go@v3
|
|
|
|
with:
|
|
|
|
go-version: '^1.20.1'
|
|
|
|
- name: Build Binaries
|
|
|
|
run: |
|
|
|
|
make binary-clean binary-all
|
|
|
|
- name: Archive
|
|
|
|
uses: actions/upload-artifact@v4
|
|
|
|
with:
|
|
|
|
name: binaries.zip
|
|
|
|
path: |
|
|
|
|
scrutiny-web-*
|
|
|
|
scrutiny-collector-metrics-*
|