name: CI # This workflow is triggered on pushes & pull requests on: [pull_request] jobs: test: name: Test 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: PROJECT_PATH: /go/src/github.com/analogj/scrutiny CGO_ENABLED: 1 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 run: | make clean binary-test-coverage - name: Generate coverage report uses: codecov/codecov-action@v2 with: files: ${{ github.workspace }}/coverage.txt flags: unittests fail_ci_if_error: true verbose: true build: name: Build ${{ matrix.cfg.goos }}/${{ matrix.cfg.goarch }} needs: release runs-on: ${{ matrix.cfg.on }} env: GOOS: ${{ matrix.cfg.goos }} GOARCH: ${{ matrix.cfg.goarch }} GOARM: ${{ matrix.cfg.goarm }} 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: macos-latest, goos: freebsd, goarch: arm64 } - { on: windows-latest, goos: windows, goarch: amd64 } - { on: windows-latest, goos: windows, goarch: arm64 } steps: - name: Build Binaries run: | make clean binary-all - name: Archive uses: actions/upload-artifact@v2 with: name: binaries.zip path: | scrutiny-web-* scrutiny-collector-metrics-*