From 97e3b34fb195f4977f68adc8d927d00b911531c4 Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Wed, 13 Sep 2023 11:47:45 +0200 Subject: [PATCH] Replace travis CI with GitHub Actions --- .github/workflows/github-actions.yml | 80 ++++++++++++++++++++++++++++ .travis.yml | 67 ----------------------- tox.ini | 74 +++++++++++++++---------- 3 files changed, 126 insertions(+), 95 deletions(-) create mode 100644 .github/workflows/github-actions.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml new file mode 100644 index 0000000..588b236 --- /dev/null +++ b/.github/workflows/github-actions.yml @@ -0,0 +1,80 @@ +name: django-cas-server +run-name: ${{ github.actor }} is running django-cas-server CI tests +on: [push] +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true +jobs: + flake8: + runs-on: ubuntu-latest + container: + image: python:bookworm + steps: + - uses: actions/checkout@v3 + - run: pip install tox + - run: tox -e flake8 + check_rst: + runs-on: ubuntu-latest + container: + image: python:bookworm + steps: + - uses: actions/checkout@v3 + - run: pip install tox + - run: tox -e check_rst + coverage: + runs-on: ubuntu-latest + container: + image: python:bookworm + steps: + - uses: actions/checkout@v3 + - run: pip install tox + - run: tox -e coverage + env: + COVERAGE_TOKEN: ${{ secrets.COVERAGE_TOKEN }} + tests: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + arch: ["amd64", "ppc64le"] + tox: + # REHL 7 support and Ubuntu bionic + - python: "3.6" + env: "py36-django111" + # RHEL 8 support + - python: "3.6" + env: "py36-django22" + # Debian buster support + - python: "3.7" + env: "py37-django111" + # Ubuntu focal support + - python: "3.8" + env: "py38-django22" + # Debian bullseye + - python: "3.9" + env: py39-django22 + # Ubuntu jammy + - python: "3.10" + env: "py310-django32" + # Debian bookworm + - python: "3.11" + env: py311-django32 + # Django additional supported version + - python: "3.9" + env: py39-django42 + - python: "3.10" + env: py310-django42 + - python: "3.11" + env: py311-django42 + steps: + - uses: actions/checkout@v3 + - if: matrix.arch != 'amd64' + name: "Install docker multiarch support" + run: | + sudo apt-get update -y + sudo apt-get install -y qemu qemu-user-static + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes --credential yes + - name: "Check docker arch ${{ matrix.arch }} support" + run: sudo docker run --platform linux/${{ matrix.arch }} --rm ${{ matrix.arch }}/python:${{ matrix.tox.python }} /bin/bash -c "echo -n \"Running with arch \"; uname -m;" + - name: "Run tests on arch ${{ matrix.arch }}" + run: sudo docker run --platform linux/${{ matrix.arch }} --rm -v $(pwd):$(pwd) ${{ matrix.arch }}/python:${{ matrix.tox.python }} /bin/bash -c "cd $(pwd); uname -m; pip install tox; tox -e ${{ matrix.tox.env }}" diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index f41ca1c..0000000 --- a/.travis.yml +++ /dev/null @@ -1,67 +0,0 @@ -dist: focal -language: python -matrix: - include: - # generic checks - - python: "3.9" - env: TOX_ENV=flake8 - - python: "3.9" - env: TOX_ENV=check_rst - - python: "3.9" - env: TOX_ENV=coverage - # REHL 7 support and Ubuntu bionic - - python: "3.6" - env: TOX_ENV=py36-django111 - - python: "3.6" - env: TOX_ENV=py36-django111 - arch: ppc64le - # RHEL 8 support - - python: "3.6" - env: TOX_ENV=py36-django22 - - python: "3.6" - env: TOX_ENV=py36-django22 - arch: ppc64le - # Debian buster support - - python: "3.7" - env: TOX_ENV=py37-django111 - - python: "3.7" - env: TOX_ENV=py37-django111 - arch: ppc64le - # Ubuntu focal and Ubuntu groovy support - - python: "3.8" - env: TOX_ENV=py38-django22 - - python: "3.8" - env: TOX_ENV=py38-django22 - arch: ppc64le - # Debian bullseye and Ubuntu hirsute and impish support - - python: "3.9" - env: TOX_ENV=py39-django22 - - python: "3.9" - env: TOX_ENV=py39-django22 - arch: ppc64le - # Ubuntu jammy and kinetic support - - python: "3.10" - env: TOX_ENV=py310-django32 - - python: "3.10" - env: TOX_ENV=py310-django32 - arch: ppc64le - # Django additional supported version - - python: "3.9" - env: TOX_ENV=py39-django32 - - python: "3.10" - env: TOX_ENV=py310-django40 - - python: "3.10" - env: TOX_ENV=py310-django41 - -cache: - directories: - - $HOME/.cache/pip/http/ - - $HOME/build/nitmir/django-cas-server/.tox/$TOX_ENV/ -install: - - travis_retry pip install setuptools --upgrade - - pip install tox $PKGS - - pip freeze -script: - - tox -e $TOX_ENV -after_script: - - cat tox_log/*.log diff --git a/tox.ini b/tox.ini index 8838364..66e8223 100644 --- a/tox.ini +++ b/tox.ini @@ -8,6 +8,7 @@ envlist= py3-django32, py3-django40, py3-django41, + py3-django42, ################## # generic config # @@ -16,6 +17,7 @@ envlist= [flake8] max-line-length=100 exclude=migrations +allowlist_externals={[post_cmd]allowlist_external} [base] deps = @@ -26,16 +28,18 @@ commands= find {toxworkdir} -name '*.pyc' -delete mkdir -p {toxinidir}/tox_logs/ bash -c "mv {toxworkdir}/{envname}/log/* {toxinidir}/tox_logs/" -whitelist_externals= +allowlist_externals= find bash mkdir [testenv] +setenv= + PYTHONWARNINGS=always commands= py.test -rw {posargs:cas_server/tests/} {[post_cmd]commands} -whitelist_externals={[post_cmd]whitelist_externals} +allowlist_externals={[post_cmd]allowlist_externals} ################### # genercic checks # @@ -48,7 +52,7 @@ skip_install=True commands= flake8 {toxinidir}/cas_server {[post_cmd]commands} -whitelist_externals={[post_cmd]whitelist_externals} +allowlist_externals={[post_cmd]allowlist_externals} [testenv:check_rst] basepython=python3 @@ -60,7 +64,7 @@ commands= rst2html.py --strict {toxinidir}/README.rst /dev/null rst2html.py --halt=warning {toxinidir}/CHANGELOG.rst /dev/null {[post_cmd]commands} -whitelist_externals={[post_cmd]whitelist_externals} +allowlist_externals={[post_cmd]allowlist_externals} [testenv:coverage] basepython=python3 @@ -75,9 +79,13 @@ deps= skip_install=True commands= py.test --cov=cas_server --cov-report term --cov-report html + git config --global --add safe.directory "{toxinidir}" {toxinidir}/.update_coverage "{toxinidir}" "django-cas-server" {[post_cmd]commands} -whitelist_externals={[post_cmd]whitelist_externals} +allowlist_externals= + {toxinidir}/.update_coverage + git + {[post_cmd]allowlist_externals} #################### @@ -130,6 +138,12 @@ deps = Django>=4.1,<4.2 {[base]deps} +[testenv:py3-django42] +basepython=python3 +deps = + Django>=4.2,<4.3 + {[base]deps} + ######################### # Debian strech support # ######################### @@ -170,9 +184,9 @@ deps = Django>=1.11,<1.12 {[base]deps} -########################################## -# Ubuntu focal and Ubuntu groovy support # -########################################## +######################## +# Ubuntu focal support # +######################## [testenv:py38-django22] basepython=python3.8 @@ -180,9 +194,9 @@ deps = Django>=2.2,<3.0 {[base]deps} -######################################################### -# Debian bullseye and Ubuntu hirsute and impish support # -######################################################### +################### +# Debian bullseye # +################### [testenv:py39-django22] basepython=python3.9 @@ -190,9 +204,9 @@ deps = Django>=2.2,<3.0 {[base]deps} -#################################### -# Ubuntu jammy and kinetic support # -#################################### +################ +# Ubuntu jammy # +################ [testenv:py310-django32] basepython=python3.10 @@ -201,31 +215,35 @@ deps = {[base]deps} +########################### +# Debian bookworm support # +########################### + +[testenv:py311-django32] +basepython=python3.11 +deps = + Django>=3.2,<3.3 + {[base]deps} + + ####################################### # Django additional supported version # ####################################### -[testenv:py39-django31] +[testenv:py39-django42] basepython=python3.9 deps = - Django>=3.1,<3.2 + Django>=4.2,<4.3 {[base]deps} - -[testenv:py39-django32] -basepython=python3.9 -deps = - Django>=3.2,<3.3 - {[base]deps} - -[testenv:py310-django40] +[testenv:py310-django42] basepython=python3.10 deps = - Django>=4.0,<4.1 + Django>=4.2,<4.3 {[base]deps} -[testenv:py310-django41] -basepython=python3.10 +[testenv:py311-django42] +basepython=python3.11 deps = - Django>=4.1,<4.2 + Django>=4.2,<4.3 {[base]deps}