Skip to content

[cleaner] Add user-defined regexp patterns matching #240

[cleaner] Add user-defined regexp patterns matching

[cleaner] Add user-defined regexp patterns matching #240

Workflow file for this run

name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
setup:
runs-on: ubuntu-latest
outputs:
distros: ${{ steps.set-matrix.outputs.distros }}
builds: ${{ steps.set-matrix.outputs.builds }}
distro_matrix: ${{ steps.set-matrix.outputs.distro_matrix }}
rpm_matrix: ${{ steps.set-matrix.outputs.rpm_matrix }}
deb_matrix: ${{ steps.set-matrix.outputs.deb_matrix }}
stagetwo_matrix: ${{ steps.set-matrix.outputs.stagetwo_matrix }}
foreman_matrix: ${{ steps.set-matrix.outputs.foreman_matrix }}
steps:
- id: set-matrix
run: |
DISTRO_JSON='[
{"name": "ubuntu-22.04", "image": "", "builds": ["deb", "snap"], "stages": "foreman"},
{"name": "ubuntu-24.04", "image": "", "builds": ["deb", "snap"], "stages": "two"},
{"name": "ubuntu-latest", "image": "ubuntu:latest", "builds": ["deb"], "stages": ""},
{"name": "debian-12", "image": "debian:12", "builds": ["deb"], "stages": ""},
{"name": "debian-13", "image": "debian:13", "builds": ["deb"], "stages": "two"},
{"name": "fedora-43", "image": "fedora:43", "builds": ["rpm"], "stages": ""},
{"name": "fedora-44", "image": "fedora:44", "builds": ["rpm"], "stages": ""},
{"name": "centos-9", "image": "quay.io/centos/centos:stream9", "builds": ["rpm"], "stages": ""},
{"name": "centos-10", "image": "quay.io/centos/centos:stream10", "builds": ["rpm"], "stages": "two"}
]'
echo "distro_matrix=$(echo $DISTRO_JSON | jq -c .)" >> $GITHUB_OUTPUT
RPM_JSON=$(echo "$DISTRO_JSON" | jq -c '[.[] | select(.name | contains("centos") or contains("fedora"))]')
echo "rpm_matrix=$RPM_JSON" >> $GITHUB_OUTPUT
DEB_JSON=$(echo "$DISTRO_JSON" | jq -c '[.[] | select(.name | contains("ubuntu") or contains("debian"))]')
echo "deb_matrix=$DEB_JSON" >> $GITHUB_OUTPUT
STAGETWO_JSON=$(echo "$DISTRO_JSON" | jq -c '[.[] | select(.stages | contains("two"))]')
echo "stagetwo_matrix=$STAGETWO_JSON" >> $GITHUB_OUTPUT
FOREMAN_JSON=$(echo "$DISTRO_JSON" | jq -c '[.[] | select(.stages | contains("foreman"))]')
echo "foreman_matrix=$FOREMAN_JSON" >> $GITHUB_OUTPUT
filters:
runs-on: ubuntu-latest
outputs:
foreman: ${{ steps.filter_foreman.outputs.foreman }}
docs_count: ${{ steps.filter_docs.outputs.doc_files_count }}
all_count: ${{ steps.filter_docs.outputs.all_files_count }}
steps:
- uses: actions/checkout@v6
- uses: dorny/paths-filter@v4
id: filter_foreman
with:
filters: |
foreman:
- '.github/workflows/**'
- 'sos/report/**/__init__.py'
- '**/apache.py'
- '**/foreman*.py'
- '**/candlepin.py'
- '**/pulp.py'
- '**/pulpcore.py'
- '**/valkey.py'
- '**/foreman_setup.sh'
- uses: dorny/paths-filter@v4
id: filter_docs
with:
filters: |
all_files:
- '**'
doc_files:
- 'man/**'
- 'docs/**'
- 'po/**'
- '**/*.md'
- 'AUTHORS'
- 'LICENSE'
py_tests:
needs: filters
if: needs.filters.outputs.all_count > needs.filters.outputs.docs_count
strategy:
matrix:
py_version: [ '3.9', '3.x' ]
uses: ./.github/workflows/py-tests.yaml
with:
py_version: ${{ matrix.py_version }}
build_deb:
needs: [filters, setup]
if: needs.filters.outputs.all_count > needs.filters.outputs.docs_count
strategy:
matrix:
distro: ${{ fromJson(needs.setup.outputs.deb_matrix) }}
uses: ./.github/workflows/build-deb.yaml
with:
distro_image: ${{ matrix.distro.image }}
distro_name: ${{ matrix.distro.name }}
build_rpm:
needs: [filters, setup]
if: needs.filters.outputs.all_count > needs.filters.outputs.docs_count
strategy:
matrix:
distro: ${{ fromJson(needs.setup.outputs.rpm_matrix) }}
uses: ./.github/workflows/build-rpm.yaml
with:
distro_image: ${{ matrix.distro.image }}
distro_name: ${{ matrix.distro.name }}
build_snap:
needs: [filters, setup]
if: needs.filters.outputs.all_count > needs.filters.outputs.docs_count
uses: ./.github/workflows/build-snap.yaml
flake8:
needs: filters
if: needs.filters.outputs.all_count > needs.filters.outputs.docs_count
uses: ./.github/workflows/tox.yaml
with:
test_name: flake8
pylint:
needs: filters
if: needs.filters.outputs.all_count > needs.filters.outputs.docs_count
uses: ./.github/workflows/tox.yaml
with:
test_name: pylint
unit:
needs: [filters, setup, build_deb, build_snap, build_rpm]
if: needs.filters.outputs.all_count > needs.filters.outputs.docs_count
strategy:
matrix:
distro: ${{ fromJson(needs.setup.outputs.distro_matrix) }}
uses: ./.github/workflows/avocado.yaml
with:
distro_image: ${{ matrix.distro.image }}
distro_name: ${{ matrix.distro.name }}
builds: ${{ toJson(matrix.distro.builds) }}"
test_name: "unit_tests"
stage_name: "Unit"
stage_one:
needs: [filters, setup, build_deb, build_snap, build_rpm, unit]
if: needs.filters.outputs.all_count > needs.filters.outputs.docs_count
strategy:
matrix:
distro: ${{ fromJson(needs.setup.outputs.distro_matrix) }}
uses: ./.github/workflows/avocado.yaml
with:
distro_image: ${{ matrix.distro.image }}
distro_name: ${{ matrix.distro.name }}
builds: ${{ toJson(matrix.distro.builds) }}
test_name: "stageone_tests"
stage_name: "Stage One"
can_fail: true
secrets: inherit
stage_two:
needs: [filters, setup, build_deb, build_snap, build_rpm, stage_one]
if: needs.filters.outputs.all_count > needs.filters.outputs.docs_count
strategy:
matrix:
distro: ${{ fromJson(needs.setup.outputs.stagetwo_matrix) }}
uses: ./.github/workflows/avocado.yaml
with:
distro_image: ${{ matrix.distro.image }}
distro_name: ${{ matrix.distro.name }}
builds: ${{ toJson(matrix.distro.builds) }}
test_name: "stagetwo_tests"
stage_name: "Stage Two"
can_fail: true
secrets: inherit
foreman:
needs: [filters, setup, build_deb, stage_two]
if: needs.filters.outputs.foreman == 'true'
strategy:
matrix:
distro: ${{ fromJson(needs.setup.outputs.foreman_matrix) }}
uses: ./.github/workflows/avocado.yaml
with:
distro_image: ${{ matrix.distro.image }}
distro_name: ${{ matrix.distro.name }}
builds: ${{ toJson(matrix.distro.builds) }}
extra_script: ./tests/test_data/foreman_setup.sh
test_name: "foreman_tests"
stage_name: "Foreman"
foreman_ver: "3.15"
katello_ver: "4.17"
can_fail: true
secrets: inherit