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:
      - master

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

      - name: Set up Go 1.12
        uses: actions/setup-go@v1
        with:
          go-version: 1.12
        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.23.7

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

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

  koji:
    name: "麹 Koji test"
    runs-on: ubuntu-latest
    services:
      postgres:
        image: docker.io/library/postgres:12-alpine
        env:
          POSTGRES_USER:     koji
          POSTGRES_PASSWORD: kojipass
          POSTGRES_DB:       koji
      koji:
        image: quay.io/osbuild/ghci-koji:v1
        env:
          POSTGRES_USER:     koji
          POSTGRES_PASSWORD: kojipass
          POSTGRES_DB:       koji
          POSTGRES_HOST:     postgres
        ports:
          - 8080:80
    steps:
      - name: Set up Go 1.12
        uses: actions/setup-go@v1
        with:
          go-version: 1.12
        id: go

        # We need python for koji client.
      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: 3.8

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

        # Koji from pip is missing its config file.
        # To fix this, the default Fedora 32 config is included in the repo
        # and installed here. See the last line of the script.
      - name: Install koji client
        run: |
          sudo apt-get install -y libkrb5-dev
          python -m pip install --upgrade pip
          pip install koji
          sudo cp .github/koji.conf /etc/koji.conf

      - name: Run unit tests
        run: go test -v -race -covermode atomic -coverprofile=coverage.txt -tags koji_test ./internal/upload/koji

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