In 5e639cba6f the context of the Trigger
Gitalb CI workflow changed and the context
"github.event.pull_request.draft" is no longer available so the
condition for SKIP_CI didn't work. This can be fixed by getting the
variable in the previous workflow and passin it as artifact. Docs:
https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#using-data-from-the-triggering-workflow
152 lines
4.2 KiB
YAML
152 lines
4.2 KiB
YAML
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:
|
|
unit-tests:
|
|
name: "🛃 Unit tests"
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
|
|
- name: Set up Go 1.16
|
|
uses: actions/setup-go@v2.1.5
|
|
with:
|
|
go-version: 1.16
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2.4.0
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
|
|
# This is needed to test internal/upload/koji package
|
|
- name: Install kerberos devel package
|
|
run: sudo apt-get install -y libkrb5-dev
|
|
|
|
- name: Run unit tests
|
|
run: go test -race -covermode=atomic -coverprofile=coverage.txt -coverpkg=$(go list ./... | grep -v rpmmd/test$ | tr "\n" ",") ./...
|
|
|
|
- name: Send coverage to codecov.io
|
|
run: bash <(curl -s https://codecov.io/bash)
|
|
|
|
python-lint:
|
|
name: "🐍 Lint (dnf-json)"
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: docker.io/library/fedora:latest
|
|
steps:
|
|
- uses: actions/checkout@v2.4.0
|
|
- name: Install dependencies
|
|
run: |
|
|
dnf -y install python3-pylint
|
|
- name: Analysing the code with pylint
|
|
run: |
|
|
python3 -m pylint dnf-json
|
|
|
|
lint:
|
|
name: "⌨ Lint"
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
|
|
- name: Set up Go 1.16
|
|
uses: actions/setup-go@v2.1.5
|
|
with:
|
|
go-version: 1.16
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2.4.0
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
|
|
- 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
|
|
|
|
prepare:
|
|
name: "🔍 Check source preparation"
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
|
|
- name: Set up Go 1.16
|
|
uses: actions/setup-go@v2.1.5
|
|
with:
|
|
go-version: 1.16
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2.4.0
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
|
|
- 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
|
|
|
|
shellcheck:
|
|
name: "🐚 Shellcheck"
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- uses: actions/checkout@v2.4.0
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
- name: Run ShellCheck
|
|
uses: ludeeus/action-shellcheck@1.1.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:35
|
|
steps:
|
|
- name: Install dependencies
|
|
run: sudo dnf install -y rpmlint rpm-build make git-core
|
|
|
|
- uses: actions/checkout@v2.4.0
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
|
|
- name: Create SRPM
|
|
run: make srpm
|
|
|
|
- name: Run rpmlint
|
|
run: rpmlint rpmbuild/SRPMS/*
|
|
|
|
gitlab-ci-helper:
|
|
name: "Gitlab CI trigger helper"
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
SKIP_CI: ${{ (github.event.pull_request.draft == true || contains(github.event.pull_request.labels.*.name, 'WIP')) && !contains(github.event.pull_request.labels.*.name, 'WIP+test') }}
|
|
steps:
|
|
- name: Write PR status
|
|
run: echo "$SKIP_CI" > SKIP_CI.txt
|
|
- name: Upload status
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: PR_STATUS
|
|
path: SKIP_CI.txt
|