-
Notifications
You must be signed in to change notification settings - Fork 3
160 lines (137 loc) · 5.7 KB
/
main.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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
name: Code Quality
on: [push, pull_request, workflow_dispatch]
jobs:
lint:
name: Python Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.8'
cache: 'pip'
- name: Install requirements
run: pip install flake8 pycodestyle
- name: Check syntax
run: flake8 ckanext --count --select=E901,E999,F821,F822,F823 --show-source --statistics --exclude ckan
- name: Run flake8
run: flake8 ckanext --count --max-line-length=127 --statistics --exclude ckan
test:
name: Test apicatalog extensions
runs-on: ubuntu-latest
container:
image: ckan/ckan-dev:2.10
services:
solr:
image: ckan/ckan-solr:2.10-solr9
postgres:
image: ckan/ckan-postgres-dev:2.10
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:3
env:
CKAN_SQLALCHEMY_URL: postgresql://ckan_default:pass@postgres/ckan_test
CKAN_DATASTORE_WRITE_URL: postgresql://datastore_write:pass@postgres/datastore_test
CKAN_DATASTORE_READ_URL: postgresql://datastore_read:pass@postgres/datastore_test
CKAN_SOLR_URL: http://solr:8983/solr/ckan
CKAN_REDIS_URL: redis://redis:6379/1
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install requirements
run: |
cd ckanext/ckanext-apicatalog
pip install -r dev-requirements.txt
pip install -e .
# Replace default path to CKAN core config file with the one on the container
sed -i -e 's/use = config:.*/use = config:\/srv\/app\/src\/ckan\/test-core.ini/' test.ini
cd ../ckanext-scheming
pip install -e .
cd ../ckanext-fluent
pip install -e .
cd ../ckanext-markdown_editor
pip install -e .
cd ../ckanext-apply_permissions_for_service
pip install -e .
# Replace default path to CKAN core config file with the one on the container
sed -i -e 's/use = config:.*/use = config:\/srv\/app\/src\/ckan\/test-core.ini/' test.ini
- name: Setup extension
run: |
ckan -c ckanext/ckanext-apicatalog/test.ini db init
- name: Run tests
run: |
pytest --ckan-ini=ckanext/ckanext-apicatalog/test.ini --cov=ckanext.apicatalog --disable-warnings ckanext/ckanext-apicatalog/ckanext/apicatalog/tests
pytest --ckan-ini=ckanext/ckanext-apply_permissions_for_service/test.ini --cov=ckanext.apply_permissions_for_service --disable-warnings ckanext/ckanext-apply_permissions_for_service/ckanext/apply_permissions_for_service/tests
text-xroad:
name: Test xroad integration
runs-on: ubuntu-latest
container:
image: ckan/ckan-dev:2.10
services:
solr:
image: ckan/ckan-solr:2.10-solr9
postgres:
image: ckan/ckan-postgres-dev:2.10
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:3
env:
CKAN_SQLALCHEMY_URL: postgresql://ckan_default:pass@postgres/ckan_test
CKAN_DATASTORE_WRITE_URL: postgresql://datastore_write:pass@postgres/datastore_test
CKAN_DATASTORE_READ_URL: postgresql://datastore_read:pass@postgres/datastore_test
CKAN_SOLR_URL: http://solr:8983/solr/ckan
CKAN_REDIS_URL: redis://redis:6379/1
steps:
- name: Add build dependencies to container
run: |
apk add --update --no-progress \
tar
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions/cache@v4
with:
path: /root/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install xroad integration requirements
run: |
cd ckanext/ckanext-apicatalog
pip install -r dev-requirements.txt
pip install -e .
cd ../ckanext-harvest
pip install -r pip-requirements.txt
pip install -e .
cd ../ckanext-scheming
pip install -e .
cd ../ckanext-fluent
pip install -e .
cd ../ckanext-markdown_editor
pip install -e .
cd ../ckanext-xroad_integration
pip install -r requirements.txt
pip install -r dev-requirements.txt
pip install -e .
# Replace default path to CKAN core config file with the one on the container
sed -i -e 's/use = config:.*/use = config:\/srv\/app\/src\/ckan\/test-core.ini/' test.ini
- name: setup xroad integration extension
run: |
# Enable plugins in test.ini temporarily
sed -i -e 's/#ckan.plugins/ckan.plugins/' ckanext/ckanext-xroad_integration/test.ini
ckan -c ckanext/ckanext-xroad_integration/test.ini db init
ckan -c ckanext/ckanext-xroad_integration/test.ini db upgrade -p harvest
ckan -c ckanext/ckanext-xroad_integration/test.ini xroad init-db
# Disable plugins in test.ini
sed -i -e 's/ckan.plugins/#ckan.plugins/' ckanext/ckanext-xroad_integration/test.ini
- name: Run xroad integration tests
run: pytest --ckan-ini=ckanext/ckanext-xroad_integration/test.ini --cov=ckanext.xroad_integration --disable-warnings ckanext/ckanext-xroad_integration/ckanext/xroad_integration/tests