name: 'build and installation tests' on: pull_request: branches: ['master'] paths-ignore: - 'AUTHORS' - 'COPYING' - 'NEWS' - 'README.md' - 'doc/**' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: rpmbuild: name: 'rpmbuild test' runs-on: 'ubuntu-latest' strategy: fail-fast: false matrix: # Testing per python-version using actions/setup-python is not possible, # because rpm doesn't exist on pypi and cannot be installed via pip on ubuntu. # That's why we're going to test on the target distros directly. container: # Fedora - 'registry.fedoraproject.org/fedora:36' - 'registry.fedoraproject.org/fedora:rawhide' # OpenSUSE # leap < 15.2 doesn't contain git-lfs which causes actions/checkout to fail - 'registry.opensuse.org/opensuse/leap:15.3' - 'registry.opensuse.org/opensuse/leap:15.4' - 'registry.opensuse.org/opensuse/tumbleweed' # CentOS Stream - 'quay.io/centos/centos:stream9' container: image: ${{ matrix.container }} steps: - name: 'Install packages (OpenSUSE)' if: ${{ contains(matrix.container, '/opensuse/') }} run: | zypper -n modifyrepo --disable repo-openh264 || : zypper -n --gpg-auto-import-keys refresh zypper -n lr --details zypper -n dist-upgrade zypper -n install git-lfs rpm-build - name: 'Install packages (Fedora/CentOS)' if: ${{ contains(matrix.container, '/fedora:') || contains(matrix.container, '/centos:') }} run: | dnf -y makecache dnf -y distro-sync dnf -y install git-lfs rpm-build dnf-plugins-core - uses: actions/checkout@v3 with: fetch-depth: 0 - name: 'Install build dependencies (OpenSUSE)' if: ${{ contains(matrix.container, '/opensuse/') }} run: | zypper --non-interactive install $(rpmspec -q --buildrequires contrib/osc.spec) - name: 'Install build dependencies (Fedora/CentOS)' if: ${{ contains(matrix.container, '/fedora:') || contains(matrix.container, '/centos:') }} run: | dnf -y builddep contrib/osc.spec - name: 'Build SRPM and RPMs' run: | git config --global --add safe.directory "$(pwd)" git remote add upstream https://github.com/openSUSE/osc.git git fetch upstream --tags --force ./contrib/build_rpm.py --srpm --rpm - name: 'Install built RPMs (OpenSUSE)' if: ${{ contains(matrix.container, '/opensuse/') }} run: | zypper --non-interactive install --force --allow-vendor-change --allow-unsigned-rpm ./contrib/*/*.rpm - name: 'Install build RPMs (Fedora/CentOS)' if: ${{ contains(matrix.container, '/fedora:') || contains(matrix.container, '/centos:') }} run: | dnf -y install ./contrib/*/*.rpm - name: 'Run installed osc' run: | osc --help pip: name: 'pip install test' runs-on: 'ubuntu-latest' strategy: fail-fast: false steps: - name: 'Install packages' run: | sudo apt-get -y update sudo apt-get -y upgrade sudo apt-get -y --no-install-recommends install git python3-pip python3-rpm - uses: actions/checkout@v3 - name: 'Install osc from pip' run: | pip config set global.break-system-packages 1 pip3 install . - name: 'Run installed osc' run: | osc --help