-
Notifications
You must be signed in to change notification settings - Fork 21
129 lines (121 loc) · 3.72 KB
/
workflow.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
name: workflow
on: [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lock:
timeout-minutes: 10
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- run: curl -sSL https://install.python-poetry.org | python3 -
- run: poetry lock
- uses: actions/cache@v3
with:
path: poetry.lock
key: ${{ github.sha }}-${{ matrix.python-version }}
pytest:
needs: lock
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
implementation: [
{flavor: "dynalite", name: "dynalite"},
{flavor: "other", name: "dynamodb-local"},
{flavor: "other", name: "localstack"},
{flavor: "scylla", name: "scylla"}
]
runs-on: "ubuntu-latest"
env:
DYNAMODB_URL: http://localhost:8000
DYNAMODB_FLAVOR: ${{ matrix.implementation.flavor }}
DYNAMODB_NAME: ${{ matrix.implementation.name }}
AWS_ACCESS_KEY_ID: dummy
AWS_SECRET_ACCESS_KEY: dummy
steps:
- uses: actions/checkout@v3
- run: docker compose -f .github/docker-compose/docker-compose.${{ matrix.implementation.name }}.yml up -d
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v3
with:
path: poetry.lock
key: ${{ github.sha }}-${{ matrix.python-version }}
- run: curl -sSL https://install.python-poetry.org | python3 -
- run: poetry install
- run: poetry run pytest --verbose
mypy:
timeout-minutes: 10
needs: lock
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v3
with:
path: poetry.lock
key: ${{ github.sha }}-${{ matrix.python-version }}
- run: curl -sSL https://install.python-poetry.org | python3 -
- run: poetry install
- run: poetry run mypy
isort:
timeout-minutes: 10
needs: lock
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.12"
- uses: actions/cache@v3
with:
path: poetry.lock
key: ${{ github.sha }}-3.12
- run: curl -sSL https://install.python-poetry.org | python3 -
- run: poetry install
- run: poetry run isort --check --diff src tests
black:
timeout-minutes: 10
needs: lock
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.12"
- uses: actions/cache@v3
with:
path: poetry.lock
key: ${{ github.sha }}-3.12
- run: curl -sSL https://install.python-poetry.org | python3 -
- run: poetry install
- run: poetry run black --check src/ tests/
ruff:
timeout-minutes: 10
needs: lock
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.12"
- uses: actions/cache@v3
with:
path: poetry.lock
key: ${{ github.sha }}-3.12
- run: curl -sSL https://install.python-poetry.org | python3 -
- run: poetry install
- run: poetry run ruff check src/ tests/