70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: CI
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     branches:
 | |
|       - master
 | |
|   pull_request:
 | |
|     branches:
 | |
|       - '**'
 | |
| 
 | |
| jobs:
 | |
|   tests:
 | |
|     name: ${{ matrix.os }} / ${{ matrix.python-version }}
 | |
|     runs-on: ${{ matrix.os }}-latest
 | |
|     strategy:
 | |
|       matrix:
 | |
|         os: [Ubuntu, MacOS, Windows]
 | |
|         python-version: [3.6, 3.7, 3.8]
 | |
|         exclude:
 | |
|           - os: Windows
 | |
|             python-version: 3.6
 | |
|     steps:
 | |
|       - uses: actions/checkout@v2
 | |
| 
 | |
|       - name: Set up Python ${{ matrix.python-version }}
 | |
|         uses: actions/setup-python@v2
 | |
|         with:
 | |
|           python-version: ${{ matrix.python-version }}
 | |
| 
 | |
|       - 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:
 | |
|           path: .venv
 | |
|           key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('**/poetry.lock') }}
 | |
| 
 | |
|       - 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
 | |
|         shell: bash
 | |
|         run: |
 | |
|           poetry run python -m pip install pip -U
 | |
|           poetry install
 | |
| 
 | |
|       - name: Generate code from proto files
 | |
|         shell: bash
 | |
|         run: poetry run python -m tests.generate -v
 | |
| 
 | |
|       - name: Execute test suite
 | |
|         shell: bash
 | |
|         run: poetry run pytest tests/
 |