1name: CI
2on:
3  pull_request: {}
4  push: {}
5
6jobs:
7  linux:
8    runs-on: ubuntu-latest
9    strategy:
10      matrix:
11        PYTHON:
12          # Base builds
13          - {VERSION: "2.7", TOXENV: "py27"}
14          - {VERSION: "3.5", TOXENV: "py35"}
15          - {VERSION: "3.6", TOXENV: "py36"}
16          - {VERSION: "3.7", TOXENV: "py37"}
17          - {VERSION: "3.8", TOXENV: "py38"}
18          - {VERSION: "3.9", TOXENV: "py39"}
19          - {VERSION: "pypy2", TOXENV: "pypy"}
20          - {VERSION: "pypy3", TOXENV: "pypy3"}
21          # -cryptographyMaster
22          - {VERSION: "3.6", TOXENV: "py36-cryptographyMaster"}
23          - {VERSION: "3.7", TOXENV: "py37-cryptographyMaster"}
24          - {VERSION: "3.8", TOXENV: "py38-cryptographyMaster"}
25          - {VERSION: "3.9", TOXENV: "py39-cryptographyMaster"}
26          - {VERSION: "pypy3", TOXENV: "pypy3-cryptographyMaster"}
27          # -cryptographyMinimum
28          - {VERSION: "2.7", TOXENV: "py27-cryptographyMinimum"}
29          - {VERSION: "3.5", TOXENV: "py35-cryptographyMinimum"}
30          - {VERSION: "3.6", TOXENV: "py36-cryptographyMinimum"}
31          - {VERSION: "3.7", TOXENV: "py37-cryptographyMinimum"}
32          - {VERSION: "3.8", TOXENV: "py38-cryptographyMinimum"}
33          - {VERSION: "3.9", TOXENV: "py39-cryptographyMinimum"}
34          - {VERSION: "pypy2", TOXENV: "pypy-cryptographyMinimum"}
35          - {VERSION: "pypy3", TOXENV: "pypy3-cryptographyMinimum"}
36          # Random order
37          - {VERSION: "2.7", TOXENV: "py27-randomorder"}
38          - {VERSION: "3.9", TOXENV: "py39-randomorder"}
39          # Downstreams
40          - {VERSION: "3.7", TOXENV: "py37-twistedMaster"}
41          # Meta
42          - {VERSION: "2.7", TOXENV: "check-manifest"}
43          - {VERSION: "2.7", TOXENV: "pypi-readme"}
44          - {VERSION: "3.9", TOXENV: "flake8"}
45          - {VERSION: "2.7", TOXENV: "docs"}
46    name: "${{ matrix.PYTHON.TOXENV }}"
47    steps:
48      - uses: actions/checkout@v2
49      - name: Setup python
50        uses: actions/setup-python@v2
51        with:
52          python-version: ${{ matrix.PYTHON.VERSION }}
53      - run: python -m pip install tox coverage
54      - run: tox -v
55        env:
56          TOXENV: ${{ matrix.PYTHON.TOXENV }}
57      - name: Upload coverage
58        run: |
59          curl -o codecov.sh -f https://codecov.io/bash || curl -o codecov.sh -f https://codecov.io/bash || curl -o codecov.sh -f https://codecov.io/bash
60          bash codecov.sh -n "tox -e ${{ matrix.PYTHON.TOXENV }}"
61
62  linux-docker:
63    runs-on: ubuntu-latest
64    container: ghcr.io/pyca/cryptography-runner-${{ matrix.TEST.CONTAINER }}
65    strategy:
66      matrix:
67        TEST:
68          - {CONTAINER: "stretch", TOXENV: "py27"}
69          - {CONTAINER: "stretch", TOXENV: "py35"}
70    name: "${{ matrix.TEST.TOXENV }} on ${{ matrix.TEST.CONTAINER }}"
71    steps:
72      - uses: actions/checkout@v2
73      - run: tox -v
74        env:
75          TOXENV: ${{ matrix.TEST.TOXENV }}
76      - name: Upload coverage
77        run: |
78          curl -o codecov.sh -f https://codecov.io/bash || curl -o codecov.sh -f https://codecov.io/bash || curl -o codecov.sh -f https://codecov.io/bash
79          bash codecov.sh -n "tox -e ${{ matrix.TEST.TOXENV }} on ${{ matrix.TEST.CONTAINER }}"
80