-
Notifications
You must be signed in to change notification settings - Fork 18
154 lines (122 loc) · 4.22 KB
/
test.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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
name: Test Baselayer
on:
push:
branches:
- main
pull_request:
defaults:
run:
working-directory: ..
jobs:
test:
name: Test Baselayer
runs-on: ubuntu-latest
services:
postgres:
image: postgres
env:
POSTGRES_USER: baselayer
POSTGRES_PASSWORD: anything
ports:
- 5432:5432
# needed because the postgres container does not provide a
# healthcheck
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Checkout
uses: actions/checkout@v4
- name: Install template app
run: |
git clone https://github.com/cesium-ml/baselayer_template_app
cp -rf baselayer baselayer_template_app/
- uses: actions/cache@v4
with:
path: |
~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('baselayer_template_app/package.json') }}
- uses: actions/cache@v4
with:
path: |
~/.cache/pip
key: ${{ runner.os }}-${{ hashFiles('**/requirements*.txt') }}
- uses: browser-actions/setup-geckodriver@latest
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Install system dependencies
run: |
cd baselayer
sudo apt update -y
### firefox installation
sudo snap remove firefox
sudo add-apt-repository ppa:mozillateam/ppa
printf 'Package: *\nPin: release o=LP-PPA-mozillateam\nPin-Priority: 1001' | sudo tee /etc/apt/preferences.d/mozilla-firefox
sudo apt install -y wget nodejs unzip firefox
# if nginx is already installed, remove it
sudo apt remove -y nginx nginx-common nginx-core nginx-full
sudo apt purge -y nginx nginx-common nginx-core nginx-full
# add the PPA repository with brotli support for nginx
sudo add-apt-repository ppa:ondrej/nginx -y
sudo apt update -y
sudo apt install nginx libnginx-mod-http-brotli-static libnginx-mod-http-brotli-filter -y
pip install --upgrade pip
pip install wheel
export NPM_PACKAGES="${HOME}/.npm-packages"
export PATH=${NPM_PACKAGES}/bin:$PATH
export NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
sudo npm -g install npm@latest
which python; python --version
echo npm $(npm --version)
echo node $(node --version)
nginx -v
firefox --version
- name: Install Geckodriver / Selenium
run: |
geckodriver --version
pip install selenium==4.8.3
python -c "import selenium; print(f'Selenium {selenium.__version__}')"
- name: Write configuration & build DB
run: |
cd baselayer_template_app
cat << EOF > config.yaml
database:
database: template_app
user: baselayer
host: localhost
port: 5432
password: anything
EOF
cat << EOF > test_config.yaml
database:
database: template_app_test
user: baselayer
host: localhost
port: 5432
password: anything
EOF
echo "localhost:5432:*:baselayer:anything" > ~/.pgpass
chmod 600 ~/.pgpass
createdb -h localhost -U baselayer template_app
psql -U baselayer -h localhost -c "GRANT ALL PRIVILEGES ON DATABASE template_app TO baselayer;" template_app
createdb -h localhost -U baselayer template_app_test
psql -U baselayer -h localhost -c "GRANT ALL PRIVILEGES ON DATABASE template_app_test TO baselayer;" template_app_test
make db_init
- name: Test template app
run: |
cd baselayer_template_app
make test_headless
- name: Upload logs
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: logs
path: baselayer_template_app/log