Blob Blame History Raw
name: Tests

# NOTE(mhayden): Restricting branches prevents jobs from being doubled since
# a push to a pull request triggers two events.
on:
  pull_request:
    branches:
      - "*"
  push:
    branches:
      - main

jobs:
  lint:
    name: "🛃 Checks"
    runs-on: ubuntu-20.04
    steps:

      - name: Set up Go 1.14
        uses: actions/setup-go@v1
        with:
          go-version: 1.14
        id: go

      - name: Check out code into the Go module directory
        uses: actions/checkout@v2

      - name: Check that source has been prepared
        run: |
          ./tools/prepare-source.sh
          if [ -n "$(git status --porcelain)" ]; then
            echo
            echo "Please include these changes in your branch: "
            git status -vv
            exit "1"
          else
            exit "0"
          fi

      - name: Install golangci-lint
        run: curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s -- -b $(go env GOPATH)/bin v1.30.0

        # This is needed to lint internal/upload/koji package
      - name: Install kerberos devel package
        run: sudo apt-get install -y libkrb5-dev

      - name: Run golangci-lint
        run: $(go env GOPATH)/bin/golangci-lint run --timeout 5m0s

      - name: Run unit tests
        run: go test -v -race -covermode=atomic -coverprofile=coverage.txt -coverpkg=./... ./...

      - name: Send coverage to codecov.io
        run: bash <(curl -s https://codecov.io/bash)

  shellcheck:
    name: "🐚 Shellcheck"
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
    - name: Run ShellCheck
      uses: ludeeus/action-shellcheck@0.5.0
      with:
        ignore: vendor # We don't want to fix the code in vendored dependencies
      env:
        SHELLCHECK_OPTS: -e SC1091 -e SC2002 # don't check /etc/os-release sourcing and allow useless cats to live inside our codebase

  rpmlint:
    name: "📦 RPMlint"
    runs-on: ubuntu-20.04
    container: registry.fedoraproject.org/fedora:33
    steps:
      - name: Install dependencies
        run: sudo dnf install -y rpmlint rpm-build make git-core

      - uses: actions/checkout@v2

      - name: Create SRPM
        run: make srpm

      - name: Run rpmlint
        run: rpmlint rpmbuild/SRPMS/*