name: build on: [push, pull_request] env: # color output for pytest and tox PYTEST_ADDOPTS: "--color=yes" PY_COLORS: 1 jobs: test: name: Test - ${{ matrix.config.python }} - ${{ matrix.config.os }} runs-on: ${{ matrix.config.os }}-latest strategy: matrix: config: - os: ubuntu python: "3.6" - os: ubuntu python: "3.7" - os: ubuntu python: "3.8" - os: ubuntu python: "3.9" - os: ubuntu python: "3.10" - os: macos python: "3.7" - os: windows python: "3.7" steps: - uses: actions/checkout@v2 - name: Setup Python ${{ matrix.config.python }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.config.python }} - name: Set up Pip cache (Linux) uses: actions/cache@v2 if: startsWith(runner.os, 'Linux') with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements/*') }} restore-keys: | ${{ runner.os }}-pip- - name: Set up Pip cache (macOS) uses: actions/cache@v2 if: startsWith(runner.os, 'macOS') with: path: ~/Library/Caches/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements/*') }} restore-keys: | ${{ runner.os }}-pip- - name: Setup pip cache (Windows) uses: actions/cache@v2 if: startsWith(runner.os, 'Windows') with: path: ~\AppData\Local\pip\Cache key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements/*') }} restore-keys: | ${{ runner.os }}-pip- - name: Install locale (Linux) if: startsWith(runner.os, 'Linux') run: sudo locale-gen fr_FR.UTF-8 tr_TR.UTF-8 - name: Install pandoc uses: r-lib/actions/setup-pandoc@v1 with: pandoc-version: "2.9.2" - name: Install tox run: python -m pip install -U pip tox - name: Info run: | echo "===== PYTHON =====" python --version echo "===== PANDOC =====" pandoc --version | head -2 - name: Run tests run: tox -e py${{ matrix.config.python }} lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup Python uses: actions/setup-python@v2 with: python-version: "3.7" - name: Set pip cache (Linux) uses: actions/cache@v2 if: startsWith(runner.os, 'Linux') with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('requirements/*') }} restore-keys: | ${{ runner.os }}-pip- - name: Install tox run: python -m pip install -U pip tox - name: Check run: tox -e flake8 docs: name: Build docs runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup Python uses: actions/setup-python@v2 with: python-version: "3.7" - name: Set pip cache (Linux) uses: actions/cache@v2 if: startsWith(runner.os, 'Linux') with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('requirements/*') }} restore-keys: | ${{ runner.os }}-pip- - name: Install tox run: python -m pip install -U pip tox - name: Check run: tox -e docs deploy: name: Deploy needs: [test, lint, docs] runs-on: ubuntu-latest if: ${{ github.ref=='refs/heads/master' && github.event_name!='pull_request' }} steps: - uses: actions/checkout@v2 - name: Setup Python uses: actions/setup-python@v2 with: python-version: "3.7" - name: Check release id: check_release run: | python -m pip install pip --upgrade pip install poetry pip install githubrelease pip install --pre autopub echo "##[set-output name=release;]$(autopub check)" - name: Publish if: ${{ steps.check_release.outputs.release=='' }} env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | git remote set-url origin https://$GITHUB_TOKEN@github.com/${{ github.repository }} autopub prepare poetry build autopub commit autopub githubrelease poetry publish -u __token__ -p $PYPI_PASSWORD