diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..c2161ec2 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,162 @@ +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.5 + tox: py35 + - os: ubuntu + python: 3.6 + tox: py36 + - os: ubuntu + python: 3.7 + tox: py37 + - os: macos + python: 3.7 + tox: py37 + - os: windows + python: 3.7 + tox: py37 + + steps: + - uses: actions/checkout@v2 + - name: Setup Python ${{ matrix.config.python }} + uses: actions/setup-python@v1.1.1 + with: + python-version: ${{ matrix.config.python }} + - name: Set pip cache (Linux) + uses: actions/cache@v1 + if: startsWith(runner.os, 'Linux') + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements/*') }} + restore-keys: | + ${{ runner.os }}-pip- + - name: Setup pip cache (macOS) + uses: actions/cache@v1 + 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@v1 + 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 ${{ matrix.config.tox }} + + + lint: + name: Lint + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v1.1.1 + with: + python-version: 3.6 + - name: Set pip cache (Linux) + uses: actions/cache@v1 + 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@v1.1.1 + with: + python-version: 3.6 + - name: Set pip cache (Linux) + uses: actions/cache@v1 + 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@v1.1.1 + 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