depsolve: add modules
support
#4726
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Tests | |
# NOTE(mhayden): Restricting branches prevents jobs from being doubled since | |
# a push to a pull request triggers two events. | |
on: # yamllint disable-line rule:truthy | |
pull_request: | |
branches: | |
- "*" | |
push: | |
branches: | |
- main | |
# for merge queue | |
merge_group: | |
jobs: | |
unit-tests-fedora: | |
strategy: | |
matrix: | |
fedora_version: | |
- 40 | |
- 41 | |
fail-fast: false # if one fails, keep the other(s) running | |
name: "π Unit tests (Fedora ${{ matrix.fedora_version }})" | |
runs-on: ubuntu-latest | |
container: registry.fedoraproject.org/fedora:${{ matrix.fedora_version }} | |
env: | |
# workaround for expired cert at source of indirect dependency | |
# (go.opencensus.io/trace) | |
GOPROXY: "https://proxy.golang.org|direct" | |
steps: | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Install python3 | |
# The Fedora 41 container doesn't have python3 installed by default | |
run: dnf -y install python3 | |
- name: Set up repository for pinned osbuild commit | |
run: ./test/scripts/setup-osbuild-repo | |
- name: Install test dependencies | |
run: ./test/scripts/install-dependencies | |
- name: Mark the working directory as safe for git | |
run: git config --global --add safe.directory "$(pwd)" | |
- name: Run unit tests | |
# skip the TestResolverLocalManifest test. It is tested separately | |
# (see below: requires root) | |
run: go test -race ./... -test.skip TestResolverLocalManifest | |
- name: Run depsolver tests with force-dnf to make sure it's not skipped | |
run: go test -race ./pkg/dnfjson/... -force-dnf | |
container-resolver-tests: | |
name: "π Container resolver tests" | |
runs-on: ubuntu-latest | |
env: | |
# workaround for expired cert at source of indirect dependency | |
# (go.opencensus.io/trace) | |
GOPROXY: "https://proxy.golang.org|direct" | |
steps: | |
- name: Set up Go 1.21 | |
uses: actions/setup-go@v5 | |
with: | |
go-version: "1.21" | |
id: go | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Apt update | |
run: sudo apt update | |
# This is needed for the container resolver dependencies | |
- name: Install libgpgme devel package | |
run: sudo apt install -y libgpgme-dev libbtrfs-dev libdevmapper-dev podman | |
# We need to run the test as root, since we use the root | |
# containers-storage for the local resolvers | |
- name: Run unit tests | |
run: sudo go test -v ./pkg/container/... --force-local-resolver | |
unit-tests-cs: | |
strategy: | |
matrix: | |
centos_stream: | |
- version: 9 | |
image_tag: stream9 | |
- version: 10 | |
image_tag: stream10-development | |
fail-fast: false # if one fails, keep the other(s) running | |
name: "π Unit tests (CentOS Stream ${{ matrix.centos_stream.version }})" | |
runs-on: ubuntu-latest | |
container: | |
image: quay.io/centos/centos:${{ matrix.centos_stream.image_tag }} | |
env: | |
GOFLAGS: "-tags=exclude_graphdriver_btrfs" | |
# workaround for expired cert at source of indirect dependency | |
# (go.opencensus.io/trace) | |
GOPROXY: "https://proxy.golang.org|direct" | |
steps: | |
- name: Install dnf plugins | |
run: dnf -y install dnf-plugins-core | |
- name: Enable crb repo | |
run: dnf config-manager --set-enabled crb | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Set up repository for pinned osbuild commit | |
run: ./test/scripts/setup-osbuild-repo | |
- name: Install build and test dependencies | |
run: dnf -y install krb5-devel gcc git-core go gpgme-devel osbuild-depsolve-dnf device-mapper-devel | |
- name: Mark the working directory as safe for git | |
run: git config --global --add safe.directory "$(pwd)" | |
- name: Run unit tests | |
run: go test -v -race ./... | |
- name: Install openssl for cgo test below | |
run: dnf -y install openssl | |
- name: Run unit tests without CGO | |
# keep tags in sync with BUILDTAGS_CROSS in https://github.com/containers/podman/blob/2981262215f563461d449b9841741339f4d9a894/Makefile#L85 | |
run: CGO_ENABLED=0 go test -tags "containers_image_openpgp exclude_graphdriver_btrfs exclude_graphdriver_devicemapper exclude_graphdriver_overlay" ./... | |
- name: Run depsolver tests with force-dnf to make sure it's not skipped for any reason | |
run: go test -v -race ./pkg/dnfjson/... -force-dnf | |
lint: | |
name: "β¨ Lint" | |
runs-on: ubuntu-latest | |
env: | |
# workaround for expired cert at source of indirect dependency | |
# (go.opencensus.io/trace) | |
GOPROXY: "https://proxy.golang.org|direct" | |
steps: | |
- name: Set up Go 1.21 | |
uses: actions/setup-go@v5 | |
with: | |
go-version: "1.21" | |
id: go | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Apt update | |
run: sudo apt update | |
# This is needed to lint internal/upload/koji package | |
- name: Install kerberos devel package | |
run: sudo apt install -y libkrb5-dev | |
# This is needed for the container upload dependencies | |
- name: Install libgpgme devel package | |
run: sudo apt install -y libgpgme-dev libbtrfs-dev libdevmapper-dev | |
- name: Run golangci-lint | |
uses: golangci/golangci-lint-action@v6 | |
with: | |
version: v1.61.0 | |
args: --verbose --timeout 5m0s | |
shellcheck: | |
name: "π Shellcheck" | |
runs-on: ubuntu-latest | |
env: | |
# workaround for expired cert at source of indirect dependency | |
# (go.opencensus.io/trace) | |
GOPROXY: "https://proxy.golang.org|direct" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Run ShellCheck | |
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 | |
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 | |
python-test: | |
name: "π pytest (imgtestlib and test scripts)" | |
runs-on: ubuntu-latest | |
env: | |
# workaround for expired cert at source of indirect dependency | |
# (go.opencensus.io/trace) | |
GOPROXY: "https://proxy.golang.org|direct" | |
container: | |
image: registry.fedoraproject.org/fedora:latest | |
steps: | |
- name: Install build and test dependencies | |
run: dnf -y install python3-pytest podman skopeo go btrfs-progs-devel device-mapper-devel gpgme-devel | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Testing imgtestlib and test scripts | |
run: | | |
python3 -m pytest -v | |
python-lint: | |
name: "π Lint (test scripts)" | |
runs-on: ubuntu-latest | |
env: | |
# workaround for expired cert at source of indirect dependency | |
# (go.opencensus.io/trace) | |
GOPROXY: "https://proxy.golang.org|direct" | |
container: | |
image: registry.fedoraproject.org/fedora:latest | |
steps: | |
- name: Install build and test dependencies | |
run: dnf -y install python3-pylint git-core grep python3-pytest | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Analysing the code with pylint | |
run: | | |
python3 -m pylint --version | |
python3 -m pylint $(grep -l "/usr/bin/env python3" -r test/scripts) test/scripts/*.py |