forked from DSpace/dspace-angular
-
Notifications
You must be signed in to change notification settings - Fork 2
127 lines (118 loc) · 4.34 KB
/
Copy pathdeploy.yml
File metadata and controls
127 lines (118 loc) · 4.34 KB
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
# DSpace Docker deploy on dataquest servers
name: Deploy DSpace
on:
workflow_call:
inputs:
DEV_MACHINE:
required: false
type: string
default: 'dev-6'
INSTANCE:
required: false
type: string
default: '8563'
IMPORT:
required: false
default: true
type: boolean
ERASE_DB:
required: false
default: false
type: boolean
workflow_dispatch:
inputs:
INSTANCE:
required: true
default: '8563'
type: choice
options:
- '8563'
IMPORT:
required: true
default: true
type: boolean
ERASE_DB:
required: false
default: false
type: boolean
DEV_MACHINE:
required: false
type: string
default: 'dev-6'
jobs:
deploy-3:
if: inputs.INSTANCE == '*' || inputs.INSTANCE == '8563'
runs-on: dspace-${{inputs.DEV_MACHINE}}-dep-1
timeout-minutes: 10
env:
INSTANCE: '8563'
CONFIG_PATH: /opt/dspace-envs/${{inputs.INSTANCE}}
ENVFILE: /opt/dspace-envs/${{inputs.INSTANCE}}/.env
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/erase-db
if: inputs.ERASE_DB
with:
INSTANCE: ${{ env.INSTANCE }}
NAME: dspace-${{ env.INSTANCE }}
- name: deploy to ${{inputs.DEV_MACHINE}}
working-directory: build-scripts/run/
run: |
./start.sh dspace-$INSTANCE
cd ../..
# use customized docker-compose file for the `85` port because the server is exposed with the namespace `repository`
# `/repository/server`
docker compose --env-file $ENVFILE -p dspace-$INSTANCE -f docker/docker-compose.yml -f docker/docker-compose-rest.yml -f $CONFIG_PATH/docker-compose-rest.yml -f $CONFIG_PATH/docker-compose.yml up -d --no-build
import-3:
runs-on: dspace-${{inputs.DEV_MACHINE}}-dep-1
if: inputs.IMPORT
timeout-minutes: 120
needs: deploy-3
env:
INSTANCE: ${{inputs.INSTANCE}}
CONFIG_PATH: /opt/dspace-envs/
steps:
- name: vanilla import
env:
FNAME: old_dump.sql
run: |
export DATADIR=$CONFIG_PATH/${{inputs.INSTANCE}}/dump/$FNAME
export DNAME=dspace${{inputs.INSTANCE}}
export DDBNAME=dspacedb${{inputs.INSTANCE}}
docker stop $DNAME || true
echo "====="
# echo Starting vanilla import DB
docker cp $DATADIR $DDBNAME:/tmp/
# Terminate connections, drop, create, import, add required extensions, cleanup
docker exec $DDBNAME /bin/bash -c "
psql -p 10563 -U dspace -d postgres -c \"SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'dspace' AND pid <> pg_backend_pid();\" &&
dropdb -U dspace -p 10563 dspace &&
createdb -U dspace -p 10563 --owner=dspace --encoding=UNICODE dspace &&
(psql -p 10563 -U dspace -d postgres -c \"CREATE ROLE postgres SUPERUSER;\" || true) &&
(psql -p 10563 -U dspace -d postgres -c \"CREATE ROLE dspace5 IN ROLE dspace;\" || true) &&
psql -p 10563 -U dspace -d dspace -f /tmp/$FNAME &&
psql -p 10563 -U dspace -d dspace -c 'CREATE EXTENSION IF NOT EXISTS pgcrypto;' &&
psql -p 10563 -U dspace -d dspace -c \"
WITH ranked AS (
SELECT ctid, row_number() OVER (PARTITION BY eperson_group_id, eperson_id ORDER BY ctid) AS rn
FROM epersongroup2eperson
)
DELETE FROM epersongroup2eperson
WHERE ctid IN (SELECT ctid FROM ranked WHERE rn > 1);
\" &&
rm /tmp/$FNAME
"
echo "====="
docker start $DNAME
sleep 60
docker exec $DNAME /bin/bash -c "cd /dspace/bin && ./dspace database migrate ignored && ./dspace create-administrator -e test@test.edu -f admin -l user -p admin -c en -o dataquest"
echo "====="
# new user will not be accepted unless restarted
docker restart $DNAME
sleep 60
echo "====="
- name: dspace healthcheck
run: |
export DNAME=dspace${{inputs.INSTANCE}}
echo "dspace healthcheck:"
docker exec $DNAME /bin/bash -c "cd /dspace/bin && ./dspace healthcheck -v"