From 75d8ac3b17dff161b5b914a2ea3ef3fa9ba31fdc Mon Sep 17 00:00:00 2001
From: Giuseppe <giuseppe.demarco@unical.it>
Date: Tue, 3 Aug 2021 10:07:31 +0200
Subject: [PATCH 1/2] chore: pypi CD with gh actions

---
 .github/workflows/pypi.yml | 65 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 .github/workflows/pypi.yml

diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml
new file mode 100644
index 000000000..5a6c25c06
--- /dev/null
+++ b/.github/workflows/pypi.yml
@@ -0,0 +1,65 @@
+name: Publish to PyPI and TestPyPI
+
+on:
+  release:
+    types:
+    - published
+
+jobs:
+  check_secrets:
+    name: Check secrets
+    runs-on: ubuntu-latest
+    outputs:
+      ALL: ${{ steps.pypi_api_token.outputs.is_set && steps.test_pypi_api_token.outputs.is_set }}
+      PYPI_API_TOKEN: ${{ steps.pypi_api_token.outputs.is_set }}
+      TEST_PYPI_API_TOKEN: ${{ steps.test_pypi_api_token.outputs.is_set }}
+    steps:
+    -
+      name: Check PYPI_API_TOKEN
+      id: pypi_api_token
+      run: |
+        echo "is_set: ${{ secrets.PYPI_API_TOKEN != '' }}"
+        echo "::set-output name=is_set::${{ secrets.PYPI_API_TOKEN != '' }}"
+    -
+      name: Check TEST_PYPI_API_TOKEN
+      id: test_pypi_api_token
+      run: |
+        echo "is_set: ${{ secrets.TEST_PYPI_API_TOKEN != '' }}"
+        echo "::set-output name=is_set::${{ secrets.TEST_PYPI_API_TOKEN != '' }}"
+  build_and_publish:
+    name: Build and publish
+    runs-on: ubuntu-latest
+    needs:
+    - check_secrets
+    steps:
+    -
+      name: Checkout
+      uses: actions/checkout@v2
+    -
+      name: Setup Python
+      uses: actions/setup-python@v2
+      with:
+        python-version: 3.8
+        architecture: x64
+    -
+      name: Build binary wheel and source tarball
+      run: |
+        python -m pip install wheel packaging
+        python setup.py sdist bdist_wheel
+    -
+      if: ${{ needs.check_secrets.outputs.TEST_PYPI_API_TOKEN == 'true' && github.event.release.prerelease }}
+      name: Publish to TestPyPI
+      uses: pypa/gh-action-pypi-publish@release/v1
+      with:
+        packages_dir: ./dist/
+        password: ${{ secrets.TEST_PYPI_API_TOKEN }}
+        repository_url: https://test.pypi.org/legacy/
+        verbose: true
+    -
+      if: ${{ needs.check_secrets.outputs.PYPI_API_TOKEN == 'true' && !github.event.release.prerelease }}
+      name: Publish to PyPI
+      uses: pypa/gh-action-pypi-publish@release/v1
+      with:
+        packages_dir: ./dist/
+        password: ${{ secrets.PYPI_API_TOKEN }}
+        verbose: true

From c47ef3c5611f1448739ca30461f783cae4f104b6 Mon Sep 17 00:00:00 2001
From: Giuseppe <giuseppe.demarco@unical.it>
Date: Tue, 3 Aug 2021 10:23:15 +0200
Subject: [PATCH 2/2] chore: CI with gh actions

---
 .github/workflows/python-app.yml |  59 ++++++++++++++++++
 .travis.yml                      | 102 -------------------------------
 2 files changed, 59 insertions(+), 102 deletions(-)
 create mode 100644 .github/workflows/python-app.yml
 delete mode 100644 .travis.yml

diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml
new file mode 100644
index 000000000..3a5240018
--- /dev/null
+++ b/.github/workflows/python-app.yml
@@ -0,0 +1,59 @@
+# This workflow will install Python dependencies, run tests and lint with a single version of Python
+# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
+
+name: pysaml2
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+
+jobs:
+  build:
+
+    runs-on: ubuntu-latest
+
+    strategy:
+      fail-fast: false
+      matrix:
+        python-version:
+          - '3.6'
+          - '3.7'
+          - '3.8'
+          - '3.9'
+          - '3.10-dev'
+          - 'pypy3'
+        mongodb-version:
+          - '4.4'
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up Python ${{ matrix.python-version }}
+      uses: actions/setup-python@v2
+      with:
+        python-version: ${{ matrix.python-version }}
+    - name: Install system dependencies
+      run: |
+        sudo apt-get update && sudo apt-get install xmlsec1
+        python -m pip install --upgrade pip tox rstcheck setuptools codecov pytest-cov flake8
+    - name: Install python dependencies
+      run: |
+        python -m pip install --upgrade pip
+        if [ -f tests/test-requirements.txt ]; then pip install -r tests/test-requirements.txt; fi
+        python setup.py install
+    - name: Lint with flake8
+      run: |
+        # stop the build if there are Python syntax errors or undefined names
+        flake8 ./src --count --select=E9,F63,F7,F82 --show-source --statistics
+        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
+        flake8 ./src --count --exit-zero --statistics
+
+    - name: Start MongoDB
+      uses: supercharge/mongodb-github-action@1.6.0
+      with:
+        mongodb-version: ${{ matrix.mongodb-version }}
+
+    - name: PySAML2 tests
+      run: |
+        pytest --cov=saml2 tests
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index b9aae06fc..000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,102 +0,0 @@
-os: linux
-dist: bionic
-language: python
-
-services:
-  - mongodb
-
-before_install:
-  - sudo apt-get install -y xmlsec1
-
-install:
-  - pip install tox
-  - pip install tox-travis
-
-script:
-  - tox
-
-jobs:
-  allow_failures:
-    - python: 3.10-dev
-    - python: pypy3
-  include:
-    - python: 3.6
-    - python: 3.7
-    - python: 3.8
-    - python: 3.9
-    - python: 3.10-dev
-    - python: pypy3
-
-    - stage: Expose env-var information
-      script: |
-        cat <<EOF
-        TRAVIS_BUILD_ID: $TRAVIS_BUILD_ID
-        TRAVIS_BUILD_STAGE_NAME: $TRAVIS_BUILD_STAGE_NAME
-        TRAVIS_BUILD_NUMBER: $TRAVIS_BUILD_NUMBER
-        TRAVIS_BUILD_WEB_URL: $TRAVIS_BUILD_WEB_URL
-
-        TRAVIS_JOB_ID: $TRAVIS_JOB_ID
-        TRAVIS_JOB_NAME: $TRAVIS_JOB_NAME
-        TRAVIS_JOB_NUMBER: $TRAVIS_JOB_NUMBER
-        TRAVIS_JOB_WEB_URL: $TRAVIS_JOB_WEB_URL
-
-        TRAVIS_DIST: $TRAVIS_DIST
-        TRAVIS_OS_NAME: $TRAVIS_OS_NAME
-        TRAVIS_CPU_ARCH: $TRAVIS_CPU_ARCH
-        TRAVIS_PYTHON_VERSION: $TRAVIS_PYTHON_VERSION
-        TRAVIS_SECURE_ENV_VARS: $TRAVIS_SECURE_ENV_VARS
-
-        TRAVIS_EVENT_TYPE: $TRAVIS_EVENT_TYPE
-        TRAVIS_REPO_SLUG: $TRAVIS_REPO_SLUG
-        TRAVIS_BRANCH: $TRAVIS_BRANCH
-        TRAVIS_COMMIT: $TRAVIS_COMMIT
-        TRAVIS_COMMIT_RANGE: $TRAVIS_COMMIT_RANGE
-        TRAVIS_TAG: $TRAVIS_TAG
-        TRAVIS_PULL_REQUEST: $TRAVIS_PULL_REQUEST
-        TRAVIS_PULL_REQUEST_BRANCH: $TRAVIS_PULL_REQUEST_BRANCH
-        TRAVIS_PULL_REQUEST_SHA: $TRAVIS_PULL_REQUEST_SHA
-        TRAVIS_PULL_REQUEST_SLUG: $TRAVIS_PULL_REQUEST_SLUG
-        EOF
-
-    - stage: Deploy new pre-release on PyPI
-      if: type = push
-      before_install: skip
-      install: skip
-      script:
-        - read -r CURRENT_VERSION <VERSION
-        - printf -- '%s-%s\n' "${CURRENT_VERSION}" "${TRAVIS_BUILD_NUMBER}" >VERSION
-      deploy:
-        - provider: pypi
-          distributions: sdist bdist_wheel
-          server: "https://test.pypi.org/legacy/"
-          skip_cleanup: true
-          username: "__token__"
-          password: "$PYPI_PRE_RELEASE_TOKEN"
-          on:
-            repo: IdentityPython/pysaml2
-
-    - stage: Deploy new release on PyPI
-      if: type = push AND tag IS present
-      before_install: skip
-      install: skip
-      script: skip
-      deploy:
-        - provider: pypi
-          distributions: sdist bdist_wheel
-          username: "__token__"
-          password: "$PYPI_RELEASE_TOKEN"
-          on:
-            repo: IdentityPython/pysaml2
-            tags: true
-
-    - stage: Deploy new release on GitHub
-      if: type = push AND tag IS present
-      before_install: skip
-      install: skip
-      script: skip
-      deploy:
-        - provider: releases
-          token: "$GITHUB_RELEASE_TOKEN"
-          on:
-            repo: IdentityPython/pysaml2
-            tags: true