Skip to content

Deploy DSpace

Deploy DSpace #2367

Workflow file for this run

# DSpace Docker deploy on dataquest servers
name: Deploy DSpace
on:
workflow_call:
inputs:
INSTANCE:
required: false
type: string
default: '6'
IMPORT:
required: false
default: true
type: boolean
ERASE_DB:
required: false
default: false
type: boolean
workflow_dispatch:
inputs:
INSTANCE:
required: true
default: '6'
type: choice
options:
- '*'
- '6'
IMPORT:
required: true
default: true
type: boolean
ERASE_DB:
required: false
default: false
type: boolean
jobs:
deploy-6:
if: inputs.INSTANCE == '*' || inputs.INSTANCE == '6'
runs-on: dspace-dep-1
timeout-minutes: 10
env:
INSTANCE: '6'
ENVFILE: /opt/dspace-envs/.env.dspace.dev-5.tul
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
playwright-after-deploy6:
needs: deploy-6
if: '!inputs.IMPORT'
uses: ./.github/workflows/playwright-tests.yml
secrets: inherit
rest-tests-after-deploy6:
runs-on: ubuntu-latest
needs: playwright-after-deploy6
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:86/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-import6:
needs: import-6
if: inputs.IMPORT
uses: ./.github/workflows/playwright-tests.yml
secrets: inherit
rest-tests-after-import6:
runs-on: ubuntu-latest
needs: playwright-after-import6
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:86/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-6:
runs-on: dspace-dep-1
if: inputs.IMPORT && inputs.INSTANCE == '6'
timeout-minutes: 120
needs: deploy-6
env:
INSTANCE: '6'
steps:
- name: vanilla import
env:
FNAME: dspace_tul_dump_2025.10.27.sql
run: |
export DATADIR=/opt/dspace-data/tul-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 dspace && createdb -U dspace --owner=dspace --encoding=UNICODE dspace && psql -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:"
# very likely - https://groups.google.com/g/dspace-tech/c/tsoctFfNUsI/m/IIeYofYADAAJ
# 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"