-
Notifications
You must be signed in to change notification settings - Fork 0
/
.drone.yml
123 lines (111 loc) · 3.41 KB
/
.drone.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
---
kind: pipeline
type: docker
name: default
environment:
POSTGRES_HOST: postgis-1
POSTGRES_PORT: '5432'
DB_NAME: catalogue
DB_USER: tester1
#
# Steps
#
steps:
- name: setup-postgis-database
image: postgres:10.14-alpine
when:
event:
- push
environment:
POSTGRES_PASSWORD:
from_secret: postgres_password
commands:
- export PGHOST=$${POSTGRES_HOST} PGPORT=$${POSTGRES_PORT}
- (t=30; sleep 5s; while ! pg_isready -U postgres -t 5; do t=$((t - 1)); test $${t} -ne 0; sleep 3s; done)
# Setup client
- touch ~/.pgpass && chmod og-rwx ~/.pgpass
- touch .postgres-test-password && chmod og-rwx .postgres-test-password
- dd if=/dev/urandom bs=6 count=1 | base64 > .postgres-test-password
- db_password=$(cat .postgres-test-password)
- echo "$${POSTGRES_HOST}:$${POSTGRES_PORT}:*:postgres:$${POSTGRES_PASSWORD}" >> ~/.pgpass
- echo "$${POSTGRES_HOST}:$${POSTGRES_PORT}:*:$${DB_USER}:$${db_password}" >> ~/.pgpass
# Create user/database for tests
- echo "CREATE USER \"$${DB_USER}\" WITH PASSWORD '$${db_password}'" | psql -U postgres
- echo "CREATE DATABASE \"$${DB_NAME}\" WITH OWNER \"$${DB_USER}\" TEMPLATE template_postgis" | psql -U postgres
- psql -U postgres -l -A -t
- psql -U "$${DB_USER}" -d "$${DB_NAME}" -A -t -c '\d'
- name: nosetests
image: python:3.8-slim-buster
when:
event:
- push
environment:
{}
commands:
- pip3 install -r requirements.txt -r requirements-testing.txt
- python setup.py install
# Prepare environment for tests
- sed -e '/^SECRET_KEY=/d' -e '/^SQLALCHEMY_DATABASE_URI=/d' config.py.example > config-testing.py
- secret_key=$(dd if=/dev/urandom bs=9 count=1 | base64)
- echo "SECRET_KEY='$${secret_key}'" >> config-testing.py
- db_password=$(cat .postgres-test-password)
- db_url=$(echo "postgresql://$${DB_USER}:$${db_password}@$${POSTGRES_HOST}:$${POSTGRES_PORT}/$${DB_NAME}")
- echo "SQLALCHEMY_DATABASE_URI='$${db_url}'" >> config-testing.py
# Generate DDL schema in database
- env FILE_CONFIG=config-testing.py ./generate-db-schema.py
# Run tests
- env FILE_CONFIG=config-testing.py nosetests -v -s
- name: prepare-tags
image: busybox:1.32
when:
event:
- tag
commands:
- tags_file=$(mktemp)
- echo ${DRONE_TAG} | grep -e '^[0-9]\+[.][0-9]\+[.][0-9]\+\([_-][a-z0-9][-.a-z0-9]*\)\?$' | tee -a $${tags_file}
- echo ${DRONE_TAG} | grep -o -e '^[0-9]\+[.][0-9]\+[.][0-9]\+' | tee -a $${tags_file}
- cat $${tags_file} | xargs echo | tr '[:blank:]' ',' | tr -d '\n' | tee .tags && echo
- name: publish-image-1
image: plugins/docker
when:
event:
- tag
settings:
debug: true
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: opertusmundi/catalogueapi
mirror: http://registry-mirror:5000
build_args:
- VERSION=${DRONE_TAG}
#- name: publish-image-2
# image: plugins/docker
# when:
# event:
# - tag
# settings:
# debug: true
# username:
# from_secret: registry_username
# password:
# from_secret: registry_password
# repo: registry-dev-1-opertusmundi:30474/opertusmundi/catalogueapi
# mirror: http://registry-mirror:5000
# registry: registry-dev-1-opertusmundi:30474
# build_args:
# - VERSION=${DRONE_TAG}
#
#
# Services
#
services:
- name: postgis-1
image: postgis/postgis:10-3.0-alpine
when:
event:
- push
environment:
POSTGRES_PASSWORD:
from_secret: postgres_password