Fedora 35 is going EOL on Tue 2022-12-13. At the time of writing this commit message, that's the next day. As we do releases on Wednesdays, the next release will never find its way to F35 and thus, there's no point in keeping support for it. Let's delete everything that relates to Fedora 35. If there's something that cannot be deleted (e.g. CI containers based on F35), let's upgrade it to F37. TestCrossArchDepsolve now uses CentOS Stream 8 because RHEL 8.4 cannot read F37 repository metadata. This is a similar issue to https://bugzilla.redhat.com/show_bug.cgi?id=2004853 . Basically, newer repositories can be only read by libmodulemd >= 2.11. Signed-off-by: Ondřej Budai <ondrej@budai.cz>
230 lines
6.7 KiB
YAML
230 lines
6.7 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
|
|
container:
|
|
image: registry.fedoraproject.org/fedora:37
|
|
|
|
steps:
|
|
# krb5-devel is needed to test internal/upload/koji package
|
|
# gcc is needed to build the mock dnf-json binary for the unit tests
|
|
# gpgme-devel is needed for container upload dependencies
|
|
- name: Install build and test dependencies
|
|
run: dnf -y install krb5-devel gcc git-core go gpgme-devel
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
|
|
- name: Mark the working directory as safe for git
|
|
run: git config --global --add safe.directory "$(pwd)"
|
|
|
|
- name: Run unit tests
|
|
run: go test -race -covermode=atomic -coverprofile=coverage.txt -coverpkg=$(go list ./... | grep -v rpmmd/test$ | tr "\n" ",") ./...
|
|
|
|
- name: Run dnfjson tests with force-dnf to make sure it's not skipped for any reason
|
|
run: go test -race ./internal/dnfjson/... -force-dnf
|
|
|
|
- name: Send coverage to codecov.io
|
|
run: bash <(curl -s https://codecov.io/bash)
|
|
|
|
db-tests:
|
|
name: "🗄 DB tests"
|
|
runs-on: ubuntu-20.04
|
|
services:
|
|
postgres:
|
|
# 12 is used in deployments
|
|
image: postgres:12
|
|
env:
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: foobar
|
|
POSTGRES_DB: osbuildcomposer
|
|
options: >-
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
ports:
|
|
- 5432:5432
|
|
steps:
|
|
# gpgme-devel is needed for container upload dependencies
|
|
- name: Install test dependencies
|
|
run: sudo apt-get install -y libgpgme-dev
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-go@v3
|
|
with:
|
|
go-version: 1.16
|
|
- env:
|
|
PGUSER: postgres
|
|
PGPASSWORD: foobar
|
|
PGDATABASE: osbuildcomposer
|
|
PGHOST: localhost
|
|
PGPORT: 5432
|
|
run: |
|
|
WORKDIR=$(readlink -f pkg/jobqueue/dbjobqueue/schemas)
|
|
pushd $(mktemp -d)
|
|
go mod init temp
|
|
go install github.com/jackc/tern@latest
|
|
$(go env GOPATH)/bin/tern migrate -m "$WORKDIR"
|
|
popd
|
|
- run: go test -tags=integration ./cmd/osbuild-composer-dbjobqueue-tests
|
|
- run: go test -tags=integration ./cmd/osbuild-service-maintenance
|
|
|
|
python-lint:
|
|
name: "🐍 Lint (dnf-json)"
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: registry.fedoraproject.org/fedora:37
|
|
steps:
|
|
|
|
- name: Install build and test dependencies
|
|
run: dnf -y install python3-pylint git-core python3-requests
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
|
|
- name: Analysing the code with pylint
|
|
run: |
|
|
python3 -m pylint dnf-json tools/koji-compose.py
|
|
|
|
lint:
|
|
name: "⌨ Lint"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Set up Go 1.16
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: 1.16
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
|
|
# This is needed to lint internal/upload/koji package
|
|
- name: Install kerberos devel package
|
|
run: sudo apt-get install -y libkrb5-dev
|
|
|
|
# This is needed for the container upload dependencies
|
|
- name: Install libgpgme devel package
|
|
run: sudo apt-get install -y libgpgme-dev
|
|
|
|
- name: Run golangci-lint
|
|
uses: golangci/golangci-lint-action@v3
|
|
with:
|
|
version: latest
|
|
args: --verbose --timeout 5m0s
|
|
|
|
prepare:
|
|
name: "🔍 Check source preparation"
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
|
|
- name: Set up Go 1.16
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: 1.16
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v3
|
|
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@v3
|
|
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:
|
|
# don't check /etc/os-release sourcing, allow useless cats to live inside our codebase, and
|
|
# allow seemingly unreachable commands
|
|
SHELLCHECK_OPTS: -e SC1091 -e SC2002 -e SC2317
|
|
|
|
rpmlint:
|
|
name: "📦 RPMlint"
|
|
runs-on: ubuntu-20.04
|
|
container: registry.fedoraproject.org/fedora:37
|
|
steps:
|
|
- name: Install dependencies
|
|
run: sudo dnf install -y rpmlint rpm-build make git-core
|
|
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
|
|
- name: Create SRPM
|
|
run: |
|
|
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
|
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
|
|
|
|
kube-linter:
|
|
name: "🎀 kube-linter"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: redhat-actions/oc-installer@v1
|
|
- name: Process template
|
|
run: |
|
|
mkdir processed-templates
|
|
oc process -f templates/composer.yml \
|
|
-p IMAGE_TAG=image_tag \
|
|
--local \
|
|
-o yaml > processed-templates/composer.yml
|
|
|
|
- uses: stackrox/kube-linter-action@v1.0.4
|
|
with:
|
|
directory: processed-templates
|
|
config: templates/.kube-linter-config.yml
|
|
version: 0.3.0
|