Skip to content

Deploy DSpace

Deploy DSpace #2302

Workflow file for this run

# DSpace Docker deploy on dataquest servers
name: Deploy DSpace
on:
workflow_call:
inputs:
INSTANCE:
required: false
type: string
default: '4'
IMPORT:
required: false
default: true
type: boolean
ERASE_DB:
required: false
default: false
type: boolean
workflow_dispatch:
inputs:
INSTANCE:
required: true
default: '4'
type: choice
options:
- '*'
- '5'
- '8'
- '4'
IMPORT:
required: false
default: false
type: boolean
ERASE_DB:
required: false
default: false
type: boolean
jobs:
deploy-4:
if: inputs.INSTANCE == '*' || inputs.INSTANCE == '4'
runs-on: dspace-dep-1
timeout-minutes: 10
env:
INSTANCE: '4'
ENVFILE: /opt/dspace-envs/.env.dspace.dev-5.zcu.pub
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 dev-5
working-directory: build-scripts/run/
run: |
./start.sh dspace-$INSTANCE
cd ../..
# this is not necessary, since extra.yml doesn't contain any new images that weren't pulled within script above
# docker compose --env-file $ENVFILE -p dspace-$INSTANCE -f docker/docker-compose.yml -f docker/docker-compose-rest.yml -f /opt/dspace-envs/4/extra.yml pull
docker compose --env-file $ENVFILE -p dspace-$INSTANCE -f docker/docker-compose.yml -f docker/docker-compose-rest.yml -f /opt/dspace-envs/4/extra.yml up -d --no-build
playwright-after-deploy4:
needs: deploy-4
if: '!inputs.IMPORT'
uses: ./.github/workflows/playwright-tests.yml
secrets: inherit
rest-tests-after-deploy4:
runs-on: ubuntu-latest
needs: playwright-after-deploy4
timeout-minutes: 120
env:
GH_TOKEN: ${{ secrets.DEPLOY_DEV5_GH_ACTION_DISPATCH }}
REPO: dataquest-dev/dspace-rest-test
WORKFLOW: run_unittests.yml
steps:
- name: run rest-tests
run: |
OUTPUT=$(gh workflow run "$WORKFLOW" \
--repo "$REPO" \
--ref master \
-f CUSTOMER="${{ github.ref_name }}" \
-f URL="http://dev-5.pc:84/server/api" 2>&1)
RUN_ID=$(echo "$OUTPUT" | grep -oE '/runs/[0-9]+' | grep -oE '[0-9]+')
echo "Watching run: https://github.com/$REPO/actions/runs/$RUN_ID"
gh run watch "$RUN_ID" --repo "$REPO" --interval 30 --exit-status
playwright-after-import4:
needs: import-4
if: inputs.IMPORT
uses: ./.github/workflows/playwright-tests.yml
secrets: inherit
rest-tests-after-import4:
runs-on: ubuntu-latest
needs: playwright-after-import4
timeout-minutes: 120
env:
GH_TOKEN: ${{ secrets.DEPLOY_DEV5_GH_ACTION_DISPATCH }}
REPO: dataquest-dev/dspace-rest-test
WORKFLOW: run_unittests.yml
steps:
- name: run rest-tests
run: |
OUTPUT=$(gh workflow run "$WORKFLOW" \
--repo "$REPO" \
--ref master \
-f CUSTOMER="${{ github.ref_name }}" \
-f URL="http://dev-5.pc:84/server/api" 2>&1)
RUN_ID=$(echo "$OUTPUT" | grep -oE '/runs/[0-9]+' | grep -oE '[0-9]+')
echo "Watching run: https://github.com/$REPO/actions/runs/$RUN_ID"
gh run watch "$RUN_ID" --repo "$REPO" --interval 30 --exit-status
import-4:
runs-on: dspace-dep-1
if: inputs.IMPORT && inputs.INSTANCE == '4'
timeout-minutes: 120
needs: deploy-4
env:
INSTANCE: '4'
steps:
- name: vanilla import
env:
FNAME: dump.sql
run: |
export DATADIR=/opt/dspace-data/zcu-dump/$FNAME
export DNAME=dspace$INSTANCE
export DDBNAME=dspacedb$INSTANCE
echo "====="
docker stop $DNAME || true
echo "====="
# echo Starting vanilla import DB
docker cp $DATADIR $DDBNAME:/tmp/
# drop + create + import + cleanup
docker exec $DDBNAME /bin/bash -c "dropdb -U dspace -p 543$INSTANCE dspace && createdb -U dspace -p 543$INSTANCE --owner=dspace --encoding=UNICODE dspace && psql -p 543$INSTANCE -U dspace -d dspace -f /tmp/$FNAME && 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 dspace.admin.dev@dataquest.sk -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 basic command
run: |
export DNAME=dspace$INSTANCE
docker logs -n 50 $DNAME
echo "dspace version:"
docker exec $DNAME /bin/bash -c "cd /dspace/bin && ./dspace version"
echo "dspace cleanup:"
docker exec $DNAME /bin/bash -c "cd /dspace/bin && ./dspace cleanup -v"
echo "dspace reindex solr:"
docker exec $DNAME /bin/bash -c "cd /dspace/bin && ./dspace index-discovery -b"
echo "dspace reindex OAI-PMH:"
docker exec $DNAME /bin/bash -c "cd /dspace/bin && ./dspace oai import -c"
- name: dspace healthcheck
run: |
export DNAME=dspace$INSTANCE
echo "dspace healthcheck:"
# docker exec $DNAME /bin/bash -c "cd /dspace/bin && ./dspace healthcheck -v"
- name: dspace basic command
run: |
echo "dspace checker:"
# docker exec $DNAME /bin/bash -c "cd /dspace/bin && ./dspace checker -v -l"