-
-
Notifications
You must be signed in to change notification settings - Fork 63
138 lines (133 loc) · 4.06 KB
/
web_api.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
130
131
132
133
134
135
136
137
138
name: web_api
on:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: true
jobs:
pre_job:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
paths_result: ${{ steps.skip_check.outputs.paths_result }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@c449d86cf33a2a6c7a4193264cc2578e2c3266d4 # pin@v4
with:
paths: '["web_api/**", ".github/workflows/**"]'
test:
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
runs-on: ubuntu-latest
services:
postgres:
image: postgres:12
# Provide the password for postgres
env:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis:5
# Set health checks to wait until redis has started
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
# Maps port 6379 on service container to the host
- 6379:6379
steps:
- uses: actions/checkout@v3
- name: Install poetry
run: |
pipx install poetry==1.7.1
poetry config virtualenvs.in-project true
- uses: actions/setup-python@v4
with:
python-version-file: "./web_api/.python-version"
cache: poetry
cache-dependency-path: "./web_api/poetry.lock"
- name: Install dependencies
working-directory: "./web_api"
run: poetry install
- name: Set up environment variables
run: echo "DATABASE_URL=postgres://postgres:[email protected]:5432/postgres" >> $GITHUB_ENV
- name: Run tests
working-directory: "web_api"
run: ./s/test
- name: upload code coverage
working-directory: web_api
run: ./s/upload-code-cov
lint:
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install poetry
run: |
pipx install poetry==1.7.1
poetry config virtualenvs.in-project true
- uses: actions/setup-python@v4
with:
python-version-file: "./web_api/.python-version"
cache: poetry
cache-dependency-path: "./web_api/poetry.lock"
- name: Install dependencies
working-directory: "./web_api"
run: poetry install
- name: Run lints
working-directory: "web_api"
run: ./s/lint
squawk:
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
runs-on: ubuntu-latest
services:
postgres:
image: postgres:12
# Provide the password for postgres
env:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: web_api_test
ports:
- 5432:5432
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install poetry
run: |
pipx install poetry==1.7.1
poetry config virtualenvs.in-project true
- uses: actions/setup-python@v4
with:
python-version-file: "./web_api/.python-version"
cache: poetry
cache-dependency-path: "./web_api/poetry.lock"
- name: Install dependencies
working-directory: "./web_api"
run: poetry install
- name: Run squawk
working-directory: "./web_api"
run: |
python ./s/squawk.py
- uses: sbdchd/squawk-action@v1
with:
pattern: "web_api/migrations/*.sql"
version: "latest"