ci: refactor jobs and improve platform coverage (#128)
This commit is contained in:
parent
0cd9510b54
commit
43c134d27c
111
.github/workflows/ci.yml
vendored
111
.github/workflows/ci.yml
vendored
@ -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
20
.github/workflows/code-quality.yml
vendored
Normal 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
31
.github/workflows/release.yml
vendored
Normal 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
|
@ -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))
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user