Python 3.6 CI #494
Workflow file for this run
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: CI | |
on: | |
push: | |
branches: | |
- "main" | |
pull_request: | |
jobs: | |
format: | |
name: Ensure code is properly formatted | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pypoetry/virtualenvs | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- run: | | |
pip install --upgrade poetry nox nox-poetry | |
nox -s format -- --check | |
generate_requirements: | |
name: Generate requirements.txt for python 3.6 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pypoetry/virtualenvs | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- run: | | |
pipx install poetry | |
poetry export --with=dev --without-hashes > requirements.txt | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: requirements | |
path: requirements.txt | |
if-no-files-found: error | |
ci_36: | |
name: Run the integration tests for Python 3.6 | |
runs-on: ubuntu-20.04 | |
needs: generate_requirements | |
strategy: | |
fail-fast: false | |
matrix: | |
container_runtime: ["podman", "docker"] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.6 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: requirements | |
path: . | |
- run: pip install -r test-requirements.txt | |
- run: | | |
export CUR_USER="$(whoami)" | |
sudo loginctl enable-linger ${CUR_USER} | |
- run: | | |
mkdir ./tmp/ | |
chmod 1777 ./tmp | |
export TMPDIR="$(pwd)/tmp" | |
pytest -vv -- -x -n auto --reruns 3 --pytest-container-log-level DEBUG | |
pytest -vv -- -x --reruns 3 --pytest-container-log-level DEBUG | |
# nox -s coverage | |
- name: verify that no stray containers are left | |
run: | | |
[[ $(${{ matrix.container_runtime }} ps -aq|wc -l) = "0" ]] | |
- name: verify that no stray volumes are left | |
run: | | |
[[ $(${{ matrix.container_runtime }} volume ls -q|wc -l) = "0" ]] | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: true | |
ci: | |
name: Run the integration tests | |
runs-on: "ubuntu-latest" | |
strategy: | |
fail-fast: false | |
matrix: | |
python_version: ["3.7", "3.8", "3.9", "3.10", "3.11"] | |
container_runtime: ["podman", "docker"] | |
update_runtime: [ true, false ] | |
exclude: | |
- container_runtime: "docker" | |
python_version: "3.7" | |
update_runtime: true | |
- container_runtime: "docker" | |
python_version: "3.8" | |
update_runtime: true | |
- container_runtime: "docker" | |
python_version: "3.9" | |
update_runtime: true | |
- container_runtime: "docker" | |
python_version: "3.10" | |
update_runtime: true | |
- container_runtime: "docker" | |
python_version: "3.11" | |
update_runtime: true | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python_version }} | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.nox | |
key: nox-${{ matrix.python_version }}-${{ hashFiles('poetry.lock') }} | |
- run: pip install --upgrade nox poetry nox-poetry | |
- name: update the container runtime | |
if: ${{ matrix.update_runtime }} | |
run: | | |
sudo mkdir -p /etc/apt/keyrings | |
curl -fsSL https://download.opensuse.org/repositories/devel:kubic:libcontainers:unstable/xUbuntu_$(lsb_release -rs)/Release.key \ | |
| gpg --dearmor \ | |
| sudo tee /etc/apt/keyrings/devel_kubic_libcontainers_unstable.gpg > /dev/null | |
echo \ | |
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/devel_kubic_libcontainers_unstable.gpg]\ | |
https://download.opensuse.org/repositories/devel:kubic:libcontainers:unstable/xUbuntu_$(lsb_release -rs)/ /" \ | |
| sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:unstable.list > /dev/null | |
sudo apt-get update -qq | |
sudo apt-get -qq -y install podman buildah | |
- run: | | |
export CUR_USER="$(whoami)" | |
sudo loginctl enable-linger ${CUR_USER} | |
- run: | | |
mkdir ./tmp/ | |
chmod 1777 ./tmp | |
export TMPDIR="$(pwd)/tmp" | |
nox -s "test-${{ matrix.python_version }}(${{ matrix.container_runtime }})" -- -x -n auto --reruns 3 --pytest-container-log-level DEBUG | |
nox -s "test-${{ matrix.python_version }}(${{ matrix.container_runtime }})" -- -x --reruns 3 --pytest-container-log-level DEBUG | |
nox -s coverage | |
- name: verify that no stray containers are left | |
run: | | |
[[ $(${{ matrix.container_runtime }} ps -aq|wc -l) = "0" ]] | |
- name: verify that no stray volumes are left | |
run: | | |
[[ $(${{ matrix.container_runtime }} volume ls -q|wc -l) = "0" ]] | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: true | |
build: | |
name: Build the package | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.x" | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pypoetry/virtualenvs | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- name: Run the build | |
run: | | |
pip install --upgrade poetry | |
poetry install | |
poetry build | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: wheel | |
path: dist/pytest_container*whl | |
if-no-files-found: error | |
install: | |
name: Install the package | |
runs-on: ${{ matrix.os_version }} | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
os_version: ["ubuntu-latest"] | |
python_version: ["3.7", "3.8", "3.9", "3.10", "3.11"] | |
include: | |
- os_version: "ubuntu-20.04" | |
python_version: "3.6" | |
steps: | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python_version }} | |
- uses: actions/download-artifact@v3 | |
with: | |
name: wheel | |
path: dist | |
- name: install the wheel | |
run: pip install --user dist/pytest_container*whl | |
- name: run a smoke test that the package has been installed | |
run: python -c "import pytest_container; print (pytest_container.__name__)" | |
documentation: | |
name: Build the documentation | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.tox | |
key: tox-${{ hashFiles('poetry.lock') }} | |
- run: pip install --upgrade nox poetry nox-poetry | |
- run: nox -s doc | |
- name: upload the build directory | |
uses: actions/upload-artifact@v3 | |
with: | |
name: build | |
path: ./build/html | |
deploy: | |
name: deploy to the gh-pages branch | |
runs-on: ubuntu-latest | |
needs: documentation | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build | |
path: ./build | |
- run: touch ./build/.nojekyll | |
- name: deploy to github pages | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
branch: gh-pages | |
folder: build | |
lint: | |
name: Lint the source code | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.tox | |
key: tox-${{ hashFiles('poetry.lock') }} | |
- run: pip install --upgrade nox poetry nox-poetry | |
- run: nox -s lint |