From 4c6f6ad755156b49b6e08ddd831ed99bbd575538 Mon Sep 17 00:00:00 2001 From: Ben Peachey Date: Fri, 27 Jun 2025 14:45:21 +0200 Subject: [PATCH 1/6] Add job to create docker image names and cache keys. --- .github/workflows/solid-tests-suites.yml | 34 ++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/.github/workflows/solid-tests-suites.yml b/.github/workflows/solid-tests-suites.yml index 4f302a5d..78d4df31 100644 --- a/.github/workflows/solid-tests-suites.yml +++ b/.github/workflows/solid-tests-suites.yml @@ -22,6 +22,40 @@ concurrency: cancel-in-progress: true jobs: + docker-images: + outputs: + COOKIE_IMAGE: ${{ steps.images.outputs.COOKIE_IMAGE}} + COOKIE_KEY: ${{ steps.keys.outputs.COOKIE_KEY }}'" + PUBSUB_IMAGE: ${{ steps.images.outputs.PUBSUB_IMAGE }} + PUBSUB_KEY: ${{ steps.keys.outputs.PUBSUB_KEY }}'" + SOLID_CRUD_TESTS_IMAGE: ${{steps.images.outputs.SOLID_CRUD_TESTS_IMAGE}} + SOLID_CRUD_TESTS_KEY: ${{ steps.keys.outputs.SOLID_CRUD_TESTS_KEY }}'" + WEB_ACCESS_CONTROL_TESTS_IMAGE: ${{steps.images.outputs.WEB_ACCESS_CONTROL_TESTS_IMAGE}} + WEB_ACCESS_CONTROL_TESTS_KEY: ${{ steps.keys.outputs.WEB_ACCESS_CONTROL_TESTS_KEY }}'" + WEBID_PROVIDER_TESTS_IMAGE: ${{steps.images.outputs.WEBID_PROVIDER_TESTS_IMAGE}} + WEBID_PROVIDER_TESTS_KEY: ${{ steps.keys.outputs.WEBID_PROVIDER_TESTS_KEY }}'" + runs-on: ubuntu-latest + steps: + - id: images + run: >- + echo "COOKIE_IMAGE='michielbdejong/nextcloud-cookie:${{ env.COOKIE_TAG }}'" >> "${GITHUB_OUTPUT}"; + echo "PUBSUB_IMAGE='ghcr.io/pdsinterop/php-solid-pubsub-server:${{ env.PUBSUB_TAG }}'" >> "${GITHUB_OUTPUT}"; + echo "SOLID_CRUD_TESTS_IMAGE='solidtestsuite/solid-crud-tests:v7.0.5'" >> "${GITHUB_OUTPUT}"; + echo "WEB_ACCESS_CONTROL_TESTS_IMAGE='solidtestsuite/web-access-control-tests:v7.1.0'" >> "${GITHUB_OUTPUT}"; + echo "WEBID_PROVIDER_TESTS_IMAGE='solidtestsuite/webid-provider-tests:v2.1.1'" >> "${GITHUB_OUTPUT}"; + - id: keys + run: >- + echo "COOKIE_KEY='${{ steps.outputs.COOKIE_IMAGE }}'" + | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}"; + echo "PUBSUB_KEY='${{ steps.outputs.PUBSUB_IMAGE }}'" + | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}"; + echo "SOLID_CRUD_TESTS_KEY='${{ steps.outputs.SOLID_CRUD_TESTS_IMAGE }}'" + | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}"; + echo "WEB_ACCESS_CONTROL_TESTS_KEY='${{ steps.outputs.WEB_ACCESS_CONTROL_TESTS_IMAGE }}'" + | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}"; + echo "WEBID_PROVIDER_TESTS_KEY='${{ steps.outputs.WEBID_PROVIDER_TESTS_IMAGE }}'" + | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}"; + # @TODO: Instead of building the docker image here, take a pre-build image and mount the code? # (only build when the Dockerfile changes) Or only push when tagged/main? build-docker-nextcloud: From 2e9f8ffcddac6c308748a7fcc70a27640c55aab1 Mon Sep 17 00:00:00 2001 From: Ben Peachey Date: Fri, 27 Jun 2025 14:46:50 +0200 Subject: [PATCH 2/6] Add jobs to save pulled images to GHA cache. --- .github/workflows/solid-tests-suites.yml | 77 ++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/.github/workflows/solid-tests-suites.yml b/.github/workflows/solid-tests-suites.yml index 78d4df31..c7a3520a 100644 --- a/.github/workflows/solid-tests-suites.yml +++ b/.github/workflows/solid-tests-suites.yml @@ -105,6 +105,83 @@ jobs: mkdir -p cache/solid-nextcloud docker image save solid-nextcloud:${{ env.TAG }} --output ./cache/solid-nextcloud/${{ github.sha }}-${{ matrix.nextcloud_version }}.tar + pull-docker-cookie: + needs: docker-images + runs-on: ubuntu-latest + steps: + - uses: actions/cache@v4 + id: cache-docker-cookie + with: + path: cache/ + key: ${{ needs.docker-images.outputs.COOKIE_KEY }} + - if: steps.cache-docker-cookie.outputs.cache-hit != 'true' + run: | + mkdir -p cache/ + docker pull ${{ needs.docker-images.outputs.COOKIE_IMAGE }} + docker image save ${{ needs.docker-images.outputs.COOKIE_IMAGE }} \ + --output ./cache/${{ needs.docker-images.outputs.COOKIE_KEY }}.tar + pull-docker-pubsub: + needs: docker-images + runs-on: ubuntu-latest + steps: + - uses: actions/cache@v4 + id: cache-docker-pubsub + with: + path: cache/ + key: ${{ needs.docker-images.outputs.PUBSUB_KEY }} + - if: steps.cache-docker-pubsub.outputs.cache-hit != 'true' + run: | + mkdir -p cache/ + docker pull ${{ needs.docker-images.outputs.PUBSUB_IMAGE }} + docker image save ${{ needs.docker-images.outputs.PUBSUB_IMAGE }} \ + --output ./cache/${{ needs.docker-images.outputs.PUBSUB_KEY }}.tar + + pull-docker-solid-crud-tests: + needs: docker-images + runs-on: ubuntu-latest + steps: + - uses: actions/cache@v4 + id: cache-docker-solid-crud-tests + with: + path: cache/ + key: ${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_KEY }} + - if: steps.cache-docker-solid-crud-tests.outputs.cache-hit != 'true' + run: | + mkdir -p cache/ + docker pull ${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_IMAGE }} + docker image save ${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_IMAGE }} \ + --output ./cache/${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_KEY }}.tar + pull-docker-web-access-control-tests: + needs: docker-images + runs-on: ubuntu-latest + steps: + - uses: actions/cache@v4 + id: cache-docker-web-access-control-tests + with: + path: cache/ + key: ${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_KEY }} + - if: steps.cache-docker-web-access-control-tests.outputs.cache-hit != 'true' + run: | + mkdir -p cache/ + docker pull ${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_IMAGE }} + docker image save ${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_IMAGE }} \ + --output ./cache/${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_KEY }}.tar + pull-docker-webid-provider-tests: + needs: docker-images + runs-on: ubuntu-latest + steps: + - uses: actions/cache@v4 + id: cache-docker-webid-provider-tests + with: + path: cache/ + key: ${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_KEY }} + - if: steps.cache-docker-webid-provider-tests.outputs.cache-hit != 'true' + run: | + mkdir -p cache/ + docker pull ${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_IMAGE }} + docker image save ${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_IMAGE }} \ + --output ./cache/${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_KEY }}.tar + solid-testsuite: timeout-minutes: 30 needs: From f8eea789f656d380bc5371303bbf4d58142b785c Mon Sep 17 00:00:00 2001 From: Ben Peachey Date: Fri, 27 Jun 2025 14:50:01 +0200 Subject: [PATCH 3/6] Change GHA for solid-test-suites to load docker images from cache. --- .github/workflows/solid-tests-suites.yml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/solid-tests-suites.yml b/.github/workflows/solid-tests-suites.yml index c7a3520a..715d64ff 100644 --- a/.github/workflows/solid-tests-suites.yml +++ b/.github/workflows/solid-tests-suites.yml @@ -186,6 +186,12 @@ jobs: timeout-minutes: 30 needs: - build-docker-nextcloud + - docker-images + - pull-docker-cookie + - pull-docker-pubsub + - pull-docker-solid-crud-tests + - pull-docker-web-access-control-tests + - pull-docker-webid-provider-tests runs-on: ubuntu-latest @@ -226,13 +232,12 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - # FIXME: The `docker pull` should be moved to a previous step and cached - - name: Pull docker Images + - name: Load docker Images run: | docker image load --input ./cache/solid-nextcloud/${{ github.sha }}-${{ matrix.nextcloud_version }}.tar - docker pull michielbdejong/nextcloud-cookie:${{ env.COOKIE_TAG }} - docker pull ${{ matrix.test }} - docker pull ghcr.io/pdsinterop/php-solid-pubsub-server:${{ env.PUBSUB_TAG }} + docker image load --input ./cache/${{ needs.docker-images.outputs.COOKIE_IMAGE }}.tar + docker image load --input ./cache/${{ matrix.test }}.tar + docker image load --input ./cache/${{ needs.docker-images.outputs.PUBSUB_TAG }}.tar - name: Start Docker Containers run: | From 8aa67761b5a88dbd7430a2659b37df4ee054c8af Mon Sep 17 00:00:00 2001 From: Ben Peachey Date: Fri, 27 Jun 2025 14:50:52 +0200 Subject: [PATCH 4/6] Change id in GHA for solid-test-suites to be consistent with other ids. --- .github/workflows/solid-tests-suites.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/solid-tests-suites.yml b/.github/workflows/solid-tests-suites.yml index 715d64ff..f00530d1 100644 --- a/.github/workflows/solid-tests-suites.yml +++ b/.github/workflows/solid-tests-suites.yml @@ -81,7 +81,7 @@ jobs: >> "${GITHUB_ENV}" - uses: actions/cache@v4 - id: cache-solid-nextcloud-docker + id: cache-docker-solid-nextcloud with: path: cache/solid-nextcloud key: solid-nextcloud-docker-${{ matrix.nextcloud_version }}-${{ github.sha }} @@ -221,7 +221,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/cache@v4 - id: cache-solid-nextcloud-docker + id: cache-docker-solid-nextcloud with: path: cache/solid-nextcloud key: solid-nextcloud-docker-${{ matrix.nextcloud_version }}-${{ github.sha }} From 5b8d67179548410d4252808b861927bbebfc79f1 Mon Sep 17 00:00:00 2001 From: Ben Peachey Date: Fri, 27 Jun 2025 14:55:01 +0200 Subject: [PATCH 5/6] Fix various incorrect definitions. --- .github/workflows/solid-tests-suites.yml | 122 +++++++++++++---------- 1 file changed, 70 insertions(+), 52 deletions(-) diff --git a/.github/workflows/solid-tests-suites.yml b/.github/workflows/solid-tests-suites.yml index f00530d1..c69e3644 100644 --- a/.github/workflows/solid-tests-suites.yml +++ b/.github/workflows/solid-tests-suites.yml @@ -25,35 +25,35 @@ jobs: docker-images: outputs: COOKIE_IMAGE: ${{ steps.images.outputs.COOKIE_IMAGE}} - COOKIE_KEY: ${{ steps.keys.outputs.COOKIE_KEY }}'" + COOKIE_KEY: ${{ steps.keys.outputs.COOKIE_KEY }} PUBSUB_IMAGE: ${{ steps.images.outputs.PUBSUB_IMAGE }} - PUBSUB_KEY: ${{ steps.keys.outputs.PUBSUB_KEY }}'" + PUBSUB_KEY: ${{ steps.keys.outputs.PUBSUB_KEY }} SOLID_CRUD_TESTS_IMAGE: ${{steps.images.outputs.SOLID_CRUD_TESTS_IMAGE}} - SOLID_CRUD_TESTS_KEY: ${{ steps.keys.outputs.SOLID_CRUD_TESTS_KEY }}'" + SOLID_CRUD_TESTS_KEY: ${{ steps.keys.outputs.SOLID_CRUD_TESTS_KEY }} WEB_ACCESS_CONTROL_TESTS_IMAGE: ${{steps.images.outputs.WEB_ACCESS_CONTROL_TESTS_IMAGE}} - WEB_ACCESS_CONTROL_TESTS_KEY: ${{ steps.keys.outputs.WEB_ACCESS_CONTROL_TESTS_KEY }}'" + WEB_ACCESS_CONTROL_TESTS_KEY: ${{ steps.keys.outputs.WEB_ACCESS_CONTROL_TESTS_KEY }} WEBID_PROVIDER_TESTS_IMAGE: ${{steps.images.outputs.WEBID_PROVIDER_TESTS_IMAGE}} - WEBID_PROVIDER_TESTS_KEY: ${{ steps.keys.outputs.WEBID_PROVIDER_TESTS_KEY }}'" + WEBID_PROVIDER_TESTS_KEY: ${{ steps.keys.outputs.WEBID_PROVIDER_TESTS_KEY }} runs-on: ubuntu-latest steps: - id: images - run: >- - echo "COOKIE_IMAGE='michielbdejong/nextcloud-cookie:${{ env.COOKIE_TAG }}'" >> "${GITHUB_OUTPUT}"; - echo "PUBSUB_IMAGE='ghcr.io/pdsinterop/php-solid-pubsub-server:${{ env.PUBSUB_TAG }}'" >> "${GITHUB_OUTPUT}"; - echo "SOLID_CRUD_TESTS_IMAGE='solidtestsuite/solid-crud-tests:v7.0.5'" >> "${GITHUB_OUTPUT}"; - echo "WEB_ACCESS_CONTROL_TESTS_IMAGE='solidtestsuite/web-access-control-tests:v7.1.0'" >> "${GITHUB_OUTPUT}"; - echo "WEBID_PROVIDER_TESTS_IMAGE='solidtestsuite/webid-provider-tests:v2.1.1'" >> "${GITHUB_OUTPUT}"; + run: | + echo "COOKIE_IMAGE='michielbdejong/nextcloud-cookie:${{ env.COOKIE_TAG }}'" >> "${GITHUB_OUTPUT}" + echo "PUBSUB_IMAGE='ghcr.io/pdsinterop/php-solid-pubsub-server:${{ env.PUBSUB_TAG }}'" >> "${GITHUB_OUTPUT}" + echo "SOLID_CRUD_TESTS_IMAGE=solidtestsuite/solid-crud-tests:v7.0.5" >> "${GITHUB_OUTPUT}" + echo "WEB_ACCESS_CONTROL_TESTS_IMAGE=solidtestsuite/web-access-control-tests:v7.1.0" >> "${GITHUB_OUTPUT}" + echo "WEBID_PROVIDER_TESTS_IMAGE=solidtestsuite/webid-provider-tests:v2.1.1" >> "${GITHUB_OUTPUT}" - id: keys - run: >- - echo "COOKIE_KEY='${{ steps.outputs.COOKIE_IMAGE }}'" - | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}"; - echo "PUBSUB_KEY='${{ steps.outputs.PUBSUB_IMAGE }}'" - | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}"; - echo "SOLID_CRUD_TESTS_KEY='${{ steps.outputs.SOLID_CRUD_TESTS_IMAGE }}'" - | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}"; - echo "WEB_ACCESS_CONTROL_TESTS_KEY='${{ steps.outputs.WEB_ACCESS_CONTROL_TESTS_IMAGE }}'" - | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}"; - echo "WEBID_PROVIDER_TESTS_KEY='${{ steps.outputs.WEBID_PROVIDER_TESTS_IMAGE }}'" + run: | + echo "COOKIE_KEY=$(echo "${{ steps.images.outputs.COOKIE_IMAGE }}" \ + | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}" + echo "PUBSUB_KEY=$(echo "${{ steps.images.outputs.PUBSUB_IMAGE }}" \ + | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}" + echo "SOLID_CRUD_TESTS_KEY=$(echo "${{ steps.images.outputs.SOLID_CRUD_TESTS_IMAGE }}" \ + | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}" + echo "WEB_ACCESS_CONTROL_TESTS_KEY=$(echo "${{ steps.images.outputs.WEB_ACCESS_CONTROL_TESTS_IMAGE }}" \ + | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}" + echo "WEBID_PROVIDER_TESTS_KEY=$(echo "${{ steps.images.outputs.WEBID_PROVIDER_TESTS_IMAGE }}" \ | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_OUTPUT}"; # @TODO: Instead of building the docker image here, take a pre-build image and mount the code? @@ -103,7 +103,8 @@ jobs: . docker push "ghcr.io/${{ github.repository }}:${{ env.TAG }}" mkdir -p cache/solid-nextcloud - docker image save solid-nextcloud:${{ env.TAG }} --output ./cache/solid-nextcloud/${{ github.sha }}-${{ matrix.nextcloud_version }}.tar + docker image save solid-nextcloud:${{ env.TAG }} \ + --output ./cache/solid-nextcloud/${{ github.sha }}-${{ matrix.nextcloud_version }}.tar pull-docker-cookie: needs: docker-images @@ -112,14 +113,14 @@ jobs: - uses: actions/cache@v4 id: cache-docker-cookie with: - path: cache/ + path: cache/cookie key: ${{ needs.docker-images.outputs.COOKIE_KEY }} - if: steps.cache-docker-cookie.outputs.cache-hit != 'true' run: | - mkdir -p cache/ + mkdir -p cache/cookie/ docker pull ${{ needs.docker-images.outputs.COOKIE_IMAGE }} docker image save ${{ needs.docker-images.outputs.COOKIE_IMAGE }} \ - --output ./cache/${{ needs.docker-images.outputs.COOKIE_KEY }}.tar + --output ./cache/cookie/${{ needs.docker-images.outputs.COOKIE_KEY }}.tar pull-docker-pubsub: needs: docker-images runs-on: ubuntu-latest @@ -127,14 +128,14 @@ jobs: - uses: actions/cache@v4 id: cache-docker-pubsub with: - path: cache/ + path: cache/pubsub key: ${{ needs.docker-images.outputs.PUBSUB_KEY }} - if: steps.cache-docker-pubsub.outputs.cache-hit != 'true' run: | - mkdir -p cache/ + mkdir -p cache/pubsub/ docker pull ${{ needs.docker-images.outputs.PUBSUB_IMAGE }} docker image save ${{ needs.docker-images.outputs.PUBSUB_IMAGE }} \ - --output ./cache/${{ needs.docker-images.outputs.PUBSUB_KEY }}.tar + --output ./cache/pubsub/${{ needs.docker-images.outputs.PUBSUB_KEY }}.tar pull-docker-solid-crud-tests: needs: docker-images @@ -143,14 +144,14 @@ jobs: - uses: actions/cache@v4 id: cache-docker-solid-crud-tests with: - path: cache/ + path: cache/tests/ key: ${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_KEY }} - if: steps.cache-docker-solid-crud-tests.outputs.cache-hit != 'true' run: | - mkdir -p cache/ + mkdir -p cache/tests/ docker pull ${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_IMAGE }} docker image save ${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_IMAGE }} \ - --output ./cache/${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_KEY }}.tar + --output ./cache/tests/${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_KEY }}.tar pull-docker-web-access-control-tests: needs: docker-images runs-on: ubuntu-latest @@ -158,14 +159,14 @@ jobs: - uses: actions/cache@v4 id: cache-docker-web-access-control-tests with: - path: cache/ + path: cache/tests/ key: ${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_KEY }} - if: steps.cache-docker-web-access-control-tests.outputs.cache-hit != 'true' run: | - mkdir -p cache/ + mkdir -p cache/tests/ docker pull ${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_IMAGE }} docker image save ${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_IMAGE }} \ - --output ./cache/${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_KEY }}.tar + --output ./cache/tests/${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_KEY }}.tar pull-docker-webid-provider-tests: needs: docker-images runs-on: ubuntu-latest @@ -173,14 +174,14 @@ jobs: - uses: actions/cache@v4 id: cache-docker-webid-provider-tests with: - path: cache/ + path: cache/tests/ key: ${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_KEY }} - if: steps.cache-docker-webid-provider-tests.outputs.cache-hit != 'true' run: | - mkdir -p cache/ + mkdir -p cache/tests/ docker pull ${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_IMAGE }} docker image save ${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_IMAGE }} \ - --output ./cache/${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_KEY }}.tar + --output ./cache/tests/${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_KEY }}.tar solid-testsuite: timeout-minutes: 30 @@ -203,9 +204,12 @@ jobs: - 29 - 30 test: - - 'solidtestsuite/solid-crud-tests:v7.0.5' - - 'solidtestsuite/web-access-control-tests:v7.1.0' - - 'solidtestsuite/webid-provider-tests:v2.1.1' + - image: ${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_IMAGE }} + file: ${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_KEY }} + - image: ${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_IMAGE }} + file: ${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_KEY }} + - image: ${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_IMAGE }} + file: ${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_KEY }} # Prevent EOL or non-stable versions of Nextcloud to fail the test-suite continue-on-error: ${{ contains(fromJson('[28,29,30]'), matrix.nextcloud_version) == false }} @@ -215,8 +219,7 @@ jobs: # A tag name may only contain lower- and uppercase letters, digits, underscores, periods and dashes. run: | echo "TAG=$(echo -n "${{ github.ref_name }}-${{ matrix.nextcloud_version }}" \ - | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" \ - >> "${GITHUB_ENV}" + | tr --complement --squeeze-repeats '[:alnum:]._-' '_')" >> "${GITHUB_ENV}" - uses: actions/checkout@v4 @@ -225,6 +228,21 @@ jobs: with: path: cache/solid-nextcloud key: solid-nextcloud-docker-${{ matrix.nextcloud_version }}-${{ github.sha }} + - uses: actions/cache@v4 + id: cache-docker-cookie + with: {path: cache/cookie, key: "${{ needs.docker-images.outputs.COOKIE_KEY }}"} + - uses: actions/cache@v4 + id: cache-docker-pubsub + with: {path: cache/pubsub, key: "${{ needs.docker-images.outputs.PUBSUB_KEY }}"} + - uses: actions/cache@v4 + id: cache-docker-solid-crud-tests + with: {path: cache/tests, key: "${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_KEY }}"} + - uses: actions/cache@v4 + id: cache-docker-web-access-control-tests + with: {path: cache/tests, key: "${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_KEY }}"} + - uses: actions/cache@v4 + id: cache-docker-webid-provider-tests + with: {path: cache/tests, key: "${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_KEY }}"} - uses: docker/login-action@v3 with: @@ -234,10 +252,10 @@ jobs: - name: Load docker Images run: | + docker image load --input ./cache/cookie/${{ needs.docker-images.outputs.COOKIE_KEY }}.tar + docker image load --input ./cache/pubsub/${{ needs.docker-images.outputs.PUBSUB_KEY }}.tar docker image load --input ./cache/solid-nextcloud/${{ github.sha }}-${{ matrix.nextcloud_version }}.tar - docker image load --input ./cache/${{ needs.docker-images.outputs.COOKIE_IMAGE }}.tar - docker image load --input ./cache/${{ matrix.test }}.tar - docker image load --input ./cache/${{ needs.docker-images.outputs.PUBSUB_TAG }}.tar + docker image load --input ./cache/tests/${{ matrix.test.file }}.tar - name: Start Docker Containers run: | @@ -247,16 +265,16 @@ jobs: --interactive \ --name 'pubsub' \ --network=testnet \ - "ghcr.io/pdsinterop/php-solid-pubsub-server:${{ env.PUBSUB_TAG }}" + ${{ needs.docker-images.outputs.PUBSUB_IMAGE }} source ./run-solid-test-suite.sh - startSolidNextcloud 'server' "solid-nextcloud:${{ env.TAG }}" ${{ matrix.test }} - startSolidNextcloud 'thirdparty' "solid-nextcloud:${{ env.TAG }}" ${{ matrix.test }} + startSolidNextcloud 'server' "solid-nextcloud:${{ env.TAG }}" ${{ matrix.test.image }} + startSolidNextcloud 'thirdparty' "solid-nextcloud:${{ env.TAG }}" ${{ matrix.test.image }} echo "COOKIE_server=${COOKIE_server}" >> "${GITHUB_ENV}" echo "COOKIE_thirdparty=${COOKIE_thirdparty}" >> "${GITHUB_ENV}" - - name: Run tests - ${{ matrix.test }} + - name: Run tests - ${{ matrix.test.image }} run: | export COOKIE_server="${{ env.COOKIE_server }}" export COOKIE_thirdparty="${{ env.COOKIE_thirdparty }}" @@ -267,13 +285,13 @@ jobs: --env COOKIE_ALICE="$COOKIE_server" \ --env COOKIE_BOB="$COOKIE_thirdparty" \ --env-file ./env-vars-testers.list \ - ${{ matrix.test }} + ${{ matrix.test.image }} -# - name: Setup tmate session - ${{ matrix.test }} +# - name: Setup tmate session - ${{ matrix.test.image }} # if: failure() # uses: mxschmitt/action-tmate@v3 - - name: Show nextcloud logs - ${{ matrix.test }} + - name: Show nextcloud logs - ${{ matrix.test.image }} if: always() run: | docker exec -i server cat /var/www/html/data/nextcloud.log From 49c3a566a45f3ea1ad97625100d217add313fbcd Mon Sep 17 00:00:00 2001 From: Ben Peachey Date: Fri, 27 Jun 2025 17:00:44 +0200 Subject: [PATCH 6/6] Fix incorrect cache paths. --- .github/workflows/solid-tests-suites.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/solid-tests-suites.yml b/.github/workflows/solid-tests-suites.yml index c69e3644..3eccf11c 100644 --- a/.github/workflows/solid-tests-suites.yml +++ b/.github/workflows/solid-tests-suites.yml @@ -144,11 +144,11 @@ jobs: - uses: actions/cache@v4 id: cache-docker-solid-crud-tests with: - path: cache/tests/ + path: cache/tests key: ${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_KEY }} - if: steps.cache-docker-solid-crud-tests.outputs.cache-hit != 'true' run: | - mkdir -p cache/tests/ + mkdir -p cache/tests docker pull ${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_IMAGE }} docker image save ${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_IMAGE }} \ --output ./cache/tests/${{ needs.docker-images.outputs.SOLID_CRUD_TESTS_KEY }}.tar @@ -159,11 +159,11 @@ jobs: - uses: actions/cache@v4 id: cache-docker-web-access-control-tests with: - path: cache/tests/ + path: cache/tests key: ${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_KEY }} - if: steps.cache-docker-web-access-control-tests.outputs.cache-hit != 'true' run: | - mkdir -p cache/tests/ + mkdir -p cache/tests docker pull ${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_IMAGE }} docker image save ${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_IMAGE }} \ --output ./cache/tests/${{ needs.docker-images.outputs.WEB_ACCESS_CONTROL_TESTS_KEY }}.tar @@ -174,11 +174,11 @@ jobs: - uses: actions/cache@v4 id: cache-docker-webid-provider-tests with: - path: cache/tests/ + path: cache/tests key: ${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_KEY }} - if: steps.cache-docker-webid-provider-tests.outputs.cache-hit != 'true' run: | - mkdir -p cache/tests/ + mkdir -p cache/tests docker pull ${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_IMAGE }} docker image save ${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_IMAGE }} \ --output ./cache/tests/${{ needs.docker-images.outputs.WEBID_PROVIDER_TESTS_KEY }}.tar