-
Notifications
You must be signed in to change notification settings - Fork 12
139 lines (130 loc) · 4.74 KB
/
ci.yaml
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
139
name: Run CI checks
on: pull_request
jobs:
run_lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install poetry
run: pipx install poetry
- uses: actions/cache@v3
# We need to use this caching strategy (rather than setting `cache: poetry` in setup-python)
# because our use of dependency groups. We want separate caches for each dependency group.
# https://github.com/actions/setup-python/issues/505
env:
SEGMENT_DOWNLOAD_TIMEOUT_MIN: "15"
with:
path: |
~/.cache/pypoetry/virtualenvs
~/.cache/pypoetry/cache
~/.cache/pypoetry/artifacts
key: poetry-dev-${{ hashFiles('poetry.lock') }}
- uses: actions/setup-python@v4
with:
python-version: "3.12"
- name: Install dependencies
run: make install
- name: Run linting and formatting checks
run: make lint
docs_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install poetry
run: pipx install poetry
- uses: actions/setup-python@v4
with:
python-version: "3.12"
- uses: actions/cache@v3
# We need to use this caching strategy (rather than setting `cache: poetry`` in setup-python)
# because our use of dependency groups. We want separate caches for each dependency group.
# https://github.com/actions/setup-python/issues/505
env:
SEGMENT_DOWNLOAD_TIMEOUT_MIN: "15"
with:
path: |
~/.cache/pypoetry/virtualenvs
~/.cache/pypoetry/cache
~/.cache/pypoetry/artifacts
key: poetry-docs-${{ hashFiles('poetry.lock') }}
- name: Check documentation build
run: make docs
run_test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: testdb
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres # pragma: allowlist secret
POSTGRES_HOST_AUTH_METHOD: trust
LC_COLLATE: en_US.UTF8
LC_CTYPE: en_US.UTF8
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v3
- name: Install poetry
run: pipx install poetry
- uses: actions/setup-python@v4
with:
python-version: "3.12"
- uses: actions/cache@v3
# We need to use this caching strategy (rather than setting `cache: poetry`` in setup-python)
# because our use of dependency groups. We want separate caches for each dependency group.
# https://github.com/actions/setup-python/issues/505
env:
SEGMENT_DOWNLOAD_TIMEOUT_MIN: "15"
with:
path: |
~/.cache/pypoetry/virtualenvs
~/.cache/pypoetry/cache
~/.cache/pypoetry/artifacts
key: poetry-dev-${{ hashFiles('poetry.lock') }}
- name: Install dependencies
run: make install
- name: Run tests
run: make test
browser-test:
runs-on: ubuntu-latest
env:
DOCKER_CACHE: /tmp/docker-cache
steps:
- uses: actions/checkout@v3
- name: Compute cache key
# Create hash of hashes of checked in files not in Dockerignore
run: echo "CACHE_KEY=$(git ls-tree --full-tree -r HEAD | grep -v -f RemoteSettings.dockerignore | awk '{print $3}' | git hash-object --stdin)" >> $GITHUB_ENV
- uses: actions/cache@v3
with:
path: ${{ env.DOCKER_CACHE}}
key: docker-build-${{ hashFiles('RemoteSettings.Dockerfile', 'BrowserTests.Dockerfile') }}-${{ env.CACHE_KEY }}
restore-keys: |
docker-build-${{ hashFiles('RemoteSettings.Dockerfile', 'BrowserTests.Dockerfile') }}-${{ env.CACHE_KEY }}
docker-build-${{ hashFiles('RemoteSettings.Dockerfile', 'BrowserTests.Dockerfile') }}-
docker-build-
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
install: true
- name: Build web container
uses: docker/build-push-action@v5
with:
cache-from: type=local,src=${{ env.DOCKER_CACHE}}/web
cache-to: type=local,dest=${{ env.DOCKER_CACHE}}/web,mode=max
file: RemoteSettings.Dockerfile
context: .
- name: Build test container
uses: docker/build-push-action@v5
with:
cache-from: type=local,src=${{ env.DOCKER_CACHE}}/tests
cache-to: type=local,dest=${{ env.DOCKER_CACHE}}/tests,mode=max
file: BrowserTests.Dockerfile
context: .
- name: Run browser tests
run: make browser-test