-
Notifications
You must be signed in to change notification settings - Fork 8
136 lines (112 loc) · 3.88 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
name: Test Baselayer Template App
on: [push, pull_request]
jobs:
test:
name: Test Template App
runs-on: ubuntu-latest
services:
postgres:
image: postgres
env:
POSTGRES_USER: template_app
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@v1
with:
python-version: "3.8"
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
submodules: true
- uses: actions/cache@v2
with:
path: |
~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('package.json') }}
- uses: actions/cache@v2
with:
path: |
~/.cache/pip
key: ${{ runner.os }}-${{ hashFiles('**/requirements*.txt') }}
- name: Install system dependencies
run: |
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y wget nodejs unzip firefox nginx
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: |
GECKO_VER=0.30.0
CACHED_DOWNLOAD_DIR=~/.local/downloads
FILENAME=geckodriver-v${GECKO_VER}-linux64.tar.gz
if [[ ! -f ${CACHED_DOWNLOAD_DIR=}/${FILENAME} ]]; then
wget https://github.com/mozilla/geckodriver/releases/download/v${GECKO_VER}/${FILENAME} --directory-prefix=${CACHED_DOWNLOAD_DIR} --no-clobber
fi
sudo tar -xzf ${CACHED_DOWNLOAD_DIR}/geckodriver-v${GECKO_VER}-linux64.tar.gz -C /usr/local/bin
geckodriver --version
pip install --upgrade selenium
python -c "import selenium; print(f'Selenium {selenium.__version__}')"
- name: Write configuration & build DB
run: |
cat << EOF > config.yaml
database:
database: template_app
user: template_app
host: localhost
port: 5432
password: anything
EOF
cat << EOF > test_config.yaml
database:
database: template_app_test
user: template_app
host: localhost
port: 5432
password: anything
server:
auth:
debug_login: True
EOF
echo "localhost:5432:*:template_app:anything" > ~/.pgpass
chmod 600 ~/.pgpass
createdb -h localhost -U template_app template_app_test
psql -U template_app -h localhost -c "GRANT ALL PRIVILEGES ON DATABASE template_app_test TO template_app;" template_app_test
make db_init
- name: Test template app
run: |
make test_headless
- name: Lint PR
if: ${{ github.ref != 'refs/heads/main' }}
run: |
pip install pre-commit
pre-commit run --from-ref ${{ github.event.pull_request.base.sha }} --to-ref ${{ github.event.pull_request.head.sha }}
- name: Lint all
if: ${{ github.ref == 'refs/heads/main' }}
run: |
pip install pre-commit
pre-commit run -a
- name: Upload logs
uses: actions/upload-artifact@v2
if: ${{ always() }}
with:
name: logs
path: log