ci: refactor jobs and improve platform coverage (#128)

This commit is contained in:
Arun Babu Neelicattu 2020-07-30 14:47:38 +02:00 committed by GitHub
parent 0cd9510b54
commit 43c134d27c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 109 additions and 58 deletions

View File

@ -1,74 +1,69 @@
name: CI name: CI
on: [push, pull_request] on:
push:
branches:
- master
pull_request:
branches:
- '**'
jobs: jobs:
tests:
check-formatting: name: ${{ matrix.os }} / ${{ matrix.python-version }}
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}-latest
name: Consult black on python formatting
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.7
- uses: Gr1N/setup-poetry@v2
- uses: actions/cache@v2
with:
path: ~/.cache/pypoetry/virtualenvs
key: ${{ runner.os }}-poetry-${{ hashFiles('poetry.lock') }}
restore-keys: |
${{ runner.os }}-poetry-
- name: Install dependencies
run: poetry install
- name: Run black
run: poetry run poe check-style
run-tests:
runs-on: ubuntu-latest
name: Run tests with tox
strategy: strategy:
matrix: matrix:
python-version: [ '3.6', '3.7', '3.8'] os: [Ubuntu, MacOS, Windows]
python-version: [3.6, 3.7, 3.8]
exclude:
- os: Windows
python-version: 3.6
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-python@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
- uses: Gr1N/setup-poetry@v2
- uses: actions/cache@v2 - name: Get full Python version
id: full-python-version
shell: bash
run: echo ::set-output name=version::$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info))")
- name: Install poetry
shell: bash
run: |
python -m pip install poetry
echo "::set-env name=PATH::$HOME/.poetry/bin:$PATH"
- name: Configure poetry
shell: bash
run: poetry config virtualenvs.in-project true
- name: Set up cache
uses: actions/cache@v2
id: cache
with: with:
path: ~/.cache/pypoetry/virtualenvs path: .venv
key: ${{ runner.os }}-poetry-${{ hashFiles('poetry.lock') }} key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('**/poetry.lock') }}
restore-keys: |
${{ runner.os }}-poetry- - name: Ensure cache is healthy
if: steps.cache.outputs.cache-hit == 'true'
shell: bash
run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv
- name: Install dependencies - name: Install dependencies
shell: bash
run: | run: |
poetry run pip install --upgrade pip poetry run python -m pip install pip -U
poetry install poetry install
- name: Run tests
run: |
poetry run poe generate
poetry run poe test
build-release: - name: Generate code from proto files
runs-on: ubuntu-latest shell: bash
run: poetry run python -m tests.generate -v
steps: - name: Execute test suite
- uses: actions/checkout@v2 shell: bash
- uses: actions/setup-python@v2 run: poetry run pytest tests/
with:
python-version: 3.7
- uses: Gr1N/setup-poetry@v2
- name: Build package
run: poetry build
- name: Publish package to PyPI
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
run: poetry publish -n
env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.pypi }}

20
.github/workflows/code-quality.yml vendored Normal file
View File

@ -0,0 +1,20 @@
name: Code Quality
on:
push:
branches:
- master
pull_request:
branches:
- '**'
jobs:
black:
name: Black
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run Black
uses: lgeiger/black-action@master
with:
args: --check src/ tests/

31
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,31 @@
name: Release
on:
push:
branches:
- master
tags:
- '**'
pull_request:
branches:
- '**'
jobs:
packaging:
name: Distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install poetry
run: python -m pip install poetry
- name: Build package
run: poetry build
- name: Publish package to PyPI
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.pypi }}
run: poetry publish -n

View File

@ -2,6 +2,7 @@
import asyncio import asyncio
import os import os
from pathlib import Path from pathlib import Path
import platform
import shutil import shutil
import sys import sys
from typing import Set from typing import Set
@ -134,6 +135,10 @@ def main():
else: else:
verbose = False verbose = False
whitelist = set(sys.argv[1:]) whitelist = set(sys.argv[1:])
if platform.system() == "Windows":
asyncio.set_event_loop(asyncio.ProactorEventLoop())
asyncio.get_event_loop().run_until_complete(generate(whitelist, verbose)) asyncio.get_event_loop().run_until_complete(generate(whitelist, verbose))