GH Actions #220
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: GH Actions | |
on: | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
static-checks: | |
name: Static checks | |
runs-on: ubuntu-20.04 | |
container: | |
image: quay.io/avocado-framework/avocado-ci-fedora-38 | |
steps: | |
- run: echo "Job triggered by a ${{ github.event_name }} event on branch is ${{ github.ref }} in repository is ${{ github.repository }}, runner on ${{ runner.os }}" | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Allow git to operate on directory checked out by GH Actions | |
run: git config --global --add safe.directory `pwd` | |
- name: Installing Avocado development dependencies | |
run: make requirements-dev | |
- name: Installing Avocado in develop mode | |
run: python3 setup.py develop --user | |
- name: Run static checks | |
env: | |
COMMIT_COUNT: ${{ github.event.pull_request.commits }} | |
run: python3 setup.py test --select=static-checks | |
- name: Archive failed tests logs | |
if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: static-checks-logs | |
path: /home/runner/avocado/job-results/ | |
retention-days: 1 | |
- run: echo "🥑 This job's status is ${{ job.status }}." | |
# Checks that Python packages builds succeeds | |
package-build: | |
name: Build Package (wheel/tarball) for Python ${{ matrix.python-version }} | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
python-version: [3.8, 3.9, 3.10.0, 3.11, 3.12.0] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install setuptools on Python 3.12 | |
run: python3 -c 'import setuptools' || python3 -m pip install setuptools | |
- name: Build tarballs and wheels | |
run: make -f Makefile.gh build-wheel check-wheel | |
- name: Save tarballs and wheels as artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: tarballs_and_wheels-${{ matrix.python-version }} | |
path: ${{github.workspace}}/PYPI_UPLOAD/ | |
retention-days: 1 | |
- run: echo "🥑 This job's status is ${{ job.status }}." | |
egg-build: | |
name: Build Egg for Python ${{ matrix.python-version }} | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
python-version: [3.8, 3.9, 3.10.0, 3.11, 3.12.0] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install setuptools on Python 3.12 | |
run: python3 -c 'import setuptools' || python3 -m pip install setuptools | |
- name: Build eggs | |
run: make -f Makefile.gh build-egg | |
- name: Save eggs as artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eggs-${{ matrix.python-version }} | |
path: ${{github.workspace}}/EGG_UPLOAD/ | |
retention-days: 1 | |
- run: echo "🥑 This job's status is ${{ job.status }}." | |
experimental-checks: | |
name: Experimental checks | |
runs-on: ubuntu-20.04 | |
steps: | |
- run: echo "Job triggered by a ${{ github.event_name }} event on branch is ${{ github.ref }} in repository is ${{ github.repository }}, runner on ${{ runner.os }}" | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Run Codespell Check | |
run: make -f Makefile.gh codespell | |
- name: Run bandit check | |
run: make -f Makefile.gh bandit | |
continue-on-error: True | |
- name: Save bandit output as artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: bandit-results | |
path: /home/runner/work/avocado/avocado/bandit-output.txt | |
retention-days: 1 | |
- run: echo "🥑 This job's status is ${{ job.status }}." | |
version_task_fedora_37: | |
name: Version task fedora:37 | |
runs-on: ubuntu-20.04 | |
container: | |
image: fedora:37 | |
steps: | |
- name: Install Python dependencies | |
run: dnf -y install python3 python3-setuptools | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Install and run avocado --version | |
run: | | |
python3 setup.py develop --user | |
python3 -m avocado --version | |
version_task_fedora_38: | |
name: Version task fedora:38 | |
runs-on: ubuntu-20.04 | |
container: | |
image: fedora:38 | |
steps: | |
- name: Install Python dependencies | |
run: dnf -y install python3-setuptools | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Install and run avocado --version | |
run: | | |
python3 setup.py develop --user | |
python3 -m avocado --version | |
version_task_ubi_8: | |
name: Version task ubi:8.8 | |
runs-on: ubuntu-20.04 | |
container: | |
image: registry.access.redhat.com/ubi8/ubi:8.8 | |
steps: | |
- name: Install Python dependencies | |
run: dnf -y install python3.11 python3.11-setuptools python3.11-setuptools-rust | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Install and run avocado --version | |
run: | | |
python3 setup.py develop --user | |
python3 -m avocado --version | |
version_task_ubi_9: | |
name: Version task ubi:9.2 | |
runs-on: ubuntu-20.04 | |
container: | |
image: registry.access.redhat.com/ubi9/ubi:9.2 | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Install and run avocado --version | |
run: | | |
python3 setup.py develop --user | |
python3 -m avocado --version | |
version_task_debian_12: | |
name: Version task debian:12.4 | |
runs-on: ubuntu-20.04 | |
container: | |
image: debian:12.4 | |
steps: | |
- name: Install Python dependencies | |
run: apt update && apt -y install python3 python3-setuptools | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Install and run avocado --version | |
run: | | |
python3 setup.py develop --user | |
python3 -m avocado --version | |
version_task_debian_11: | |
name: Version task debian:11.0 | |
runs-on: ubuntu-20.04 | |
container: | |
image: debian:11.0 | |
steps: | |
- name: Install Python dependencies | |
run: apt update && apt -y install python3 python3-setuptools | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Install and run avocado --version | |
run: | | |
python3 setup.py develop --user | |
python3 -m avocado --version | |
version_task_ubuntu_22: | |
name: Version task ubuntu:22.04 | |
runs-on: ubuntu-20.04 | |
container: | |
image: ubuntu:22.04 | |
steps: | |
- name: Install Python dependencies | |
run: apt update && apt -y install python3 python3-setuptools ca-certificates | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Install and run avocado --version | |
run: | | |
python3 setup.py develop --user | |
python3 -m avocado --version | |
version_task_ubuntu_20: | |
name: Version task ubuntu:20.04 | |
runs-on: ubuntu-20.04 | |
container: | |
image: ubuntu:20.04 | |
steps: | |
- name: Install Python dependencies | |
run: apt update && apt -y install python3 python3-setuptools ca-certificates | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Install and run avocado --version | |
run: | | |
python3 setup.py develop --user | |
python3 -m avocado --version | |
egg_task_fedora_37: | |
name: Egg task fedora:37 | |
runs-on: ubuntu-20.04 | |
container: | |
image: fedora:37 | |
steps: | |
- name: Install Python dependencies | |
run: dnf -y install python3 python3-setuptools | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Test running avocado from eggs | |
run: | | |
python3 setup.py bdist_egg | |
mv dist/avocado_framework-*egg /tmp | |
python3 setup.py clean --all | |
python3 -c 'import sys; import glob; sys.path.insert(0, glob.glob("/tmp/avocado_framework-*.egg")[0]); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
cd /tmp | |
python3 -c 'import sys; from pkg_resources import require; require("avocado-framework"); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
egg_task_fedora_38: | |
name: Egg task fedora:38 | |
runs-on: ubuntu-20.04 | |
container: | |
image: fedora:38 | |
steps: | |
- name: Install Python dependencies | |
run: dnf -y install python3-setuptools | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Test running avocado from eggs | |
run: | | |
python3 setup.py bdist_egg | |
mv dist/avocado_framework-*egg /tmp | |
python3 setup.py clean --all | |
python3 -c 'import sys; import glob; sys.path.insert(0, glob.glob("/tmp/avocado_framework-*.egg")[0]); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
cd /tmp | |
python3 -c 'import sys; from pkg_resources import require; require("avocado-framework"); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
egg_task_ubi_8: | |
name: Egg task ubi:8.8 | |
runs-on: ubuntu-20.04 | |
container: | |
image: registry.access.redhat.com/ubi8/ubi:8.8 | |
steps: | |
- name: Install Python dependencies | |
run: dnf -y install python38 python38-setuptools | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Test running avocado from eggs | |
run: | | |
python3 setup.py bdist_egg | |
mv dist/avocado_framework-*egg /tmp | |
python3 setup.py clean --all | |
python3 -c 'import sys; import glob; sys.path.insert(0, glob.glob("/tmp/avocado_framework-*.egg")[0]); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
cd /tmp | |
python3 -c 'import sys; from pkg_resources import require; require("avocado-framework"); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
egg_task_ubi_9: | |
name: Egg task ubi:9.2 | |
runs-on: ubuntu-20.04 | |
container: | |
image: registry.access.redhat.com/ubi9/ubi:9.2 | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Test running avocado from eggs | |
run: | | |
python3 setup.py bdist_egg | |
mv dist/avocado_framework-*egg /tmp | |
python3 setup.py clean --all | |
python3 -c 'import sys; import glob; sys.path.insert(0, glob.glob("/tmp/avocado_framework-*.egg")[0]); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
cd /tmp | |
python3 -c 'import sys; from pkg_resources import require; require("avocado-framework"); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
egg_task_debian_12: | |
name: Egg task debian:12.4 | |
runs-on: ubuntu-20.04 | |
container: | |
image: debian:12.4 | |
steps: | |
- name: Install Python dependencies | |
run: apt update && apt -y install python3 python3-setuptools | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Test running avocado from eggs | |
run: | | |
python3 setup.py bdist_egg | |
mv dist/avocado_framework-*egg /tmp | |
python3 setup.py clean --all | |
python3 -c 'import sys; import glob; sys.path.insert(0, glob.glob("/tmp/avocado_framework-*.egg")[0]); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
cd /tmp | |
python3 -c 'import sys; from pkg_resources import require; require("avocado-framework"); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
egg_task_debian_11: | |
name: Egg task debian:11.0 | |
runs-on: ubuntu-20.04 | |
container: | |
image: debian:11.0 | |
steps: | |
- name: Install Python dependencies | |
run: apt update && apt -y install python3 python3-setuptools | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Test running avocado from eggs | |
run: | | |
python3 setup.py bdist_egg | |
mv dist/avocado_framework-*egg /tmp | |
python3 setup.py clean --all | |
python3 -c 'import sys; import glob; sys.path.insert(0, glob.glob("/tmp/avocado_framework-*.egg")[0]); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
cd /tmp | |
python3 -c 'import sys; from pkg_resources import require; require("avocado-framework"); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
egg_task_ubuntu_22: | |
name: Egg task ubuntu:22.04 | |
runs-on: ubuntu-20.04 | |
container: | |
image: ubuntu:22.04 | |
steps: | |
- name: Install Python dependencies | |
run: apt update && apt -y install python3 python3-setuptools | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Test running avocado from eggs | |
run: | | |
python3 setup.py bdist_egg | |
mv dist/avocado_framework-*egg /tmp | |
python3 setup.py clean --all | |
python3 -c 'import sys; import glob; sys.path.insert(0, glob.glob("/tmp/avocado_framework-*.egg")[0]); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
cd /tmp | |
python3 -c 'import sys; from pkg_resources import require; require("avocado-framework"); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
egg_task_ubuntu_20: | |
name: Egg task ubuntu:20.04 | |
runs-on: ubuntu-20.04 | |
container: | |
image: ubuntu:20.04 | |
steps: | |
- name: Install Python dependencies | |
run: apt update && apt -y install python3 python3-setuptools | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Test running avocado from eggs | |
run: | | |
python3 setup.py bdist_egg | |
mv dist/avocado_framework-*egg /tmp | |
python3 setup.py clean --all | |
python3 -c 'import sys; import glob; sys.path.insert(0, glob.glob("/tmp/avocado_framework-*.egg")[0]); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
cd /tmp | |
python3 -c 'import sys; from pkg_resources import require; require("avocado-framework"); from avocado.core.main import main; sys.exit(main())' run /bin/true | |
podman_egg_task: | |
name: Podman Egg task | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Test running avocado from eggs under Podman spawner | |
run: | | |
apt update && apt -y install python3 python3-setuptools | |
python3 setup.py bdist_egg | |
mv dist/avocado_framework-*egg /tmp/avocado_framework.egg | |
python3 setup.py clean --all | |
python3 -c 'import sys; sys.path.insert(0, "/tmp/avocado_framework.egg"); from avocado.core.main import main; sys.exit(main())' run --spawner=podman --spawner-podman-image=fedora:38 --spawner-podman-avocado-egg=file:///tmp/avocado_framework.egg -- /bin/true | |
podman_external_runner_task: | |
name: Podman spawner with 3rd party runner plugin | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Test running avocado from released eggs under Podman spawner with 3rd party plugins | |
run: | | |
apt update && apt -y install python3 python3-setuptools | |
python3 setup.py develop --user | |
cd examples/plugins/tests/magic | |
python3 setup.py develop --user | |
cd ../../../../ | |
python3 -m avocado -V list -- magic:pass magic:fail | grep "magic: 2" | |
podman pull quay.io/avocado-framework/avocado-ci-magic | |
python3 -m avocado run --spawner=podman --spawner-podman-image=quay.io/avocado-framework/avocado-ci-magic -- magic:pass | |
tail -n1 ~/avocado/job-results/latest/results.tap | grep "ok 1 magic:pass" | |
python3 -m avocado run --spawner=podman --spawner-podman-image=quay.io/avocado-framework/avocado-ci-magic -- magic:fail || true | |
tail -n1 ~/avocado/job-results/latest/results.tap | grep "not ok 1 magic:fail" | |
fedora_develop_install_uninstall_task: | |
name: Fedora develop install/uninstall task | |
runs-on: ubuntu-latest | |
container: | |
image: fedora:38 | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Test avocado install/uninstall | |
run: | | |
python3 -c 'import setuptools' || dnf -y install python3 python3-setuptools | |
python3 setup.py develop --user | |
test `python3 -m avocado plugins | grep ^html | wc -l` -eq "3" | |
test `python3 -m avocado plugins | grep ^robot | wc -l` -eq "2" | |
python3 setup.py develop --user --uninstall | |
python3 setup.py clean --all | |
python3 setup.py develop --user --skip-optional-plugins | |
python3 -m avocado --version | |
test `python3 -m avocado plugins | grep ^html | wc -l` -eq "0" | |
test `python3 -m avocado plugins | grep ^robot | wc -l` -eq "0" |