diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 88e603088fc..a71e1a0e031 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -188,31 +188,31 @@ jobs: - name: Shutdown Docker containers run: docker-compose -f ./docker/docker-compose-ci.yml down - # Codecov upload is a separate job in order to allow us to restart this separate from the entire build/test - # job above. This is necessary because Codecov uploads seem to randomly fail at times. - # See https://community.codecov.com/t/upload-issues-unable-to-locate-build-via-github-actions-api/3954 - codecov: - # Must run after 'tests' job above - needs: tests - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - # Download artifacts from previous 'tests' job - - name: Download coverage artifacts - uses: actions/download-artifact@v3 - - # Now attempt upload to Codecov using its action. - # NOTE: We use a retry action to retry the Codecov upload if it fails the first time. - # - # Retry action: https://github.com/marketplace/actions/retry-action - # Codecov action: https://github.com/codecov/codecov-action - - name: Upload coverage to Codecov.io - uses: Wandalen/wretry.action@v1.0.36 - with: - action: codecov/codecov-action@v3 - # Try upload 5 times max - attempt_limit: 5 - # Run again in 30 seconds - attempt_delay: 30000 +# # Codecov upload is a separate job in order to allow us to restart this separate from the entire build/test +# # job above. This is necessary because Codecov uploads seem to randomly fail at times. +# # See https://community.codecov.com/t/upload-issues-unable-to-locate-build-via-github-actions-api/3954 +# codecov: +# # Must run after 'tests' job above +# needs: tests +# runs-on: ubuntu-latest +# steps: +# - name: Checkout +# uses: actions/checkout@v3 +# +# # Download artifacts from previous 'tests' job +# - name: Download coverage artifacts +# uses: actions/download-artifact@v3 +# +# # Now attempt upload to Codecov using its action. +# # NOTE: We use a retry action to retry the Codecov upload if it fails the first time. +# # +# # Retry action: https://github.com/marketplace/actions/retry-action +# # Codecov action: https://github.com/codecov/codecov-action +# - name: Upload coverage to Codecov.io +# uses: Wandalen/wretry.action@v1.0.36 +# with: +# action: codecov/codecov-action@v3 +# # Try upload 5 times max +# attempt_limit: 5 +# # Run again in 30 seconds +# attempt_delay: 30000 diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d5bf9e259ce..b9d77cec5fa 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -12,6 +12,10 @@ on: required: false default: true type: boolean + ERASE_DB: + required: false + default: false + type: boolean workflow_dispatch: inputs: @@ -28,10 +32,14 @@ on: required: true default: true type: boolean + ERASE_DB: + required: false + default: false + type: boolean jobs: - deploy: - if: github.event.inputs.INSTANCE == '*' || github.event.inputs.INSTANCE == '2' + deploy-5: + if: inputs.INSTANCE == '*' || inputs.INSTANCE == '2' runs-on: dspace-dep-1 timeout-minutes: 5 env: @@ -40,22 +48,33 @@ jobs: 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 deploy-8: - if: github.event.inputs.INSTANCE == '*' || github.event.inputs.INSTANCE == '8' + if: inputs.INSTANCE == '*' || inputs.INSTANCE == '8' runs-on: dspace-dep-1 timeout-minutes: 120 env: INSTANCE: '8' + # 2024/02: this .env replaces ENTRYPOINT to angular + # !!!!WARNING!!!! + # disable TSL checks = allowing to cooperate with https backend with invalid + # certificate ENVFILE: /opt/dspace-envs/.env.dspace.imported.dev-5 steps: - uses: actions/checkout@v4 - uses: ./.github/actions/erase-db + if: inputs.ERASE_DB with: INSTANCE: ${{ env.INSTANCE }} NAME: dspace-${{ env.INSTANCE }} @@ -69,7 +88,7 @@ jobs: import-8: runs-on: dspace-dep-1 - if: github.event.inputs.IMPORT == 'true' + if: inputs.IMPORT needs: deploy-8 env: INSTANCE: '8' diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index a618a4ef3ac..2d6f7be61da 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -3,6 +3,9 @@ name: Docker images # Run this Build for all pushes to 'main' or maintenance branches, or tagged releases. # Also run for PRs to ensure PR doesn't break Docker build process +# NOTE: uses "reusable-docker-build.yml" in DSpace/DSpace to actually build each of the Docker images +# https://github.com/DSpace/DSpace/blob/main/.github/workflows/reusable-docker-build.yml +# on: push: branches: @@ -15,130 +18,44 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: - docker: + dspace-angular: # Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace-angular' if: github.repository == 'dataquest-dev/dspace-angular' - runs-on: ubuntu-latest - env: - # Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action) - # For a new commit on default branch (main), use the literal tag 'dspace-7_x' on Docker image. - # For a new commit on other branches, use the branch name as the tag for Docker image. - # For a new tag, copy that tag name as the tag for Docker image. - IMAGE_TAGS: | - type=raw,value=dspace-7_x,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }} - type=ref,event=branch,enable=${{ !endsWith(github.ref, github.event.repository.default_branch) }} - type=ref,event=tag - # Define default tag "flavor" for docker/metadata-action per - # https://github.com/docker/metadata-action#flavor-input - # We turn off 'latest' tag by default. - TAGS_FLAVOR: | - latest=false - - steps: - # https://github.com/actions/checkout - - name: Checkout codebase - uses: actions/checkout@v3 - - # https://github.com/docker/setup-buildx-action - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v2 - - # https://github.com/docker/setup-qemu-action - - name: Set up QEMU emulation to build for multiple architectures - uses: docker/setup-qemu-action@v2 - - # https://github.com/docker/login-action - - name: Login to DockerHub - # Only login if not a PR, as PRs only trigger a Docker build and not a push - if: github.event_name != 'pull_request' - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_ACCESS_TOKEN }} - - # https://github.com/docker/metadata-action - # Get Metadata for docker_build step below - - name: Sync metadata (tags, labels) from GitHub to Docker for 'dspace-angular' image - id: meta_build - uses: docker/metadata-action@v4 - with: - images: dataquest/dspace-angular - tags: ${{ env.IMAGE_TAGS }} - flavor: ${{ env.TAGS_FLAVOR }} - - # https://github.com/docker/build-push-action - - name: Build and push 'dspace-angular' image - id: docker_build - uses: docker/build-push-action@v4 - with: - context: . - file: ./Dockerfile - platforms: ${{ env.PLATFORMS }} - # For pull requests, we run the Docker build (to ensure no PR changes break the build), - # but we ONLY do an image push to DockerHub if it's NOT a PR - push: ${{ github.event_name != 'pull_request' }} - # Use tags / labels provided by 'docker/metadata-action' above - tags: ${{ steps.meta_build.outputs.tags }} - labels: ${{ steps.meta_build.outputs.labels }} + uses: dataquest-dev/DSpace/.github/workflows/reusable-docker-build.yml@dtq-dev + with: + build_id: dspace-angular + image_name: dataquest/dspace-angular + dockerfile_path: ./Dockerfile + run_python_version_script: true + python_version_script_dest: src/static-files/VERSION_D.html + secrets: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }} ############################################################# # Build/Push the 'dataquest/dspace-angular' image ('-dist' tag) ############################################################# dspace-angular-dist: # Ensure this job never runs on forked repos. It's only executed for 'dataquest/dspace-angular' - if: github.repository == 'dataquest/dspace-angular' - runs-on: ubuntu-latest - - steps: - # https://github.com/actions/checkout - - name: Checkout codebase - uses: actions/checkout@v3 - - # https://github.com/docker/setup-buildx-action - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v2 - - # https://github.com/docker/setup-qemu-action - - name: Set up QEMU emulation to build for multiple architectures - uses: docker/setup-qemu-action@v2 - - # https://github.com/docker/login-action - - name: Login to DockerHub - # Only login if not a PR, as PRs only trigger a Docker build and not a push - if: github.event_name != 'pull_request' - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_ACCESS_TOKEN }} - - # https://github.com/docker/metadata-action - # Get Metadata for docker_build_dist step below - - name: Sync metadata (tags, labels) from GitHub to Docker for 'dspace-angular-dist' image - id: meta_build_dist - uses: docker/metadata-action@v4 - with: - images: dataquest/dspace-angular - tags: ${{ env.IMAGE_TAGS }} - # As this is a "dist" image, its tags are all suffixed with "-dist". Otherwise, it uses the same - # tagging logic as the primary 'dspace/dspace-angular' image above. - flavor: ${{ env.TAGS_FLAVOR }} - suffix=-dist - - - name: Build and push 'dspace-angular-dist' image - id: docker_build_dist - uses: docker/build-push-action@v4 - with: - context: . - file: ./Dockerfile.dist - platforms: ${{ env.PLATFORMS }} - # For pull requests, we run the Docker build (to ensure no PR changes break the build), - # but we ONLY do an image push to DockerHub if it's NOT a PR - push: ${{ github.event_name != 'pull_request' }} - # Use tags / labels provided by 'docker/metadata-action' above - tags: ${{ steps.meta_build_dist.outputs.tags }} - labels: ${{ steps.meta_build_dist.outputs.labels }} + if: github.repository == 'dataquest-dev/dspace-angular' && false # not used for now + uses: dataquest-dev/DSpace/.github/workflows/reusable-docker-build.yml@dtq-dev + with: + build_id: dspace-angular-dist + image_name: dspace/dspace-angular + dockerfile_path: ./Dockerfile.dist + # As this is a "dist" image, its tags are all suffixed with "-dist". Otherwise, it uses the same + # tagging logic as the primary 'dspace/dspace-angular' image above. + tags_flavor: suffix=-dist + run_python_version_script: true + python_version_script_dest: src/static-files/VERSION_D.html + secrets: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }} deploy: - needs: docker + needs: dspace-angular uses: dataquest-dev/dspace-angular/.github/workflows/deploy.yml@customer/uk + with: + INSTANCE: '2' + IMPORT: false secrets: inherit diff --git a/.github/workflows/import.yml b/.github/workflows/import.yml deleted file mode 100644 index a0c22d2241a..00000000000 --- a/.github/workflows/import.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Import DSpace v5 - -on: - workflow_dispatch: - inputs: - INSTANCE: - required: true - default: '8' - type: choice - options: - - '8' - -jobs: - import: - runs-on: dspace-dep-1 - steps: - - - uses: actions/checkout@v4 - - - uses: ./.github/actions/erase-db - with: - INSTANCE: ${{ env.INSTANCE }} - NAME: dspace-${{ env.INSTANCE }} - - - name: deploy dspace-import on dev-5 - working-directory: build-scripts/run/ - run: | - ENVFILE=/opt/dspace-envs/.env.dspace.imported.dev-5 ./start.sh dspace-$INSTANCE - /bin/bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://dev-5.pc:8$INSTANCE/server/api)" != "200" ]]; do sleep 5; done' - - - uses: ./.github/actions/import-db - if: github.event.inputs.IMPORT != false - with: - INSTANCE: ${{ env.INSTANCE }} - DATADIR: /opt/dspace-data/clarin-dspace/ diff --git a/.github/workflows/reindex.yml b/.github/workflows/reindex.yml deleted file mode 100644 index 06aaa4d7aa3..00000000000 --- a/.github/workflows/reindex.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Reindex dev-5 -on: - workflow_dispatch: -jobs: - reindex: - runs-on: dspace-dep-1 - steps: - - uses: actions/checkout@v3 - - name: reindex everything - run: | - cd $GITHUB_WORKSPACE/build-scripts/run/ - pwd - ./reindex.sh - docker exec dspace /dspace/bin/dspace oai clean-cache diff --git a/scripts/sourceversion.py b/scripts/sourceversion.py new file mode 100644 index 00000000000..6ac25034273 --- /dev/null +++ b/scripts/sourceversion.py @@ -0,0 +1,14 @@ +import subprocess +from datetime import datetime + +if __name__ == '__main__': + ts = datetime.now() + print(f"timestamp: {ts}") + + cmd = 'git log -1 --pretty=format:"%h - %ai"' + print(f">{cmd}") + subprocess.check_call(cmd, shell=True) + + cmd = 'git status --porcelain' + print(f">{cmd}:") + subprocess.check_call(cmd, shell=True) diff --git a/src/aai/aai.js b/src/aai/aai.js index cdfc7fc508e..e40e1c388dc 100644 --- a/src/aai/aai.js +++ b/src/aai/aai.js @@ -43,7 +43,7 @@ // Encode the redirect URL targetUrl += window.encodeURIComponent(redirectUrl); - window.location = opts.host + '/Shibboleth.sso/Login?SAMLDS=1&target=' + targetUrl + '&entityID=' + window.encodeURIComponent(e.entityID); + window.location = opts.host + opts.port + '/Shibboleth.sso/Login?SAMLDS=1&target=' + targetUrl + '&entityID=' + window.encodeURIComponent(e.entityID); }; //console.log(opts); if(!opts.target){ @@ -56,7 +56,7 @@ opts.ourEntityID, opts.responseUrl, [ ], - opts.host + '/Shibboleth.sso/Login?SAMLDS=1&target=' + targetUrl + '&entityID='); + opts.host + opts.port + '/Shibboleth.sso/Login?SAMLDS=1&target=' + targetUrl + '&entityID='); djc.discoPath = window.location.origin + (namespace === '' ? namespace : '/' + namespace) + "/assets/"; djc.metadata = [opts.metadataFeed]; djc.subtitle = "Login via Your home institution (e.g. university)"; diff --git a/src/aai/discojuice/discojuice.js b/src/aai/discojuice/discojuice.js index 821562e0848..4fd1397fcb4 100644 --- a/src/aai/discojuice/discojuice.js +++ b/src/aai/discojuice/discojuice.js @@ -33,7 +33,7 @@ d+" entries listed"))},error:function(a){console.log("error"+a);this.popu DiscoJuice.Dict.helpMore),h=this.parent.Utils.options.get("subtitle",null),c='
";var f=this,d=$("body");this.parent.Utils.options.get("useTarget",!1)&&(d=this.parent.Utils.options.get("target",d));/*console.log("Target is");console.log(d);*/this.parent.Utils.options.get("overlay",!0)&&(/*console.log("DiscoJuice Enable: adding overlay"),*/$('').appendTo($("body")));this.popup=$(c).appendTo(d); var that = this; diff --git a/src/app/home-page/home-page.component.html b/src/app/home-page/home-page.component.html index 3506faa5c3f..f9f8ce50836 100644 --- a/src/app/home-page/home-page.component.html +++ b/src/app/home-page/home-page.component.html @@ -44,13 +44,16 @@