Skip to content

Commit 99190d5

Browse files
authored
Merge pull request #282 from Donders-Institute/stager-buildin
Stager buildin
2 parents 95a69ce + 84bbe0f commit 99190d5

18 files changed

+171
-164
lines changed

Jenkinsfile

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
// STACK_NAME defines the name of the Docker stack deployed to acceptance
2+
def STACK_NAME="lab-data-streamer"
3+
14
pipeline {
25
agent any
36

@@ -71,26 +74,10 @@ pipeline {
7174
}
7275
steps {
7376

74-
sh 'docker stack rm streamer4user'
77+
sh "docker stack rm ${STACK_NAME}"
7578

7679
sleep(30)
7780

78-
// Streamer secrets
79-
configFileProvider([configFile(fileId: 'streamer_service_config.json', variable: 'STREAMER_SERVICE_CONFIG')]) {
80-
sh 'docker secret rm streamer-service-config.json || true'
81-
sh 'docker secret create streamer-service-config.json $STREAMER_SERVICE_CONFIG'
82-
}
83-
configFileProvider([configFile(fileId: 'streamer_mailer_config.json', variable: 'STREAMER_MAILER_CONFIG')]) {
84-
sh 'docker secret rm streamer-mailer-config.json || true'
85-
sh 'docker secret create streamer-mailer-config.json $STREAMER_MAILER_CONFIG'
86-
}
87-
88-
// Streamer UI secrets
89-
configFileProvider([configFile(fileId: 'streamer_ui_config.json', variable: 'STREAMER_UI_CONFIG')]) {
90-
sh 'docker secret rm streamer-ui-config.json || true'
91-
sh 'docker secret create streamer-ui-config.json $STREAMER_UI_CONFIG'
92-
}
93-
9481
withCredentials([
9582
usernamePassword (
9683
credentialsId: params.STREAMER_UI_DB_CREDENTIALS,
@@ -116,7 +103,7 @@ pipeline {
116103

117104
// Use the same approach as for production
118105
script {
119-
def statusCode = sh(script: "bash ./docker-deploy-acceptance.sh", returnStatus: true)
106+
def statusCode = sh(script: "bash ./docker-deploy-acceptance.sh ${STACK_NAME}", returnStatus: true)
120107
echo "statusCode: ${statusCode}"
121108
}
122109
}
@@ -133,26 +120,27 @@ pipeline {
133120
label 'swarm-manager'
134121
}
135122
steps {
136-
withDockerContainer(image: 'jwilder/dockerize', args: '--network streamer4user-net') {
123+
withDockerContainer(image: 'jwilder/dockerize', args: "--network ${STACK_NAME}_default") {
137124
sh (
138125
label: 'Waiting for services to become available',
139126
script: 'dockerize \
140127
-timeout 120s \
141128
-wait tcp://service:3001 \
142129
-wait tcp://ui-db:5432 \
143-
-wait http://ui:9000'
130+
-wait http://ui:9000 \
131+
-wait http://stager-api-server:8080/v1/ping'
144132
)
145133
}
146134
}
147135
post {
148136
failure {
149137
sh (
150138
label: 'Displaying service status',
151-
script: 'docker stack ps streamer4user'
139+
script: "docker stack ps ${STACK_NAME}"
152140
)
153141
sh (
154142
label: 'Displaying service logs',
155-
script: 'docker stack services --format \'{{.Name}}\' streamer4user | xargs -n 1 docker service logs'
143+
script: "docker stack services --format '{{.Name}}' ${STACK_NAME} | xargs -n 1 docker service logs"
156144
)
157145
}
158146
}
@@ -230,7 +218,7 @@ pipeline {
230218

231219
post {
232220
success {
233-
archiveArtifacts "docker-compose.yml, docker-compose.swarm.yml, env.sh"
221+
archiveArtifacts "docker-compose.yml, docker-compose.stager.yml, docker-compose.swarm.yml, env.sh"
234222
}
235223
always {
236224
echo 'cleaning'

docker-compose.override.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ services:
77
ports:
88
- ${STREAMER_UI_EXTERNAL_PORT:-9000}:9000
99
volumes:
10-
- ${STREAMER_SECRETS_DIR}:/opt/streamer-ui-server/config
1110
- ${STREAMER_UI_LOG_VOL}:/opt/streamer-ui-server/log
1211
ui-db:
1312
ports:

docker-compose.stager.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
version: '3.7'
2+
services:
3+
4+
# stager task database
5+
stager-db:
6+
image: redis:alpine
7+
user: root
8+
command: --appendonly yes
9+
10+
# stager api server
11+
stager-api-server:
12+
image: ${DOCKER_REGISTRY:-dccn}/data-stager-api:${STAGER_DOCKER_IMAGE_TAG:-latest}
13+
user: root
14+
depends_on:
15+
- stager-db
16+
command: -p 8080 -r redis://stager-db:6379 -c /etc/stager/api-server.yml
17+
18+
# stager worker
19+
stager-worker:
20+
image: ${DOCKER_REGISTRY:-dccn}/data-stager-worker:${STAGER_DOCKER_IMAGE_TAG:-latest}
21+
user: root
22+
depends_on:
23+
- stager-api-server
24+
command: -r redis://stager-db:6379 -c /etc/stager/worker.yml

docker-compose.swarm.yml

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,74 @@
11
version: "3.7"
22
services:
3+
## streamer
34
service:
45
volumes:
56
# bind-mount for sss authentication
67
- /var/lib/sss/pipes:/var/lib/sss/pipes
78
- /var/lib/sss/mc:/var/lib/sss/mc:ro
8-
environment:
9-
# provides configuration files from docker secrets
10-
- STREAMER_SERVICE_CONFIG=/run/secrets/streamer-service-config.json
11-
- STREAMER_MAILER_CONFIG=/run/secrets/streamer-mailer-config.json
9+
- ${STREAMER_SERVICE_CONFIG}:/opt/streamer/config/default.json
10+
- ${STREAMER_MAILER_CONFIG}:/opt/streamer/config/mailer.json
1211
networks:
1312
default:
1413
# join the proxynet with hostname alias
1514
proxynet:
1615
aliases:
1716
- streamer
18-
secrets:
19-
- streamer-service-config.json
20-
- streamer-mailer-config.json
2117
ui:
22-
environment:
23-
# provides configuration files from docker secrets
24-
- STREAMER_UI_CONFIG=/run/secrets/streamer-ui-config.json
25-
- STREAMER_SERVICE_CONFIG=/run/secrets/streamer-service-config.json
2618
networks:
2719
default:
2820
# join the proxynet with hostname alias
2921
proxynet:
3022
aliases:
3123
- streamer-ui
32-
secrets:
33-
- streamer-service-config.json
34-
- streamer-ui-config.json
35-
- streamer-ui-adconfig.json
36-
- streamer-ui-ldapscert.crt
3724
ports:
3825
- ${STREAMER_UI_EXTERNAL_PORT:-9000}:9000
3926
volumes:
4027
- ${PROJECT_CEPHFS_VOL}:/project_cephfs
4128
- ${PROJECT_VOL}:/project
4229
- ${STREAMER_UI_LOG_VOL}:/opt/streamer-ui-server/log
30+
- ${STREAMER_SERVICE_CONFIG}:/opt/streamer-ui-server/config/streamer-service-config.json
31+
- ${STREAMER_UI_CONFIG}:/opt/streamer-ui-server/config/streamer-ui-config.json
4332
ui-db:
44-
ports:
45-
- ${STREAMER_UI_DB_EXTERNAL_PORT:-9001}:${STREAMER_UI_DB_PORT:-5432}
4633
volumes:
4734
- ${STREAMER_UI_DB_DATA_VOL}:/var/lib/postgresql/data
4835

36+
## stager
37+
stager-db:
38+
volumes:
39+
- ${STAGER_DB_DATA_VOL}:/data
40+
41+
# stager api server
42+
stager-api-server:
43+
volumes:
44+
- ${STAGER_API_CONFIG}:/etc/stager/api-server.yml:ro
45+
- ${PROJECT_VOL:-/project}:/project
46+
- ${PROJECT_CEPHFS_VOL:-/project_cephfs}:/project_cephfs
47+
logging:
48+
driver: "json-file"
49+
options:
50+
max-size: "20m"
51+
max-file: "5"
52+
53+
# stager worker
54+
stager-worker:
55+
volumes:
56+
- ${STAGER_IRODS_ICAT_CERT}:/opt/irods/ssl/icat.pem:ro
57+
- ${STAGER_WORKER_CONFIG}:/etc/stager/worker.yml:ro
58+
- ${PROJECT_VOL:-/project}:/project
59+
- ${PROJECT_CEPHFS_VOL:-/project_cephfs}:/project_cephfs
60+
deploy:
61+
placement:
62+
constraints:
63+
- node.labels.IpRange==44
64+
logging:
65+
driver: "json-file"
66+
options:
67+
max-size: "20m"
68+
max-file: "5"
69+
4970
networks:
5071
default:
51-
name: streamer4user-net
5272
attachable: true
5373
proxynet:
54-
external: true
55-
56-
secrets:
57-
streamer-service-config.json:
58-
external: true
59-
streamer-mailer-config.json:
60-
external: true
61-
streamer-ui-config.json:
62-
external: true
63-
streamer-ui-adconfig.json:
64-
external: true
65-
streamer-ui-ldapscert.crt:
66-
external: true
74+
external: true

docker-deploy-acceptance.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#!/bin/bash
22

3+
[ $# -lt 1 ] && echo "missing Docker stack name" >&2 && exit 1
4+
35
# export variables defined in env.sh
46
set -a && source env.sh && set +a
57

6-
docker stack up -c docker-compose.yml -c docker-compose.swarm.yml --prune --with-registry-auth --resolve-image always streamer4user
8+
docker stack up -c docker-compose.yml -c docker-compose.stager.yml -c docker-compose.swarm.yml --prune --with-registry-auth --resolve-image always "$1"

docker-deploy.sh

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,4 @@
33
# export variables defined in env.sh
44
set -a && source env.sh && set +a
55

6-
# add secrets, file and secret name will be identical
7-
for f in `ls $STREAMER_SECRETS_DIR`; do
8-
docker secret ls -f name=$f --format "{{.Name}}" | grep $f >/dev/null 2>&1
9-
if [ $? -eq 0 ]; then
10-
# secret with the same name exists, remove it
11-
docker secret rm $f
12-
fi
13-
# create new secret
14-
docker secret create $f secrets/$f
15-
done
16-
17-
docker stack up -c docker-compose.yml -c docker-compose.swarm.yml --with-registry-auth streamer4user
6+
docker stack up -c docker-compose.yml -c docker-compose.stager.yml -c docker-compose.swarm.yml --with-registry-auth lab-data-streamer

env.sh

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ PROJECT_VOL=./testdata/project
1414
PROJECT_CEPHFS_VOL=./testdata/project_cephfs
1515

1616
# volume for streamer job
17-
STREAMER_DB_DATA_VOL=./testdata/redis
17+
STREAMER_DB_DATA_VOL=./testdata/streamer/db
1818

1919
# volume for streamer log
2020
STREAMER_SERVICE_LOG_VOL=./testdata/streamer/log
@@ -35,7 +35,6 @@ STREAMER_UI_CRON_VOL=./testdata/ui/cron
3535
STREAMER_UI_LOG_VOL=./testdata/ui/log
3636

3737
# Configuration files
38-
STREAMER_SECRETS_DIR=./streamer/config
3938
STREAMER_SERVICE_CONFIG=./streamer/config/streamer-service-config.json
4039
STREAMER_MAILER_CONFIG=./streamer/config/streamer-mailer-config.json
4140
STREAMER_UI_CONFIG=./streamer/config/streamer-ui-config.json
@@ -68,3 +67,10 @@ POSTGRES_PASSWORD=$STREAMER_UI_DB_PASSWORD
6867
POSTGRES_DATABASE=$STREAMER_UI_DB_NAME
6968
GRAFANA_USER=grafanareader
7069
GRAFANA_PASSWORD=grafanareaderpassword
70+
71+
# configuration for stager
72+
STAGER_DOCKER_IMAGE_TAG=latest
73+
STAGER_DB_DATA_VOL=./testdata/stager/db
74+
STAGER_API_CONFIG=./streamer/config/stager-api-server.yml
75+
STAGER_WORKER_CONFIG=./streamer/config/stager-worker.yml
76+
STAGER_IRODS_ICAT_CERT=./streamer/config/stager-icat.pem

print_env.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ echo "# volume for streamer ui log"
3737
echo "STREAMER_UI_LOG_VOL=$STREAMER_UI_LOG_VOL"
3838
echo
3939
echo "# Configuration files"
40-
echo "STREAMER_SECRETS_DIR=$STREAMER_SECRETS_DIR"
4140
echo "STREAMER_SERVICE_CONFIG=$STREAMER_SERVICE_CONFIG"
4241
echo "STREAMER_MAILER_CONFIG=$STREAMER_MAILER_CONFIG"
4342
echo "STREAMER_UI_CONFIG=$STREAMER_UI_CONFIG"
@@ -71,3 +70,10 @@ echo "POSTGRES_PASSWORD=$POSTGRES_PASSWORD"
7170
echo "POSTGRES_DATABASE=$POSTGRES_DATABASE"
7271
echo "GRAFANA_USER=$GRAFANA_USER"
7372
echo "GRAFANA_PASSWORD=$GRAFANA_PASSWORD"
73+
echo
74+
echo "# configuration for stager"
75+
echo "STAGER_DOCKER_IMAGE_TAG=$STAGER_DOCKER_IMAGE_TAG"
76+
echo "STAGER_DB_DATA_VOL=$STAGER_DB_DATA_VOL"
77+
echo "STAGER_API_CONFIG=$STAGER_API_CONFIG"
78+
echo "STAGER_WORKER_CONFIG=$STAGER_WORKER_CONFIG"
79+
echo "STAGER_IRODS_ICAT_CERT=$STAGER_IRODS_ICAT_CERT"

streamer-ui/packages/server/routes/stager.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
const createError = require("http-errors");
22
const path = require("path");
3-
const { basicAuthString, fetchOnce } = require("./utils");
4-
const fetch = require("node-fetch");
3+
const { fetchOnce } = require("./utils");
54

65
// location of the streamer-service-config.json file.
76
const fconfig = path.join(__dirname, '../config/streamer-service-config.json');
@@ -20,15 +19,13 @@ var _getDac = async function(req, res, next) {
2019
delete require.cache[require.resolve(fconfig)];
2120

2221
const headers = {
23-
'Content-Type': 'application/json',
24-
'Authorization': basicAuthString(config.DataStager.username, config.DataStager.password),
22+
'Content-Type': 'application/json'
2523
};
2624

2725
fetchOnce(
28-
config.DataStager.url + "/rdm/DAC/project/" + projectId,
26+
config.DataStager.url + "/dac/project/" + projectId,
2927
{
3028
method: 'GET',
31-
credentials: 'include',
3229
headers,
3330
},
3431
1000 * 30, // timeout after 30 seconds

streamer-ui/packages/server/start-server.sh

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,6 @@
33
cd /opt/streamer-ui-server
44

55
env
6-
ls -l /run/secrets
7-
8-
# Check and copy configuration files from secrets
9-
if [ -f $STREAMER_SERVICE_CONFIG ]; then
10-
cp $STREAMER_SERVICE_CONFIG config/streamer-service-config.json
11-
fi
12-
13-
if [ -f $STREAMER_UI_CONFIG ]; then
14-
cp $STREAMER_UI_CONFIG config/streamer-ui-config.json
15-
fi
166

177
ls -l config
188

0 commit comments

Comments
 (0)