From 096f5ac1e5f7f68dbf459e522c7a80eda0f1937b Mon Sep 17 00:00:00 2001 From: maximthomas Date: Thu, 14 May 2026 14:34:00 +0300 Subject: [PATCH 01/14] Run dockerfiles only --- .github/workflows/build.yml | 234 ++++++++++++++++++------------------ 1 file changed, 114 insertions(+), 120 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bbb3baf405..5d8021602e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,7 +9,9 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - java: [ '11', '17', '21', '25', '26' ] +# java: [ '11', '17', '21', '25', '26' ] + java: [ '11' ] +# os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] fail-fast: false steps: @@ -28,31 +30,31 @@ jobs: path: ~/.m2/repository key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2-repository - - name: Set Integration Test Environment - if: matrix.os == 'ubuntu-latest' - run: | - echo "MAVEN_PROFILE_FLAG=-P integration-test" >> $GITHUB_OUTPUT - echo "MAVEN_VERIFY_STAGE=verify" >> $GITHUB_OUTPUT - echo "127.0.0.1 openam.local" | sudo tee -a /etc/hosts - id: maven-profile-flag - - name: Build with Maven - env: - MAVEN_OPTS: -Dhttps.protocols=TLSv1.2 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -Dmaven.wagon.http.retryHandler.count=10 - run: mvn --batch-mode --errors --update-snapshots package ${{ steps.maven-profile-flag.outputs.MAVEN_VERIFY_STAGE }} --file pom.xml ${{ steps.maven-profile-flag.outputs.MAVEN_PROFILE_FLAG }} - - name: Upload artifacts - uses: actions/upload-artifact@v6 - with: - name: ${{ matrix.os }}-${{ matrix.java }} - retention-days: 5 - path: | - openam-distribution/openam-distribution-kit/target/*.zip - openam-distribution/openam-distribution-ssoconfiguratortools/target/*.zip - openam-distribution/openam-distribution-fedlet-unconfigured/target/*.zip - openam-distribution/openam-distribution-ssoadmintools/target/*.zip - openam-console/target/*.war - openam-server/target/*.war - openam-server-only/target/*.war - openam-distribution/openam-distribution-docker/Dockerfile* +# - name: Set Integration Test Environment +# if: matrix.os == 'ubuntu-latest' +# run: | +# echo "MAVEN_PROFILE_FLAG=-P integration-test" >> $GITHUB_OUTPUT +# echo "MAVEN_VERIFY_STAGE=verify" >> $GITHUB_OUTPUT +# echo "127.0.0.1 openam.local" | sudo tee -a /etc/hosts +# id: maven-profile-flag +# - name: Build with Maven +# env: +# MAVEN_OPTS: -Dhttps.protocols=TLSv1.2 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -Dmaven.wagon.http.retryHandler.count=10 +# run: mvn --batch-mode --errors --update-snapshots package ${{ steps.maven-profile-flag.outputs.MAVEN_VERIFY_STAGE }} --file pom.xml ${{ steps.maven-profile-flag.outputs.MAVEN_PROFILE_FLAG }} +# - name: Upload artifacts +# uses: actions/upload-artifact@v6 +# with: +# name: ${{ matrix.os }}-${{ matrix.java }} +# retention-days: 5 +# path: | +# openam-distribution/openam-distribution-kit/target/*.zip +# openam-distribution/openam-distribution-ssoconfiguratortools/target/*.zip +# openam-distribution/openam-distribution-fedlet-unconfigured/target/*.zip +# openam-distribution/openam-distribution-ssoadmintools/target/*.zip +# openam-console/target/*.war +# openam-server/target/*.war +# openam-server-only/target/*.war +# openam-distribution/openam-distribution-docker/Dockerfile* build-docker: needs: build-maven runs-on: 'ubuntu-latest' @@ -86,9 +88,9 @@ jobs: uses: docker/setup-buildx-action@v4 with: driver-opts: network=host - - name: Prepare Dockerfile - shell: bash - run: sed -i -E '/^#COPY openam-(server|distribution)\//s/^#//' ./openam-distribution/openam-distribution-docker/Dockerfile +# - name: Prepare Dockerfile +# shell: bash +# run: sed -i -E '/^#COPY openam-(server|distribution)\//s/^#//' ./openam-distribution/openam-distribution-docker/Dockerfile - name: Build image uses: docker/build-push-action@v7 continue-on-error: true @@ -102,28 +104,22 @@ jobs: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - - name: Save docker image to tar + - name: Prepare environment shell: bash run: | - docker pull localhost:5000/${GITHUB_REPOSITORY,,}:${{ env.release_version }} - docker save -o ${{ runner.temp }}/openam-image.tar localhost:5000/${GITHUB_REPOSITORY,,}:${{ env.release_version }} - - name: Upload docker image - uses: actions/upload-artifact@v4 - with: - name: myimage - path: ${{ runner.temp }}/openam-image.tar + docker network create test-openam + echo "127.0.0.1 openam.example.org sp.mycompany.org" | sudo tee -a /etc/hosts - - name: Docker test with an external OpenDJ identity store and an embedded OpenDJ configuration store + - name: Docker test with an external OpenDJ identity store and an embedded OpenDJ configuration store (IDP) shell: bash run: | - docker network create test-openam - docker run --rm -it -d --hostname opendj -p 1389:1389 -p 4444:4444 --name test-opendj --network test-openam openidentityplatform/opendj:latest - docker run --rm -it -d --memory="2g" -h openam.example.org --name=test-openam --network test-openam localhost:5000/${GITHUB_REPOSITORY,,}:${{ env.release_version }} + docker run --rm -it -d --hostname opendj --name opendj --network test-openam openidentityplatform/opendj:latest + docker run --rm -it -d -p 8080:8080 --memory="2g" -h openam.example.org --name=openam --network test-openam localhost:5000/${GITHUB_REPOSITORY,,}:${{ env.release_version }} echo "waiting for OpenDJ to be alive..." - timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" test-opendj | grep -q \"healthy\"; do sleep 10; done' + timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" opendj | grep -q \"healthy\"; do sleep 10; done' echo "waiting for OpenAM to be alive..." - timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" test-openam | grep -q \"healthy\"; do sleep 10; done' + timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" openam | grep -q \"healthy\"; do sleep 10; done' docker exec -w '/usr/openam/ssoconfiguratortools' test-openam bash -c \ 'echo "ACCEPT_LICENSES=true @@ -154,7 +150,7 @@ jobs: USERSTORE_PASSWD=password " > conf.file && java -jar openam-configurator-tool*.jar --file conf.file' - docker exec test-openam bash -c \ + docker exec openam bash -c \ 'curl \ --request POST \ --header "Content-Type: application/json" \ @@ -163,27 +159,22 @@ jobs: --data "{}" \ http://openam.example.org:8080/openam/json/authenticate | grep tokenId' - docker inspect --format="{{json .State.Health.Status}}" test-openam | grep -q \"healthy\" - - echo "Stopping containers and removing the network" - docker stop test-opendj test-openam - docker network rm test-openam + docker inspect --format="{{json .State.Health.Status}}" openam | grep -q \"healthy\" - - name: Docker test with a dedicated OpenDJ container + - name: Docker start with a dedicated OpenDJ container (SP) shell: bash run: | - docker network create test-openam - docker run --rm -it -d --hostname opendj -p 1389:1389 -p 4444:4444 --name test-opendj --network test-openam openidentityplatform/opendj:latest - docker run --rm -it -d --memory="2g" -h openam.example.org --name=test-openam --network test-openam localhost:5000/${GITHUB_REPOSITORY,,}:${{ env.release_version }} + docker run --rm -it -d --hostname sp-opendj --name sp-opendj --network test-openam openidentityplatform/opendj:latest + docker run --rm -it -d -p 8080:8080 --memory="2g" -h sp.mycompany.org --name=sp-openam --network test-openam localhost:5000/${GITHUB_REPOSITORY,,}:${{ env.release_version }} echo "waiting for OpenDJ to be alive..." - timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" test-opendj | grep -q \"healthy\"; do sleep 10; done' + timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" sp-opendj | grep -q \"healthy\"; do sleep 10; done' echo "waiting for OpenAM to be alive..." - timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" test-openam | grep -q \"healthy\"; do sleep 10; done' + timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" sp-openam | grep -q \"healthy\"; do sleep 10; done' docker exec -w '/usr/openam/ssoconfiguratortools' test-openam bash -c \ 'echo "ACCEPT_LICENSES=true - SERVER_URL=http://openam.example.org:8080 + SERVER_URL=http://sp.mycompany.org:8080 DEPLOYMENT_URI=/$OPENAM_PATH BASE_DIR=$OPENAM_DATA_DIR locale=en_US @@ -194,7 +185,7 @@ jobs: COOKIE_DOMAIN=example.org DATA_STORE=dirServer DIRECTORY_SSL=SIMPLE - DIRECTORY_SERVER=opendj + DIRECTORY_SERVER=sp-opendj DIRECTORY_PORT=1389 DIRECTORY_ADMIN_PORT=4444 DIRECTORY_JMX_PORT=1689 @@ -203,7 +194,7 @@ jobs: DS_DIRMGRPASSWD=password USERSTORE_TYPE=LDAPv3ForOpenDS USERSTORE_SSL=SIMPLE - USERSTORE_HOST=opendj + USERSTORE_HOST=sp-opendj USERSTORE_PORT=1389 USERSTORE_SUFFIX=dc=example,dc=com USERSTORE_MGRDN=cn=Directory Manager @@ -219,10 +210,12 @@ jobs: --data "{}" \ http://openam.example.org:8080/openam/json/authenticate | grep tokenId' - docker inspect --format="{{json .State.Health.Status}}" test-openam | grep -q \"healthy\" - - echo "Stopping containers and removing the network" - docker stop test-opendj test-openam + docker inspect --format="{{json .State.Health.Status}}" sp-openam | grep -q \"healthy\" + + - name: Stopping containers and removing the network + shell: bash + run: | + docker stop openam-opendj openam-opendj sp-opendj sp-openam docker network rm test-openam - name: Docker multi-server test @@ -370,62 +363,63 @@ jobs: http://openam3.example.org:8080/openam/json/authenticate | grep tokenId' docker inspect --format="{{json .State.Health.Status}}" test-openam3 | grep -q \"healthy\" - ui-smoke-tests: - runs-on: ubuntu-latest - needs: build-docker - services: - registry: - image: registry:2 - ports: - - 5000:5000 - strategy: - fail-fast: false - steps: - - uses: actions/checkout@v6 - - - name: Set env - run: | - export git_version_last="$(curl -i -o - --silent https://api.github.com/repos/OpenIdentityPlatform/OpenAM/releases/latest | grep -m1 "\"name\"" | cut -d\" -f4)" ; echo "last release: $git_version_last" - echo "release_version=$git_version_last" >> $GITHUB_ENV - echo "REPO_LC=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV - - - name: Download artifact - uses: actions/download-artifact@v4 - with: - name: myimage - path: ${{ runner.temp }} - - - name: Load Docker image - run: | - docker load --input ${{ runner.temp }}/openam-image.tar - docker image ls -a - - - name: Set Integration Test Environment - run: | - echo "127.0.0.1 idp.acme.org sp.mycompany.org" | sudo tee -a /etc/hosts - - name: Cache Playwright browsers - uses: actions/cache@v5 - with: - path: ~/.cache/ms-playwright - key: ${{ runner.os }}-playwright-browsers - restore-keys: ${{ runner.os }}-playwright- - - - name: UI Smoke Tests (Playwright) - run: | - cd e2e - npm init -y - npm install @playwright/test - npx playwright install chromium --with-deps - npx playwright test --reporter=list - env: - OPENAM_IMAGE: localhost:5000/${{ env.REPO_LC }}:${{ env.release_version }} - - name: Upload failure artifacts - uses: actions/upload-artifact@v7 - if: ${{ failure() }} - with: - name: failure-ui-java${{ matrix.java }}-${{ matrix.context_label }}-${{ matrix.samples_label }} - retention-days: 1 - path: | - e2e/playwright-report/** - e2e/test-results/** \ No newline at end of file +# ui-smoke-tests: +# runs-on: ubuntu-latest +# needs: build-docker +# services: +# registry: +# image: registry:2 +# ports: +# - 5000:5000 +# strategy: +# fail-fast: false +# steps: +# - uses: actions/checkout@v6 +# +# - name: Set env +# run: | +# export git_version_last="$(curl -i -o - --silent https://api.github.com/repos/OpenIdentityPlatform/OpenAM/releases/latest | grep -m1 "\"name\"" | cut -d\" -f4)" ; echo "last release: $git_version_last" +# echo "release_version=$git_version_last" >> $GITHUB_ENV +# echo "REPO_LC=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV +# +# - name: Download artifact +# uses: actions/download-artifact@v4 +# with: +# name: myimage +# path: ${{ runner.temp }} +# +# - name: Load Docker image +# run: | +# docker load --input ${{ runner.temp }}/openam-image.tar +# docker image ls -a +# +# - name: Set Integration Test Environment +# run: | +# echo "127.0.0.1 idp.acme.org sp.mycompany.org" | sudo tee -a /etc/hosts +# +# - name: Cache Playwright browsers +# uses: actions/cache@v5 +# with: +# path: ~/.cache/ms-playwright +# key: ${{ runner.os }}-playwright-browsers +# restore-keys: ${{ runner.os }}-playwright- +# +# - name: UI Smoke Tests (Playwright) +# run: | +# cd e2e +# npm init -y +# npm install @playwright/test +# npx playwright install chromium --with-deps +# npx playwright test --reporter=list +# env: +# OPENAM_IMAGE: localhost:5000/${{ env.REPO_LC }}:${{ env.release_version }} +# - name: Upload failure artifacts +# uses: actions/upload-artifact@v7 +# if: ${{ failure() }} +# with: +# name: failure-ui-java${{ matrix.java }}-${{ matrix.context_label }}-${{ matrix.samples_label }} +# retention-days: 1 +# path: | +# e2e/playwright-report/** +# e2e/test-results/** \ No newline at end of file From 74c9074b7ff8948fe21287b3beb204ae75727234 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Thu, 14 May 2026 14:37:17 +0300 Subject: [PATCH 02/14] Run dockerfiles only --- .github/workflows/build.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5d8021602e..faf80c6b93 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: # java: [ '11', '17', '21', '25', '26' ] java: [ '11' ] # os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] - os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] + os: [ 'ubuntu-latest' ] fail-fast: false steps: - uses: actions/checkout@v6 @@ -64,10 +64,14 @@ jobs: ports: - 5000:5000 steps: - - name: Download artifacts - uses: actions/download-artifact@v8 +# - name: Download artifacts +# uses: actions/download-artifact@v8 +# with: +# name: ubuntu-latest-11 + - uses: actions/checkout@v6 with: - name: ubuntu-latest-11 + fetch-depth: 0 + submodules: recursive - name: Get latest release version shell: bash run: | From 79f0e00e9c5c4d6278fe24f1b51aa333fd8a4c92 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Thu, 14 May 2026 14:43:36 +0300 Subject: [PATCH 03/14] fix container names --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index faf80c6b93..0f0074fe9d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -125,7 +125,7 @@ jobs: echo "waiting for OpenAM to be alive..." timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" openam | grep -q \"healthy\"; do sleep 10; done' - docker exec -w '/usr/openam/ssoconfiguratortools' test-openam bash -c \ + docker exec -w '/usr/openam/ssoconfiguratortools' openam bash -c \ 'echo "ACCEPT_LICENSES=true SERVER_URL=http://openam.example.org:8080 DEPLOYMENT_URI=/$OPENAM_PATH @@ -176,7 +176,7 @@ jobs: echo "waiting for OpenAM to be alive..." timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" sp-openam | grep -q \"healthy\"; do sleep 10; done' - docker exec -w '/usr/openam/ssoconfiguratortools' test-openam bash -c \ + docker exec -w '/usr/openam/ssoconfiguratortools' sp-openam bash -c \ 'echo "ACCEPT_LICENSES=true SERVER_URL=http://sp.mycompany.org:8080 DEPLOYMENT_URI=/$OPENAM_PATH @@ -205,7 +205,7 @@ jobs: USERSTORE_PASSWD=password " > conf.file && java -jar openam-configurator-tool*.jar --file conf.file' - docker exec test-openam bash -c \ + docker exec sp-openam bash -c \ 'curl \ --request POST \ --header "Content-Type: application/json" \ From e0cd7df5639e5289fe34cae8f9355e54b314c3a0 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Thu, 14 May 2026 15:12:03 +0300 Subject: [PATCH 04/14] simplify test --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0f0074fe9d..58d1948487 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -103,7 +103,7 @@ jobs: file: ./openam-distribution/openam-distribution-docker/Dockerfile build-args: | VERSION=${{ env.release_version }} - platforms: linux/amd64, linux/arm64, linux/ppc64le, linux/s390x + platforms: linux/amd64, linux/arm64 #, linux/ppc64le, linux/s390x push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} @@ -136,9 +136,9 @@ jobs: ADMIN_PWD=ampassword AMLDAPUSERPASSWD=password COOKIE_DOMAIN=example.org - DATA_STORE=embedded + DATA_STORE=dirServer DIRECTORY_SSL=SIMPLE - DIRECTORY_SERVER=localhost + DIRECTORY_SERVER=opendj DIRECTORY_PORT=1389 DIRECTORY_ADMIN_PORT=5444 DIRECTORY_JMX_PORT=1689 @@ -219,7 +219,7 @@ jobs: - name: Stopping containers and removing the network shell: bash run: | - docker stop openam-opendj openam-opendj sp-opendj sp-openam + docker stop openam opendj sp-opendj sp-openam docker network rm test-openam - name: Docker multi-server test From e729986dd2eadd63760add1f5efe1bd73ee027b0 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Thu, 14 May 2026 15:18:10 +0300 Subject: [PATCH 05/14] simplify test --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 58d1948487..c953121363 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -140,7 +140,7 @@ jobs: DIRECTORY_SSL=SIMPLE DIRECTORY_SERVER=opendj DIRECTORY_PORT=1389 - DIRECTORY_ADMIN_PORT=5444 + DIRECTORY_ADMIN_PORT=4444 DIRECTORY_JMX_PORT=1689 ROOT_SUFFIX=dc=openam,dc=openidentityplatform,dc=org DS_DIRMGRDN=cn=Directory Manager From 4e23b6ef00131d3e2d8f977df7dd10aafa97fc0c Mon Sep 17 00:00:00 2001 From: maximthomas Date: Fri, 15 May 2026 12:14:48 +0300 Subject: [PATCH 06/14] docker image name to env var --- .github/workflows/build.yml | 181 +++++++++++++++++++++++++----------- e2e/saml/bootstrap.sh | 91 +----------------- e2e/saml/saml-test.spec.mjs | 13 +-- e2e/saml/shutdown.sh | 23 ----- 4 files changed, 133 insertions(+), 175 deletions(-) delete mode 100755 e2e/saml/shutdown.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c953121363..9334f4cb44 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -111,21 +111,27 @@ jobs: - name: Prepare environment shell: bash run: | + export OPENAM_IMAGE=localhost:5000/${GITHUB_REPOSITORY,,}:${{ env.release_version }} docker network create test-openam echo "127.0.0.1 openam.example.org sp.mycompany.org" | sudo tee -a /etc/hosts - name: Docker test with an external OpenDJ identity store and an embedded OpenDJ configuration store (IDP) shell: bash run: | - docker run --rm -it -d --hostname opendj --name opendj --network test-openam openidentityplatform/opendj:latest - docker run --rm -it -d -p 8080:8080 --memory="2g" -h openam.example.org --name=openam --network test-openam localhost:5000/${GITHUB_REPOSITORY,,}:${{ env.release_version }} - + echo "Setup IDP" + + docker run --rm -it -d --hostname opendj-idp --name opendj-idp --network test-openam openidentityplatform/opendj:latest + docker run --rm -it -d -p 8080:8080 -p 8000:8000 --memory="2g" -h openam.example.org --name=openam-idp --network test-openam \ + -e JPDA_ADDRESS=*:8000 \ + -e JPDA_TRANSPORT=dt_socket \ + ${OPENAM_IMAGE} catalina.sh jpda run + echo "waiting for OpenDJ to be alive..." - timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" opendj | grep -q \"healthy\"; do sleep 10; done' + timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" opendj-idp | grep -q \"healthy\"; do sleep 10; done' echo "waiting for OpenAM to be alive..." - timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" openam | grep -q \"healthy\"; do sleep 10; done' - - docker exec -w '/usr/openam/ssoconfiguratortools' openam bash -c \ + timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" openam-idp | grep -q \"healthy\"; do sleep 10; done' + + docker exec -w '/usr/openam/ssoconfiguratortools' openam-idp bash -c \ 'echo "ACCEPT_LICENSES=true SERVER_URL=http://openam.example.org:8080 DEPLOYMENT_URI=/$OPENAM_PATH @@ -136,47 +142,88 @@ jobs: ADMIN_PWD=ampassword AMLDAPUSERPASSWD=password COOKIE_DOMAIN=example.org - DATA_STORE=dirServer + DATA_STORE=embedded DIRECTORY_SSL=SIMPLE - DIRECTORY_SERVER=opendj + DIRECTORY_SERVER=localhost DIRECTORY_PORT=1389 - DIRECTORY_ADMIN_PORT=4444 + DIRECTORY_ADMIN_PORT=5444 DIRECTORY_JMX_PORT=1689 ROOT_SUFFIX=dc=openam,dc=openidentityplatform,dc=org DS_DIRMGRDN=cn=Directory Manager DS_DIRMGRPASSWD=password USERSTORE_TYPE=LDAPv3ForOpenDS USERSTORE_SSL=SIMPLE - USERSTORE_HOST=opendj + USERSTORE_HOST=opendj-idp USERSTORE_PORT=1389 USERSTORE_SUFFIX=dc=example,dc=com USERSTORE_MGRDN=cn=Directory Manager USERSTORE_PASSWD=password " > conf.file && java -jar openam-configurator-tool*.jar --file conf.file' - - docker exec openam bash -c \ - 'curl \ - --request POST \ - --header "Content-Type: application/json" \ - --header "X-OpenAM-Username: amadmin" \ - --header "X-OpenAM-Password: ampassword" \ - --data "{}" \ - http://openam.example.org:8080/openam/json/authenticate | grep tokenId' - - docker inspect --format="{{json .State.Health.Status}}" openam | grep -q \"healthy\" + + echo "Setup ssoadm tools for OpenAM IDP" + + docker exec -w '/usr/openam/ssoadmintools' openam-idp bash -c './setup -p /usr/openam/config --acceptLicense' + + docker exec -w '/usr/openam/ssoadmintools/openam/bin' openam-idp bash -c 'echo ampassword > pwd.txt && chmod 400 pwd.txt' + + echo "Test IDP authentication" + + ADMIN_TOKEN=$(docker exec openam-idp bash -c \ + 'curl -sf \ + --request POST \ + --header "Content-Type: application/json" \ + --header "X-OpenAM-Username: amadmin" \ + --header "X-OpenAM-Password: ampassword" \ + --data "{}" \ + http://openam.example.org:8080/openam/json/authenticate' | jq -r .tokenId) + + docker inspect --format="{{json .State.Health.Status}}" openam-idp | grep -q \"healthy\" + + echo "Setup IDP test user" + + curl -sS -X POST \ + -H "iPlanetDirectoryPro: ${ADMIN_TOKEN}" \ + -H "Content-Type: application/json" \ + -H "Accept-API-Version: resource=3.0, protocol=2.1" \ + -d "{ + \"username\": \"demo\", + \"userpassword\": \"changeit\", + \"mail\": \"demo@example.com\", + \"sn\": \"Demo\", + \"givenName\": \"Demo\", + \"cn\": \"Demo Demo\" + }" \ + "http://openam.example.org:8080/openam/json/realms/root/users?_action=create" + + echo "Test demo user Auth" + + docker exec openam-idp bash -c \ + 'curl -sf \ + --request POST \ + --header "Content-Type: application/json" \ + --header "X-OpenAM-Username: demo" \ + --header "X-OpenAM-Password: changeit" \ + --data "{}" \ + http://openam.example.org:8080/openam/json/authenticate' - name: Docker start with a dedicated OpenDJ container (SP) shell: bash run: | - docker run --rm -it -d --hostname sp-opendj --name sp-opendj --network test-openam openidentityplatform/opendj:latest - docker run --rm -it -d -p 8080:8080 --memory="2g" -h sp.mycompany.org --name=sp-openam --network test-openam localhost:5000/${GITHUB_REPOSITORY,,}:${{ env.release_version }} - + echo "Setup SP" + + docker run --rm -it -d --hostname opendj-sp --name opendj-sp --network test-openam openidentityplatform/opendj:latest + + docker run --rm -it -d -p 8081:8080 -p 8001:8000 --memory="2g" -h sp.mycompany.org --name=openam-sp --network test-openam \ + -e JPDA_ADDRESS=*:8000 \ + -e JPDA_TRANSPORT=dt_socket \ + ${OPENAM_IMAGE} catalina.sh jpda run + echo "waiting for OpenDJ to be alive..." - timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" sp-opendj | grep -q \"healthy\"; do sleep 10; done' + timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" opendj-sp | grep -q \"healthy\"; do sleep 10; done' echo "waiting for OpenAM to be alive..." - timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" sp-openam | grep -q \"healthy\"; do sleep 10; done' - - docker exec -w '/usr/openam/ssoconfiguratortools' sp-openam bash -c \ + timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" openam-sp | grep -q \"healthy\"; do sleep 10; done' + + docker exec -w '/usr/openam/ssoconfiguratortools' openam-sp bash -c \ 'echo "ACCEPT_LICENSES=true SERVER_URL=http://sp.mycompany.org:8080 DEPLOYMENT_URI=/$OPENAM_PATH @@ -186,10 +233,10 @@ jobs: AM_ENC_KEY= ADMIN_PWD=ampassword AMLDAPUSERPASSWD=password - COOKIE_DOMAIN=example.org + COOKIE_DOMAIN=mycompany.org DATA_STORE=dirServer DIRECTORY_SSL=SIMPLE - DIRECTORY_SERVER=sp-opendj + DIRECTORY_SERVER=opendj-sp DIRECTORY_PORT=1389 DIRECTORY_ADMIN_PORT=4444 DIRECTORY_JMX_PORT=1689 @@ -198,28 +245,67 @@ jobs: DS_DIRMGRPASSWD=password USERSTORE_TYPE=LDAPv3ForOpenDS USERSTORE_SSL=SIMPLE - USERSTORE_HOST=sp-opendj + USERSTORE_HOST=opendj-sp USERSTORE_PORT=1389 USERSTORE_SUFFIX=dc=example,dc=com USERSTORE_MGRDN=cn=Directory Manager USERSTORE_PASSWD=password " > conf.file && java -jar openam-configurator-tool*.jar --file conf.file' + + echo "Setup ssoadm tools for OpenAM SP" + + docker exec -w '/usr/openam/ssoadmintools' openam-sp bash -c './setup -p /usr/openam/config --acceptLicense' + + docker exec -w '/usr/openam/ssoadmintools/openam/bin' openam-sp bash -c 'echo ampassword > pwd.txt && chmod 400 pwd.txt' - docker exec sp-openam bash -c \ - 'curl \ - --request POST \ - --header "Content-Type: application/json" \ - --header "X-OpenAM-Username: amadmin" \ - --header "X-OpenAM-Password: ampassword" \ - --data "{}" \ - http://openam.example.org:8080/openam/json/authenticate | grep tokenId' - - docker inspect --format="{{json .State.Health.Status}}" sp-openam | grep -q \"healthy\" + echo "Test SP authentication" + + docker exec openam-sp bash -c \ + 'curl \ + --request POST \ + --header "Content-Type: application/json" \ + --header "X-OpenAM-Username: amadmin" \ + --header "X-OpenAM-Password: ampassword" \ + --data "{}" \ + http://sp.mycompany.org:8080/openam/json/authenticate | grep tokenId' + + docker inspect --format="{{json .State.Health.Status}}" openam-sp | grep -q \"healthy\" + + - name: Cache Playwright browsers + uses: actions/cache@v5 + with: + path: ~/.cache/ms-playwright + key: ${{ runner.os }}-playwright-browsers + restore-keys: ${{ runner.os }}-playwright- + + - name: UI Smoke Tests (Playwright) + run: | + cd e2e + npm init -y + npm install @playwright/test + npx playwright install chromium --with-deps + npx playwright test --reporter=list + + - name: Upload failure artifacts + uses: actions/upload-artifact@v7 + if: ${{ failure() }} + with: + name: failure-ui + retention-days: 1 + path: | + e2e/playwright-report/** + e2e/test-results/** - name: Stopping containers and removing the network shell: bash run: | - docker stop openam opendj sp-opendj sp-openam + docker stop openam-idp opendj-idp sp-opendj sp-openam + docker network rm test-openam + + - name: Stopping containers and removing the network + shell: bash + run: | + docker stop openam-idp opendj-idp sp-opendj sp-openam docker network rm test-openam - name: Docker multi-server test @@ -418,12 +504,3 @@ jobs: # npx playwright test --reporter=list # env: # OPENAM_IMAGE: localhost:5000/${{ env.REPO_LC }}:${{ env.release_version }} -# - name: Upload failure artifacts -# uses: actions/upload-artifact@v7 -# if: ${{ failure() }} -# with: -# name: failure-ui-java${{ matrix.java }}-${{ matrix.context_label }}-${{ matrix.samples_label }} -# retention-days: 1 -# path: | -# e2e/playwright-report/** -# e2e/test-results/** \ No newline at end of file diff --git a/e2e/saml/bootstrap.sh b/e2e/saml/bootstrap.sh index e1620093cb..64f15943ad 100755 --- a/e2e/saml/bootstrap.sh +++ b/e2e/saml/bootstrap.sh @@ -17,53 +17,6 @@ set -e -OPENAM_IMAGE=${OPENAM_IMAGE:-"openidentityplatform/openam"} - -echo "Using docker image: ${OPENAM_IMAGE}" - -docker network create openam-saml 2>/dev/null || true - -echo "running OpenAM IDP container..." - -docker run --rm -it -d -h idp.acme.org -p 8080:8080 -p 8000:8000 --network openam-saml --name openam-idp \ - -e JPDA_ADDRESS=*:8000 \ - -e JPDA_TRANSPORT=dt_socket \ - ${OPENAM_IMAGE} catalina.sh jpda run - -echo "waiting for OpenAM IDP to be alive..." - -timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" openam-idp | grep -q \"healthy\"; do sleep 10; done' - - -echo "Running OpenAM IDP setup" - -docker exec -w '/usr/openam/ssoconfiguratortools' openam-idp bash -c \ -'echo "ACCEPT_LICENSES=true -SERVER_URL=http://idp.acme.org:8080 -DEPLOYMENT_URI=/$OPENAM_PATH -BASE_DIR=$OPENAM_DATA_DIR -locale=en_US -PLATFORM_LOCALE=en_US -AM_ENC_KEY= -ADMIN_PWD=passw0rd -AMLDAPUSERPASSWD=p@passw0rd -COOKIE_DOMAIN=idp.acme.org -ACCEPT_LICENSES=true -DATA_STORE=embedded -DIRECTORY_SSL=SIMPLE -DIRECTORY_SERVER=idp.acme.org -DIRECTORY_PORT=50389 -DIRECTORY_ADMIN_PORT=4444 -DIRECTORY_JMX_PORT=1689 -ROOT_SUFFIX=dc=openam,dc=example,dc=org -DS_DIRMGRDN=cn=Directory Manager -DS_DIRMGRPASSWD=passw0rd" > conf.file && java -jar openam-configurator-tool*.jar --file conf.file' - -echo "Setup ssoadm tools for OpenAM IDP" - -docker exec -w '/usr/openam/ssoadmintools' openam-idp bash -c './setup -p /usr/openam/config --acceptLicense' - -docker exec -w '/usr/openam/ssoadmintools/openam/bin' openam-idp bash -c 'echo passw0rd > pwd.txt && chmod 400 pwd.txt' echo "Setup COT for OpenAM IDP" docker exec -w '/usr/openam/ssoadmintools/openam/bin' openam-idp bash -c \ @@ -79,7 +32,7 @@ docker exec -w '/usr/openam/ssoadmintools/openam/bin' openam-idp bash -c \ './ssoadm create-metadata-templ \ --adminid amadmin \ --password-file pwd.txt \ - --entityid http://idp.acme.org:8080/openam \ + --entityid http://openam.example.org:8080/openam \ --identityprovider /idp \ --idpscertalias test \ --meta-data-file idp-metadata.xml \ @@ -95,7 +48,7 @@ sed -i " } " idp-extended.xml' -echo "Create hosted identity provider for OpenAM IDP" +echo "Create a hosted identity provider for OpenAM IDP" docker exec -w '/usr/openam/ssoadmintools/openam/bin' openam-idp bash -c \ './ssoadm import-entity \ @@ -108,46 +61,6 @@ docker exec -w '/usr/openam/ssoadmintools/openam/bin' openam-idp bash -c \ echo "Running OpenAM SP setup" -docker run --rm -it -d -h sp.mycompany.org -p 8081:8080 -p 8001:8000 --network openam-saml --name openam-sp \ - -e JPDA_ADDRESS=*:8000 \ - -e JPDA_TRANSPORT=dt_socket \ - ${OPENAM_IMAGE} catalina.sh jpda run - -echo "waiting for OpenAM SP to be alive..." - -timeout 3m bash -c 'until docker inspect --format="{{json .State.Health.Status}}" openam-sp | grep -q \"healthy\"; do sleep 10; done' - -echo "Running OpenAM SP setup" - -docker exec -w '/usr/openam/ssoconfiguratortools' openam-sp bash -c \ -'echo "ACCEPT_LICENSES=true -SERVER_URL=http://sp.mycompany.org:8080 -DEPLOYMENT_URI=/$OPENAM_PATH -BASE_DIR=$OPENAM_DATA_DIR -locale=en_US -PLATFORM_LOCALE=en_US -AM_ENC_KEY= -ADMIN_PWD=passw0rd -AMLDAPUSERPASSWD=p@passw0rd -COOKIE_DOMAIN=sp.mycompany.org -ACCEPT_LICENSES=true -DATA_STORE=embedded -DIRECTORY_SSL=SIMPLE -DIRECTORY_SERVER=sp.mycompany.org -DIRECTORY_PORT=50389 -DIRECTORY_ADMIN_PORT=4444 -DIRECTORY_JMX_PORT=1689 -ROOT_SUFFIX=dc=openam,dc=example,dc=org -DS_DIRMGRDN=cn=Directory Manager -DS_DIRMGRPASSWD=passw0rd" > conf.file && java -jar openam-configurator-tool*.jar --file conf.file' - - -echo "Setup ssoadm tools for OpenAM SP" - -docker exec -w '/usr/openam/ssoadmintools' openam-sp bash -c './setup -p /usr/openam/config --acceptLicense' - -docker exec -w '/usr/openam/ssoadmintools/openam/bin' openam-sp bash -c 'echo passw0rd > pwd.txt && chmod 400 pwd.txt' - echo "Setup COT for OpenAM SP" docker exec -w '/usr/openam/ssoadmintools/openam/bin' openam-sp bash -c \ diff --git a/e2e/saml/saml-test.spec.mjs b/e2e/saml/saml-test.spec.mjs index 82af561588..2137d18816 100644 --- a/e2e/saml/saml-test.spec.mjs +++ b/e2e/saml/saml-test.spec.mjs @@ -28,7 +28,6 @@ import { fileURLToPath } from "url"; * OPENAM_USERNAME – login username (default: demo) * OPENAM_PASSWORD – login password (default: changeit) * BOOTSTRAP_SCRIPT – path to the startup script (default: ./bootstrap.sh) - * SHUTDOWN_SCRIPT – path to the shutdown script (default: ./shutdown.sh) */ // ─── __dirname equivalent in ESM ────────────────────────────────────────────── @@ -39,11 +38,10 @@ const __dirname = fileURLToPath(new URL(".", import.meta.url)); const USERNAME = process.env.OPENAM_USERNAME ?? "demo"; const PASSWORD = process.env.OPENAM_PASSWORD ?? "changeit"; const BOOTSTRAP_SCRIPT = process.env.BOOTSTRAP_SCRIPT ?? "./bootstrap.sh"; -const SHUTDOWN_SCRIPT = process.env.SHUTDOWN_SCRIPT ?? "./shutdown.sh"; // Derived URLs -const LOGIN_URL = "http://sp.mycompany.org:8081/openam/spssoinit?metaAlias=/sp&idpEntityID=http%3A//idp.acme.org%3A8080/openam&RelayState=http%3A//sp.mycompany.org%3A8081/openam"; -const EXPECTED_IDP_URL_PATTERN = /idp\.acme\.org/; +const LOGIN_URL = "http://sp.mycompany.org:8081/openam/spssoinit?metaAlias=/sp&idpEntityID=http%3A//openam.example.org%3A8080/openam&RelayState=http%3A//sp.mycompany.org%3A8081/openam"; +const EXPECTED_IDP_URL_PATTERN = /openam\.example\.org/; const EXPECTED_SP_URL_PATTERN = /sp\.mycompany\.org/; // ─── Selectors (XUI / LESS-based OpenAM UI) ─────────────────────────────────── @@ -76,13 +74,6 @@ test.beforeAll(() => { }); -// ─── Shutdown – run once after all tests ──────────────────────────────────── -test.afterAll(() => { - const scriptPath = resolve(__dirname, SHUTDOWN_SCRIPT); - console.log(`\n▶ Running shutdown script: ${scriptPath}`); - execScript(scriptPath); -}); - // ─── Tests ──────────────────────────────────────────────────────────────────── test.describe("OpenAM XUI - Login flow", () => { test("should log in as demo and reach the authenticated page", async ({ page }) => { diff --git a/e2e/saml/shutdown.sh b/e2e/saml/shutdown.sh deleted file mode 100755 index 685f76cb37..0000000000 --- a/e2e/saml/shutdown.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# The contents of this file are subject to the terms of the Common Development and -# Distribution License (the License). You may not use this file except in compliance with the -# License. -# -# You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the -# specific language governing permission and limitations under the License. -# -# When distributing Covered Software, include this CDDL Header Notice in each file and include -# the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL -# Header, with the fields enclosed by brackets [] replaced by your own identifying -# information: "Portions copyright [year] [name of copyright owner]". -# -# Copyright 2026 3A Systems, LLC. - - -echo "Stopping docker containers..." -docker stop openam-idp openam-sp - -echo "Removing network..." -docker network rm openam-saml -echo "Finished" \ No newline at end of file From 191398ff505e1af06a6508fa96030336395b99c2 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Fri, 15 May 2026 12:23:09 +0300 Subject: [PATCH 07/14] docker image name to env var --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9334f4cb44..51127fdee1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -111,7 +111,7 @@ jobs: - name: Prepare environment shell: bash run: | - export OPENAM_IMAGE=localhost:5000/${GITHUB_REPOSITORY,,}:${{ env.release_version }} + echo "OPENAM_IMAGE=localhost:5000/${GITHUB_REPOSITORY,,}:${{ env.release_version }}" >> $GITHUB_ENV docker network create test-openam echo "127.0.0.1 openam.example.org sp.mycompany.org" | sudo tee -a /etc/hosts From cf67ca0abe6b607277ff2d524fe4a2891e586cb8 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Fri, 15 May 2026 12:30:00 +0300 Subject: [PATCH 08/14] maven faster build --- .github/workflows/build.yml | 67 ++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 51127fdee1..3e7db8c579 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,31 +30,32 @@ jobs: path: ~/.m2/repository key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2-repository -# - name: Set Integration Test Environment -# if: matrix.os == 'ubuntu-latest' -# run: | -# echo "MAVEN_PROFILE_FLAG=-P integration-test" >> $GITHUB_OUTPUT -# echo "MAVEN_VERIFY_STAGE=verify" >> $GITHUB_OUTPUT -# echo "127.0.0.1 openam.local" | sudo tee -a /etc/hosts -# id: maven-profile-flag -# - name: Build with Maven -# env: -# MAVEN_OPTS: -Dhttps.protocols=TLSv1.2 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -Dmaven.wagon.http.retryHandler.count=10 -# run: mvn --batch-mode --errors --update-snapshots package ${{ steps.maven-profile-flag.outputs.MAVEN_VERIFY_STAGE }} --file pom.xml ${{ steps.maven-profile-flag.outputs.MAVEN_PROFILE_FLAG }} -# - name: Upload artifacts -# uses: actions/upload-artifact@v6 -# with: -# name: ${{ matrix.os }}-${{ matrix.java }} -# retention-days: 5 -# path: | -# openam-distribution/openam-distribution-kit/target/*.zip -# openam-distribution/openam-distribution-ssoconfiguratortools/target/*.zip -# openam-distribution/openam-distribution-fedlet-unconfigured/target/*.zip -# openam-distribution/openam-distribution-ssoadmintools/target/*.zip -# openam-console/target/*.war -# openam-server/target/*.war -# openam-server-only/target/*.war -# openam-distribution/openam-distribution-docker/Dockerfile* + - name: Set Integration Test Environment + if: matrix.os == 'ubuntu-latest' + run: | + echo "MAVEN_PROFILE_FLAG=-P integration-test" >> $GITHUB_OUTPUT + echo "MAVEN_VERIFY_STAGE=verify" >> $GITHUB_OUTPUT + echo "127.0.0.1 openam.local" | sudo tee -a /etc/hosts + id: maven-profile-flag + - name: Build with Maven + env: + MAVEN_OPTS: -Dhttps.protocols=TLSv1.2 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -Dmaven.wagon.http.retryHandler.count=10 + #run: mvn --batch-mode --errors --update-snapshots package ${{ steps.maven-profile-flag.outputs.MAVEN_VERIFY_STAGE }} --file pom.xml ${{ steps.maven-profile-flag.outputs.MAVEN_PROFILE_FLAG }} + run: mvn --batch-mode --errors --update-snapshots package ${{ steps.maven-profile-flag.outputs.MAVEN_VERIFY_STAGE }} --file pom.xml -DskipTests=true -Dcargo.maven.skip=true + - name: Upload artifacts + uses: actions/upload-artifact@v6 + with: + name: ${{ matrix.os }}-${{ matrix.java }} + retention-days: 5 + path: | + openam-distribution/openam-distribution-kit/target/*.zip + openam-distribution/openam-distribution-ssoconfiguratortools/target/*.zip + openam-distribution/openam-distribution-fedlet-unconfigured/target/*.zip + openam-distribution/openam-distribution-ssoadmintools/target/*.zip + openam-console/target/*.war + openam-server/target/*.war + openam-server-only/target/*.war + openam-distribution/openam-distribution-docker/Dockerfile* build-docker: needs: build-maven runs-on: 'ubuntu-latest' @@ -64,14 +65,10 @@ jobs: ports: - 5000:5000 steps: -# - name: Download artifacts -# uses: actions/download-artifact@v8 -# with: -# name: ubuntu-latest-11 - - uses: actions/checkout@v6 + - name: Download artifacts + uses: actions/download-artifact@v8 with: - fetch-depth: 0 - submodules: recursive + name: ubuntu-latest-11 - name: Get latest release version shell: bash run: | @@ -92,9 +89,9 @@ jobs: uses: docker/setup-buildx-action@v4 with: driver-opts: network=host -# - name: Prepare Dockerfile -# shell: bash -# run: sed -i -E '/^#COPY openam-(server|distribution)\//s/^#//' ./openam-distribution/openam-distribution-docker/Dockerfile + - name: Prepare Dockerfile + shell: bash + run: sed -i -E '/^#COPY openam-(server|distribution)\//s/^#//' ./openam-distribution/openam-distribution-docker/Dockerfile - name: Build image uses: docker/build-push-action@v7 continue-on-error: true From 792571d08cc9b39ea02edcd87604dc48d23e2286 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Fri, 15 May 2026 13:45:40 +0300 Subject: [PATCH 09/14] e2e tests checkout --- .github/workflows/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3e7db8c579..9350fbad1b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -275,6 +275,10 @@ jobs: key: ${{ runner.os }}-playwright-browsers restore-keys: ${{ runner.os }}-playwright- + - uses: actions/checkout@v6 + with: + sparse-checkout: e2e + - name: UI Smoke Tests (Playwright) run: | cd e2e From ac7c0eca2643c0b31f6b32b1cdaf5c1720760a64 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Fri, 15 May 2026 13:48:33 +0300 Subject: [PATCH 10/14] fix build.yml syntax error --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9350fbad1b..e687d3cfd3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -277,8 +277,8 @@ jobs: - uses: actions/checkout@v6 with: - sparse-checkout: e2e - + sparse-checkout: e2e + - name: UI Smoke Tests (Playwright) run: | cd e2e From 7aa7ad736aed173bf714e1be3fa40b75bcd7aa18 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Fri, 15 May 2026 14:46:12 +0300 Subject: [PATCH 11/14] fix remove docker images error --- .github/workflows/build.yml | 53 +------------------------------------ 1 file changed, 1 insertion(+), 52 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e687d3cfd3..76f0dffdb0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -306,7 +306,7 @@ jobs: - name: Stopping containers and removing the network shell: bash run: | - docker stop openam-idp opendj-idp sp-opendj sp-openam + docker stop openam-idp opendj-idp opendj-sp openam-sp docker network rm test-openam - name: Docker multi-server test @@ -454,54 +454,3 @@ jobs: http://openam3.example.org:8080/openam/json/authenticate | grep tokenId' docker inspect --format="{{json .State.Health.Status}}" test-openam3 | grep -q \"healthy\" - -# ui-smoke-tests: -# runs-on: ubuntu-latest -# needs: build-docker -# services: -# registry: -# image: registry:2 -# ports: -# - 5000:5000 -# strategy: -# fail-fast: false -# steps: -# - uses: actions/checkout@v6 -# -# - name: Set env -# run: | -# export git_version_last="$(curl -i -o - --silent https://api.github.com/repos/OpenIdentityPlatform/OpenAM/releases/latest | grep -m1 "\"name\"" | cut -d\" -f4)" ; echo "last release: $git_version_last" -# echo "release_version=$git_version_last" >> $GITHUB_ENV -# echo "REPO_LC=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV -# -# - name: Download artifact -# uses: actions/download-artifact@v4 -# with: -# name: myimage -# path: ${{ runner.temp }} -# -# - name: Load Docker image -# run: | -# docker load --input ${{ runner.temp }}/openam-image.tar -# docker image ls -a -# -# - name: Set Integration Test Environment -# run: | -# echo "127.0.0.1 idp.acme.org sp.mycompany.org" | sudo tee -a /etc/hosts -# -# - name: Cache Playwright browsers -# uses: actions/cache@v5 -# with: -# path: ~/.cache/ms-playwright -# key: ${{ runner.os }}-playwright-browsers -# restore-keys: ${{ runner.os }}-playwright- -# -# - name: UI Smoke Tests (Playwright) -# run: | -# cd e2e -# npm init -y -# npm install @playwright/test -# npx playwright install chromium --with-deps -# npx playwright test --reporter=list -# env: -# OPENAM_IMAGE: localhost:5000/${{ env.REPO_LC }}:${{ env.release_version }} From 2d9b088e4e90956cfe6efdc79c44cfbc2b5aac22 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Fri, 15 May 2026 16:49:02 +0300 Subject: [PATCH 12/14] fix remove docker images error --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 76f0dffdb0..0fe00642d1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -300,7 +300,7 @@ jobs: - name: Stopping containers and removing the network shell: bash run: | - docker stop openam-idp opendj-idp sp-opendj sp-openam + docker stop openam-idp opendj-idp opendj-sp openam-sp docker network rm test-openam - name: Stopping containers and removing the network From 1c700b126a9a80a746887b4ef303b97ddbfdcda5 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Fri, 15 May 2026 18:09:31 +0300 Subject: [PATCH 13/14] remove extra step --- .github/workflows/build.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0fe00642d1..271b07e390 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -303,12 +303,6 @@ jobs: docker stop openam-idp opendj-idp opendj-sp openam-sp docker network rm test-openam - - name: Stopping containers and removing the network - shell: bash - run: | - docker stop openam-idp opendj-idp opendj-sp openam-sp - docker network rm test-openam - - name: Docker multi-server test shell: bash run: | From cf94d8e55f9c1c123edc84507ffb7ec0f56d9544 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Fri, 15 May 2026 19:07:50 +0300 Subject: [PATCH 14/14] restore full maven build --- .github/workflows/build.yml | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 271b07e390..c81ca74587 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,10 +9,8 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: -# java: [ '11', '17', '21', '25', '26' ] - java: [ '11' ] -# os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] - os: [ 'ubuntu-latest' ] + java: [ '11', '17', '21', '25', '26' ] + os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] fail-fast: false steps: - uses: actions/checkout@v6 @@ -32,16 +30,15 @@ jobs: restore-keys: ${{ runner.os }}-m2-repository - name: Set Integration Test Environment if: matrix.os == 'ubuntu-latest' - run: | - echo "MAVEN_PROFILE_FLAG=-P integration-test" >> $GITHUB_OUTPUT + run: | + echo "MAVEN_PROFILE_FLAG=-P integration-test" >> $GITHUB_OUTPUT echo "MAVEN_VERIFY_STAGE=verify" >> $GITHUB_OUTPUT echo "127.0.0.1 openam.local" | sudo tee -a /etc/hosts id: maven-profile-flag - name: Build with Maven env: MAVEN_OPTS: -Dhttps.protocols=TLSv1.2 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -Dmaven.wagon.http.retryHandler.count=10 - #run: mvn --batch-mode --errors --update-snapshots package ${{ steps.maven-profile-flag.outputs.MAVEN_VERIFY_STAGE }} --file pom.xml ${{ steps.maven-profile-flag.outputs.MAVEN_PROFILE_FLAG }} - run: mvn --batch-mode --errors --update-snapshots package ${{ steps.maven-profile-flag.outputs.MAVEN_VERIFY_STAGE }} --file pom.xml -DskipTests=true -Dcargo.maven.skip=true + run: mvn --batch-mode --errors --update-snapshots package ${{ steps.maven-profile-flag.outputs.MAVEN_VERIFY_STAGE }} --file pom.xml ${{ steps.maven-profile-flag.outputs.MAVEN_PROFILE_FLAG }} - name: Upload artifacts uses: actions/upload-artifact@v6 with: @@ -100,7 +97,7 @@ jobs: file: ./openam-distribution/openam-distribution-docker/Dockerfile build-args: | VERSION=${{ env.release_version }} - platforms: linux/amd64, linux/arm64 #, linux/ppc64le, linux/s390x + platforms: linux/amd64, linux/arm64, linux/ppc64le, linux/s390x push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }}