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