name: MacOS on: push: branches: - master pull_request: schedule: # Run every Friday at 18:02 UTC - cron: 2 18 * * 5 jobs: dev-tools: name: Quality Check runs-on: macos-latest steps: # Caches - name: pip cache uses: actions/cache@v1 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('tools/requirements/tests.txt') }}-${{ hashFiles('tools/requirements/docs.txt') }}-${{ hashFiles('tox.ini') }} restore-keys: | ${{ runner.os }}-pip- ${{ runner.os }}- - name: Set PY (for pre-commit cache) run: echo "PY=$(python -c 'import hashlib, sys;print(hashlib.sha256(sys.version.encode()+sys.executable.encode()).hexdigest())')" >> $GITHUB_ENV - name: pre-commit cache uses: actions/cache@v1 with: path: ~/.cache/pre-commit key: pre-commit|2020-02-14|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }} # Setup - uses: actions/checkout@v2 - name: Set up Python 3.8 uses: actions/setup-python@v2 with: python-version: 3.8 - name: Install tox run: python -m pip install tox # Main check - run: python -m tox -e "lint,docs" packaging: name: Packaging runs-on: macos-latest steps: # Caches - name: pip cache uses: actions/cache@v1 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('tools/requirements/tests.txt') }}-${{ hashFiles('tools/requirements/docs.txt') }}-${{ hashFiles('tox.ini') }} restore-keys: | ${{ runner.os }}-pip- ${{ runner.os }}- # Setup - name: Set up git credentials run: | git config --global user.email "pypa-dev@googlegroups.com" git config --global user.name "pip" - uses: actions/checkout@v2 - name: Set up Python 3.8 uses: actions/setup-python@v2 with: python-version: 3.8 - name: Install tox and nox run: python -m pip install tox nox # Main check - name: Check vendored packages run: python -m tox -e "vendoring" - name: Prepare dummy release run: nox -s prepare-release -- 99.9 - name: Generate distributions for the dummy release run: nox -s build-release -- 99.9 tests: name: Tests / ${{ matrix.python }} runs-on: macos-latest needs: dev-tools strategy: fail-fast: false matrix: python: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9] steps: # Caches - name: pip cache uses: actions/cache@v1 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('tools/requirements/tests.txt') }}-${{ hashFiles('tools/requirements/docs.txt') }}-${{ hashFiles('tox.ini') }} restore-keys: | ${{ runner.os }}-pip- ${{ runner.os }}- # Setup - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: ${{ matrix.python }} - name: Install tox run: python -m pip install tox 'virtualenv<20' # Main check - name: Run unit tests run: >- python -m tox -e py -- -m unit --verbose --numprocesses auto - name: Run integration tests run: >- python -m tox -e py -- -m integration --verbose --numprocesses auto --durations=5