2020-05-14 13:49:00 +00:00
name : Keycloak CI
2022-03-29 13:10:20 +00:00
on :
push :
2022-12-14 15:12:23 +00:00
branches-ignore :
- main
- dependabot/**
pull_request :
2022-09-12 09:19:23 +00:00
workflow_dispatch :
2020-05-14 13:49:00 +00:00
2021-08-04 15:04:26 +00:00
env :
2023-09-05 06:17:51 +00:00
MAVEN_ARGS : "-B -nsu -Daether.connector.http.connectionMaxTtl=25"
2022-12-16 12:02:05 +00:00
SUREFIRE_RERUN_FAILING_COUNT : 2
2023-07-28 10:32:06 +00:00
SUREFIRE_RETRY : "-Dsurefire.rerunFailingTestsCount=2"
2021-08-04 15:04:26 +00:00
2021-11-29 12:28:04 +00:00
concurrency :
2022-12-14 15:12:23 +00:00
# Only cancel jobs for PR updates
2023-07-27 04:26:03 +00:00
group : ci-${{ github.ref }}
2021-11-29 12:28:04 +00:00
cancel-in-progress : true
2022-12-14 15:12:23 +00:00
defaults :
run :
shell : bash
2020-05-14 13:49:00 +00:00
jobs :
2023-01-30 07:07:10 +00:00
conditional :
name : Check conditional workflows and jobs
runs-on : ubuntu-latest
outputs :
ci : ${{ steps.conditional.outputs.ci }}
2024-05-07 13:26:59 +00:00
ci-quarkus : ${{ steps.conditional.outputs.ci-quarkus }}
2023-07-31 08:25:40 +00:00
ci-store : ${{ steps.conditional.outputs.ci-store }}
2023-07-28 10:24:54 +00:00
ci-sssd : ${{ steps.conditional.outputs.ci-sssd }}
2024-05-31 10:23:04 +00:00
ci-webauthn : ${{ steps.conditional.outputs.ci-webauthn }}
2024-02-14 15:51:08 +00:00
ci-store-matrix : ${{ steps.conditional-stores.outputs.matrix }}
2024-07-19 10:11:17 +00:00
ci-test-poc : ${{ steps.conditional.outputs.ci-test-poc }}
2023-01-30 07:07:10 +00:00
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2023-01-30 07:07:10 +00:00
- id : conditional
uses : ./.github/actions/conditional
2023-07-25 13:43:53 +00:00
with :
token : ${{ secrets.GITHUB_TOKEN }}
2023-01-30 07:07:10 +00:00
2024-02-14 15:51:08 +00:00
- id : conditional-stores
run : |
STORES="postgres, mysql, oracle, mssql, mariadb"
2024-02-16 10:57:56 +00:00
if [[ $GITHUB_EVENT_NAME != "pull_request" && -n "${{ secrets.AWS_SECRET_ACCESS_KEY }}" ]]; then
2024-02-14 15:51:08 +00:00
STORES+=", aurora-postgres"
fi
echo "matrix=$(echo $STORES | jq -Rc 'split(", ")')" >> $GITHUB_OUTPUT
2020-05-14 13:49:00 +00:00
build :
name : Build
2023-01-30 07:07:10 +00:00
if : needs.conditional.outputs.ci == 'true'
2020-05-14 13:49:00 +00:00
runs-on : ubuntu-latest
2023-01-30 07:07:10 +00:00
needs : conditional
2020-05-14 13:49:00 +00:00
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2020-11-05 14:35:47 +00:00
- name : Build Keycloak
2022-12-14 15:12:23 +00:00
uses : ./.github/actions/build-keycloak
2020-11-05 14:35:47 +00:00
2020-11-04 06:57:19 +00:00
unit-tests :
2022-12-14 15:12:23 +00:00
name : Base UT
2020-11-04 06:57:19 +00:00
runs-on : ubuntu-latest
2020-11-05 09:23:15 +00:00
needs : build
2022-11-04 07:37:24 +00:00
timeout-minutes : 30
2020-11-04 06:57:19 +00:00
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2022-12-14 15:12:23 +00:00
- id : unit-test-setup
name : Unit test setup
uses : ./.github/actions/unit-test-setup
2020-11-04 06:57:19 +00:00
- name : Run unit tests
2022-12-16 14:31:28 +00:00
run : |
SEP=""
PROJECTS=""
2024-05-27 13:05:35 +00:00
for i in `find -name '*Test.java' -type f | egrep -v './(testsuite|quarkus|docs|test-poc)/' | sed 's|/src/test/java/.*||' | sort | uniq | sed 's|./||'`; do
2022-12-16 14:31:28 +00:00
PROJECTS="$PROJECTS$SEP$i"
SEP=","
done
2022-12-21 07:15:38 +00:00
2023-07-28 10:32:06 +00:00
./mvnw test -pl "$PROJECTS" -am
2020-11-04 06:57:19 +00:00
2022-12-15 09:14:30 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : unit-tests
2022-12-14 15:12:23 +00:00
base-integration-tests :
name : Base IT
2022-09-02 14:45:01 +00:00
needs : build
2022-12-14 15:12:23 +00:00
runs-on : ubuntu-latest
timeout-minutes : 100
strategy :
matrix :
group : [ 1 , 2 , 3 , 4 , 5 , 6 ]
fail-fast : false
2022-09-02 14:45:01 +00:00
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2022-09-02 14:45:01 +00:00
2022-12-14 15:12:23 +00:00
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
- name : Run base tests
2022-09-02 14:45:01 +00:00
run : |
2022-12-14 15:12:23 +00:00
TESTS=`testsuite/integration-arquillian/tests/base/testsuites/base-suite.sh ${{ matrix.group }}`
echo "Tests: $TESTS"
2024-06-26 18:08:07 +00:00
./mvnw test ${{ env.SUREFIRE_RETRY }} -Pauth-server-quarkus -Dtest=$TESTS -pl testsuite/integration-arquillian/tests/base 2>&1 | misc/log/trimmer.sh
2022-09-02 14:45:01 +00:00
2022-12-15 09:14:30 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
2022-12-16 12:02:05 +00:00
- uses : ./.github/actions/upload-flaky-tests
name : Upload flaky tests
2023-01-02 13:02:20 +00:00
env :
GH_TOKEN : ${{ github.token }}
with :
job-name : Base IT
2022-12-16 12:02:05 +00:00
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : base-integration-tests-${{ matrix.group }}
2024-02-13 11:38:58 +00:00
adapter-integration-tests :
name : Adapter IT
needs : build
runs-on : ubuntu-latest
timeout-minutes : 100
steps :
- uses : actions/checkout@v4
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
- name : Build adapter distributions
run : ./mvnw install -DskipTests -f distribution/pom.xml
- name : Build app servers
run : ./mvnw install -DskipTests -Pbuild-app-servers -f testsuite/integration-arquillian/servers/app-server/pom.xml
- name : Run adapter tests
run : |
TESTS="org.keycloak.testsuite.adapter.**"
echo "Tests: $TESTS"
2024-06-26 18:08:07 +00:00
./mvnw test ${{ env.SUREFIRE_RETRY }} -Pauth-server-quarkus -Papp-server-wildfly -Dtest=$TESTS -pl testsuite/integration-arquillian/tests/base 2>&1 | misc/log/trimmer.sh
2024-02-13 11:38:58 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
- uses : ./.github/actions/upload-flaky-tests
name : Upload flaky tests
env :
GH_TOKEN : ${{ github.token }}
with :
job-name : Base IT
- name : Surefire reports
if : always()
uses : ./.github/actions/archive-surefire-reports
with :
job-id : adapter-integration-tests
2023-08-23 06:43:27 +00:00
quarkus-unit-tests :
name : Quarkus UT
2024-05-07 13:26:59 +00:00
needs : [ build, conditional]
if : needs.conditional.outputs.ci-quarkus == 'true'
2023-08-23 06:43:27 +00:00
timeout-minutes : 15
2023-09-18 15:28:25 +00:00
strategy :
matrix :
os : [ ubuntu-latest, windows-latest ]
runs-on : ${{ matrix.os }}
2023-08-23 06:43:27 +00:00
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2023-08-23 06:43:27 +00:00
# We want to download Keycloak artifacts
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
- name : Run unit tests
run : |
./mvnw test -f quarkus/pom.xml -pl '!tests,!tests/junit5,!tests/integration,!dist'
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : quarkus-unit-tests
2022-12-14 15:12:23 +00:00
quarkus-integration-tests :
name : Quarkus IT
2024-05-07 13:26:59 +00:00
needs : [ build, conditional]
2022-12-14 15:12:23 +00:00
timeout-minutes : 115
strategy :
matrix :
2024-05-07 13:26:59 +00:00
os : [ ubuntu-latest]
suite : [ zip, container, storage, smoke]
full-testsuite :
- ${{ needs.conditional.outputs.ci-quarkus == 'true' }}
# Win runs always as includes are evaluated after excludes
include :
2023-07-18 10:15:56 +00:00
- os : windows-latest
2024-05-07 13:26:59 +00:00
suite : win
# Either run smoke tests, or full testsuite
exclude :
- full-testsuite : false
suite : zip
- full-testsuite : false
suite : container
- full-testsuite : false
suite : storage
- full-testsuite : true
suite : smoke
2022-12-14 15:12:23 +00:00
fail-fast : false
2023-07-18 10:15:56 +00:00
runs-on : ${{ matrix.os }}
2022-12-14 15:12:23 +00:00
env :
MAVEN_OPTS : -Xmx1024m
2020-11-30 07:53:31 +00:00
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2022-12-14 15:12:23 +00:00
- id : unit-test-setup
name : Unit test setup
uses : ./.github/actions/unit-test-setup
2022-12-16 14:31:28 +00:00
# Not sure why, but needs to re-build otherwise there's some failures starting up
2024-05-07 13:26:59 +00:00
# Smoke tests should cover scenarios that could be broken by changes in other modules that quarkus
2022-12-14 15:12:23 +00:00
- name : Run Quarkus integration Tests
2020-11-30 07:53:31 +00:00
run : |
2022-12-14 15:12:23 +00:00
declare -A PARAMS
2024-05-07 13:26:59 +00:00
PARAMS["win"]="-Dtest=StartCommandDistTest,StartDevCommandDistTest,BuildAndStartDistTest,ImportAtStartupDistTest"
2022-12-14 15:12:23 +00:00
PARAMS["zip"]=""
PARAMS["container"]="-Dkc.quarkus.tests.dist=docker"
2023-12-04 07:53:37 +00:00
PARAMS["storage"]="-Ptest-database -Dtest=PostgreSQLDistTest,MariaDBDistTest#testSuccessful,MySQLDistTest#testSuccessful,DatabaseOptionsDistTest,JPAStoreDistTest,HotRodStoreDistTest,MixedStoreDistTest,TransactionConfigurationDistTest,ExternalInfinispanTest"
2024-05-07 13:26:59 +00:00
PARAMS["smoke"]="-Dtest=ClusterConfigDistTest,CustomJpaEntityProviderDistTest,ExportDistTest,FeaturesDistTest,ImportAtStartupDistTest,ImportDistTest,JaxRsDistTest,TruststoreDistTest"
2022-12-14 15:12:23 +00:00
2023-07-28 10:32:06 +00:00
./mvnw install -pl quarkus/tests/integration -am -DskipTests
2024-05-07 13:26:59 +00:00
./mvnw test -pl quarkus/tests/integration ${PARAMS["${{ matrix.suite }}"]} 2>&1 | misc/log/trimmer.sh
2020-11-30 07:53:31 +00:00
2022-12-15 09:14:30 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : quarkus-integration-tests-${{ matrix.os }}-${{ matrix.server }}
2022-12-14 15:12:23 +00:00
jdk-integration-tests :
name : Java Distribution IT
2020-05-14 13:49:00 +00:00
needs : build
2022-11-17 10:38:21 +00:00
timeout-minutes : 100
2020-11-13 14:15:01 +00:00
strategy :
matrix :
2023-07-18 10:15:56 +00:00
os : [ ubuntu-latest, windows-latest]
2022-12-14 15:12:23 +00:00
dist : [ temurin]
2024-06-03 12:17:28 +00:00
version : [ 17 ]
2020-11-13 14:15:01 +00:00
fail-fast : false
2023-07-18 10:15:56 +00:00
runs-on : ${{ matrix.os }}
2020-05-14 13:49:00 +00:00
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2022-10-20 21:37:04 +00:00
2022-12-14 15:12:23 +00:00
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
2020-11-05 09:23:15 +00:00
with :
2022-12-14 15:12:23 +00:00
jdk-dist : ${{ matrix.dist }}
jdk-version : ${{ matrix.version }}
2020-11-05 09:23:15 +00:00
2023-03-21 19:25:35 +00:00
- name : Prepare Quarkus distribution with current JDK
2023-07-28 10:32:06 +00:00
run : ./mvnw install -e -pl testsuite/integration-arquillian/servers/auth-server/quarkus
2020-11-10 09:40:06 +00:00
2020-05-14 13:49:00 +00:00
- name : Run base tests
2020-11-05 09:23:15 +00:00
run : |
2022-12-14 15:12:23 +00:00
TESTS=`testsuite/integration-arquillian/tests/base/testsuites/suite.sh jdk`
echo "Tests: $TESTS"
2024-07-17 08:16:43 +00:00
if [ "$OSTYPE" == "msys" ]; then
./mvnw test ${{ env.SUREFIRE_RETRY }} -Pauth-server-quarkus -Dtest=$TESTS "-Dwebdriver.chrome.driver=$ChromeWebDriver/chromedriver.exe" -pl testsuite/integration-arquillian/tests/base 2>&1 | misc/log/trimmer.sh
else
./mvnw test ${{ env.SUREFIRE_RETRY }} -Pauth-server-quarkus -Dtest=$TESTS "-Dwebdriver.chrome.driver=$CHROMEWEBDRIVER/chromedriver" -pl testsuite/integration-arquillian/tests/base 2>&1 | misc/log/trimmer.sh
fi
2022-10-17 21:33:22 +00:00
2023-02-22 06:20:14 +00:00
- name : Build with JDK
run :
2023-07-28 10:32:06 +00:00
./mvnw install -e -DskipTests -DskipExamples
2023-02-22 06:20:14 +00:00
2022-12-15 09:14:30 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
2023-01-04 13:38:05 +00:00
- uses : ./.github/actions/upload-flaky-tests
name : Upload flaky tests
env :
GH_TOKEN : ${{ github.token }}
with :
job-name : Java Distribution IT
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : jdk-integration-tests-${{ matrix.os }}-${{ matrix.dist }}-${{ matrix.version }}
2024-03-28 08:17:07 +00:00
persistent-sessions-tests :
name : Persistent Sessions IT
needs : [ build, conditional]
if : needs.conditional.outputs.ci-store == 'true'
runs-on : ubuntu-latest
timeout-minutes : 150
2024-07-09 07:03:36 +00:00
strategy :
matrix :
variant : [ "pus-ec" , "pus-rc" ]
fail-fast : false
2024-03-28 08:17:07 +00:00
steps :
- uses : actions/checkout@v4
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
2024-07-09 07:03:36 +00:00
- name : Run base tests
2024-03-28 08:17:07 +00:00
run : |
TESTS=`testsuite/integration-arquillian/tests/base/testsuites/suite.sh persistent-sessions`
echo "Tests: $TESTS"
2024-07-09 07:03:36 +00:00
case "${{ matrix.variant }}" in
pus-ec)
VARIANT="-Dauth.server.feature=persistent-user-sessions"
;;
pus-rc)
VARIANT="-Pinfinispan-server -Dauth.server.feature=persistent-user-sessions,multi-site,remote-cache"
;;
*)
echo "Unknown Matrix element"
exit 1
;;
esac
echo "Variant: $VARIANT"
2024-07-17 08:16:43 +00:00
./mvnw test ${{ env.SUREFIRE_RETRY }} -Pauth-server-quarkus "-Dwebdriver.chrome.driver=$CHROMEWEBDRIVER/chromedriver" $VARIANT -Dtest=$TESTS -pl testsuite/integration-arquillian/tests/base 2>&1 | misc/log/trimmer.sh
2024-03-28 08:17:07 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
- uses : ./.github/actions/upload-flaky-tests
name : Upload flaky tests
env :
GH_TOKEN : ${{ github.token }}
with :
job-name : Store IT
- name : Surefire reports
if : always()
uses : ./.github/actions/archive-surefire-reports
with :
2024-07-09 07:03:36 +00:00
job-id : store-integration-tests-${{ matrix.variant }}
2024-03-28 08:17:07 +00:00
- name : EC2 Maven Logs
if : failure()
2024-04-15 15:14:00 +00:00
uses : actions/upload-artifact@v4
2024-03-28 08:17:07 +00:00
with :
name : store-it-mvn-logs
path : .github/scripts/ansible/files
2024-04-24 11:58:44 +00:00
external-infinispan-tests :
name : External Infinispan IT
needs : [ build, conditional ]
if : needs.conditional.outputs.ci-store == 'true'
runs-on : ubuntu-latest
timeout-minutes : 150
strategy :
matrix :
variant : [ "remote-cache,multi-site" ]
fail-fast : false
steps :
- uses : actions/checkout@v4
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
- name : Run base tests without cache
run : |
2024-06-18 09:38:09 +00:00
TESTS=`testsuite/integration-arquillian/tests/base/testsuites/suite.sh remote-cache`
2024-04-24 11:58:44 +00:00
echo "Tests: $TESTS"
./mvnw test ${{ env.SUREFIRE_RETRY }} -Pauth-server-quarkus -Pinfinispan-server -Dauth.server.feature=${{ matrix.variant }} -Dtest=$TESTS -pl testsuite/integration-arquillian/tests/base 2>&1 | misc/log/trimmer.sh
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
- uses : ./.github/actions/upload-flaky-tests
name : Upload flaky tests
env :
GH_TOKEN : ${{ github.token }}
with :
job-name : Remote Infinispan IT
- name : Surefire reports
if : always()
uses : ./.github/actions/archive-surefire-reports
with :
job-id : remote-infinispan-integration-tests
2024-01-23 13:50:31 +00:00
store-integration-tests :
name : Store IT
2023-07-31 08:25:40 +00:00
needs : [ build, conditional]
if : needs.conditional.outputs.ci-store == 'true'
2022-12-14 15:12:23 +00:00
runs-on : ubuntu-latest
2024-02-14 15:51:08 +00:00
timeout-minutes : 150
2022-12-14 15:12:23 +00:00
strategy :
matrix :
2024-02-14 15:51:08 +00:00
db : ${{ fromJson(needs.conditional.outputs.ci-store-matrix) }}
2022-12-14 15:12:23 +00:00
fail-fast : false
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2022-12-14 15:12:23 +00:00
2024-02-14 15:51:08 +00:00
- id : aurora-init
name : Initialize Aurora environment
if : ${{ matrix.db == 'aurora-postgres' }}
run : |
AWS_REGION=us-east-1
echo "Region: ${AWS_REGION}"
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws configure set region ${AWS_REGION}
PASS=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 13; echo)
echo "::add-mask::${PASS}"
echo "name=gh-action-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
echo "password=${PASS}" >> $GITHUB_OUTPUT
echo "region=${AWS_REGION}" >> $GITHUB_OUTPUT
- id : aurora-create
name : Create Aurora DB
if : ${{ matrix.db == 'aurora-postgres' }}
uses : ./.github/actions/aurora-create-database
with :
name : ${{ steps.aurora-init.outputs.name }}
password : ${{ steps.aurora-init.outputs.password }}
region : ${{ steps.aurora-init.outputs.region }}
2022-12-14 15:12:23 +00:00
- id : integration-test-setup
name : Integration test setup
2024-02-14 15:51:08 +00:00
if : ${{ matrix.db != 'aurora-postgres' }}
2022-12-14 15:12:23 +00:00
uses : ./.github/actions/integration-test-setup
2022-10-17 21:33:22 +00:00
2024-02-14 15:51:08 +00:00
- name : Run Aurora tests on EC2
id : aurora-tests
if : ${{ matrix.db == 'aurora-postgres' }}
run : |
PROPS="-Dauth.server.db.host=${{ steps.aurora-create.outputs.endpoint }}"
PROPS+=" -Dkeycloak.connectionsJpa.password=${{ steps.aurora-init.outputs.password }}"
REGION=${{ steps.aurora-init.outputs.region }}
curl --fail-with-body https://truststore.pki.rds.amazonaws.com/${REGION}/${REGION}-bundle.pem -o aws.pem
PROPS+=" -Dkeycloak.connectionsJpa.jdbcParameters=\"?ssl=true&sslmode=verify-ca&sslrootcert=/opt/keycloak/aws.pem\""
TESTS=`testsuite/integration-arquillian/tests/base/testsuites/suite.sh database`
echo "Tests: $TESTS"
git archive --format=zip --output /tmp/keycloak.zip $GITHUB_REF
zip -u /tmp/keycloak.zip aws.pem
cd .github/scripts/ansible
export CLUSTER_NAME=keycloak_$(git rev-parse --short HEAD)
echo "ec2_cluster=${CLUSTER_NAME}" >> $GITHUB_OUTPUT
./aws_ec2.sh requirements
./aws_ec2.sh create ${REGION}
./keycloak_ec2_installer.sh ${REGION} /tmp/keycloak.zip
2024-02-16 10:57:56 +00:00
./mvn_ec2_runner.sh ${REGION} "clean install -B -DskipTests -Pdistribution"
2024-02-19 11:11:25 +00:00
./mvn_ec2_runner.sh ${REGION} "clean install -B -DskipTests -pl testsuite/integration-arquillian/servers/auth-server/quarkus -Pauth-server-quarkus -Pdb-aurora-postgres -Dmaven.build.cache.enabled=true"
2024-02-16 10:57:56 +00:00
./mvn_ec2_runner.sh ${REGION} "test -B ${{ env.SUREFIRE_RETRY }} -Pauth-server-quarkus -Pdb-${{ matrix.db }} $PROPS -Dtest=$TESTS -pl testsuite/integration-arquillian/tests/base 2>&1 | misc/log/trimmer.sh"
# Copy returned surefire-report directories to workspace root to ensure they're discovered
results=(files/keycloak/results/*)
rsync -a $results/* ../../../
rm -rf $results
2024-02-14 15:51:08 +00:00
2022-10-17 21:33:22 +00:00
- name : Run base tests
2024-02-14 15:51:08 +00:00
if : ${{ matrix.db != 'aurora-postgres' }}
2022-10-17 21:33:22 +00:00
run : |
2022-12-14 15:12:23 +00:00
TESTS=`testsuite/integration-arquillian/tests/base/testsuites/suite.sh database`
echo "Tests: $TESTS"
2024-07-17 08:16:43 +00:00
./mvnw test ${{ env.SUREFIRE_RETRY }} -Pauth-server-quarkus -Pdb-${{ matrix.db }} "-Dwebdriver.chrome.driver=$CHROMEWEBDRIVER/chromedriver" -Dtest=$TESTS -pl testsuite/integration-arquillian/tests/base 2>&1 | misc/log/trimmer.sh
2022-05-19 08:55:53 +00:00
2022-12-15 09:14:30 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
2023-01-04 13:38:05 +00:00
- uses : ./.github/actions/upload-flaky-tests
name : Upload flaky tests
env :
GH_TOKEN : ${{ github.token }}
with :
2024-01-23 13:50:31 +00:00
job-name : Store IT
2023-01-04 13:38:05 +00:00
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
2024-01-23 13:50:31 +00:00
job-id : store-integration-tests-${{ matrix.db }}
2023-08-31 11:27:37 +00:00
2024-02-14 15:51:08 +00:00
- name : EC2 Maven Logs
if : failure()
2024-04-15 15:14:00 +00:00
uses : actions/upload-artifact@v4
2024-02-14 15:51:08 +00:00
with :
name : store-it-mvn-logs
path : .github/scripts/ansible/files
- name : Delete Aurora EC2 Instance
if : ${{ always() && matrix.db == 'aurora-postgres' }}
working-directory : .github/scripts/ansible
run : |
export CLUSTER_NAME=${{ steps.aurora-tests.outputs.ec2_cluster }}
./aws_ec2.sh delete ${{ steps.aurora-init.outputs.region }}
- name : Delete Aurora DB
if : ${{ always() && matrix.db == 'aurora-postgres' }}
2024-05-21 09:17:15 +00:00
run : |
gh workflow run aurora-delete.yml \
-f name=${{ steps.aurora-init.outputs.name }} \
-f region=${{ steps.aurora-init.outputs.region }} \
--repo ${{ github.repository }} \
--ref ${{ github.ref_name }}
env :
GH_TOKEN : ${{ github.token }}
2024-02-14 15:51:08 +00:00
2022-12-14 15:12:23 +00:00
store-model-tests :
name : Store Model Tests
runs-on : ubuntu-latest
2023-07-31 08:25:40 +00:00
needs : [ build, conditional]
if : needs.conditional.outputs.ci-store == 'true'
2023-01-06 07:57:40 +00:00
timeout-minutes : 75
2022-12-14 15:12:23 +00:00
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2022-12-14 15:12:23 +00:00
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
- name : Run model tests
2023-07-28 10:32:06 +00:00
run : testsuite/model/test-all-profiles.sh ${{ env.SUREFIRE_RETRY }}
2020-11-05 14:35:47 +00:00
2022-12-15 09:14:30 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
2023-01-06 08:15:01 +00:00
- uses : ./.github/actions/upload-flaky-tests
name : Upload flaky tests
env :
GH_TOKEN : ${{ github.token }}
with :
job-name : Store Model Tests
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : store-model-tests
2022-12-14 15:12:23 +00:00
clustering-integration-tests :
2024-01-23 13:50:31 +00:00
name : Clustering IT
2020-11-05 14:35:47 +00:00
needs : build
runs-on : ubuntu-latest
2022-10-27 08:43:51 +00:00
timeout-minutes : 35
2020-11-05 14:35:47 +00:00
env :
2021-04-15 10:53:48 +00:00
MAVEN_OPTS : -Xmx1024m
2020-11-05 14:35:47 +00:00
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2022-04-14 14:42:47 +00:00
2022-12-14 15:12:23 +00:00
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
2020-11-10 09:40:06 +00:00
2022-12-14 15:12:23 +00:00
- name : Run cluster tests
2020-11-05 14:35:47 +00:00
run : |
2024-07-17 08:16:43 +00:00
./mvnw test ${{ env.SUREFIRE_RETRY }} -Pauth-server-cluster-quarkus,db-postgres "-Dwebdriver.chrome.driver=$CHROMEWEBDRIVER/chromedriver" -Dsession.cache.owners=2 -Dtest=**.cluster.** -pl testsuite/integration-arquillian/tests/base 2>&1 | misc/log/trimmer.sh
2021-04-13 15:28:34 +00:00
2022-12-15 09:14:30 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
2023-01-04 13:38:05 +00:00
- uses : ./.github/actions/upload-flaky-tests
name : Upload flaky tests
env :
GH_TOKEN : ${{ github.token }}
with :
2024-01-23 13:50:31 +00:00
job-name : Clustering IT
2023-01-04 13:38:05 +00:00
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : clustering-integration-tests
2022-12-14 15:12:23 +00:00
fips-unit-tests :
name : FIPS UT
runs-on : ubuntu-latest
needs : build
timeout-minutes : 20
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2022-12-14 15:12:23 +00:00
2023-02-09 09:14:20 +00:00
- name : Fake fips
run : |
cd .github/fake_fips
make
sudo insmod fake_fips.ko
2022-12-14 15:12:23 +00:00
- id : unit-test-setup
name : Unit test setup
uses : ./.github/actions/unit-test-setup
2023-02-09 09:14:20 +00:00
- name : Run crypto tests
2023-04-27 07:06:46 +00:00
run : docker run --rm --workdir /github/workspace -v "${{ github.workspace }}":"/github/workspace" -v "$HOME/.m2":"/root/.m2" registry.access.redhat.com/ubi8/ubi:latest .github/scripts/run-fips-ut.sh
2022-12-14 15:12:23 +00:00
2022-12-15 09:14:30 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : fips-unit-tests
2022-12-14 15:12:23 +00:00
fips-integration-tests :
name : FIPS IT
2021-11-23 14:45:46 +00:00
needs : build
runs-on : ubuntu-latest
2022-12-14 15:12:23 +00:00
timeout-minutes : 45
2023-02-03 11:00:09 +00:00
strategy :
matrix :
mode : [ non-strict, strict]
fail-fast : false
2021-11-23 14:45:46 +00:00
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2021-11-29 12:28:04 +00:00
2023-02-09 09:14:20 +00:00
- name : Fake fips
run : |
cd .github/fake_fips
make
sudo insmod fake_fips.ko
2022-12-14 15:12:23 +00:00
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
2023-02-09 09:14:20 +00:00
with :
2024-06-03 12:17:28 +00:00
jdk-version : 21
2021-11-29 12:28:04 +00:00
2024-02-13 11:38:58 +00:00
- name : Build adapter distributions
run : ./mvnw install -DskipTests -f distribution/pom.xml
- name : Build app servers
run : ./mvnw install -DskipTests -Pbuild-app-servers -f testsuite/integration-arquillian/servers/app-server/pom.xml
2022-12-14 15:12:23 +00:00
- name : Prepare Quarkus distribution with BCFIPS
2023-07-28 10:32:06 +00:00
run : ./mvnw install -e -pl testsuite/integration-arquillian/servers/auth-server/quarkus -Pauth-server-quarkus,auth-server-fips140-2
2021-12-21 16:45:16 +00:00
2022-12-14 15:12:23 +00:00
- name : Run base tests
2023-04-27 07:06:46 +00:00
run : docker run --rm --workdir /github/workspace -e "SUREFIRE_RERUN_FAILING_COUNT" -v "${{ github.workspace }}":"/github/workspace" -v "$HOME/.m2":"/root/.m2" registry.access.redhat.com/ubi8/ubi:latest .github/scripts/run-fips-it.sh ${{ matrix.mode }}
2022-12-14 15:12:23 +00:00
2022-12-15 09:14:30 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
2023-01-04 13:38:05 +00:00
- uses : ./.github/actions/upload-flaky-tests
name : Upload flaky tests
env :
GH_TOKEN : ${{ github.token }}
with :
job-name : FIPS IT
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : fips-integration-tests-${{ matrix.mode }}
2023-06-19 12:44:20 +00:00
forms-integration-tests :
name : Forms IT
runs-on : ubuntu-latest
needs : build
timeout-minutes : 75
strategy :
matrix :
browser : [ chrome, firefox]
fail-fast : false
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2023-06-19 12:44:20 +00:00
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
- name : Run Forms IT
run : |
TESTS=`testsuite/integration-arquillian/tests/base/testsuites/suite.sh forms`
echo "Tests: $TESTS"
2024-06-26 18:08:07 +00:00
./mvnw test ${{ env.SUREFIRE_RETRY }} -Pauth-server-quarkus -Dtest=$TESTS -Dbrowser=${{ matrix.browser }} -f testsuite/integration-arquillian/tests/base/pom.xml 2>&1 | misc/log/trimmer.sh
2023-06-19 12:44:20 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
- uses : ./.github/actions/upload-flaky-tests
name : Upload flaky tests
env :
GH_TOKEN : ${{ github.token }}
with :
job-name : Forms IT
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : forms-integration-tests-${{ matrix.browser }}
2023-02-13 12:28:25 +00:00
webauthn-integration-tests :
name : WebAuthn IT
2024-05-31 10:23:04 +00:00
if : needs.conditional.outputs.ci-webauthn == 'true'
2023-02-13 12:28:25 +00:00
runs-on : ubuntu-latest
needs : build
2023-02-23 20:58:13 +00:00
timeout-minutes : 45
2023-02-13 12:28:25 +00:00
strategy :
matrix :
2023-07-28 14:52:22 +00:00
browser :
- chrome
2024-06-18 08:36:01 +00:00
- firefox
2023-02-13 12:28:25 +00:00
fail-fast : false
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2023-02-13 12:28:25 +00:00
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
- name : Run WebAuthn IT
2024-05-30 12:21:27 +00:00
run : |
TESTS=`testsuite/integration-arquillian/tests/base/testsuites/suite.sh webauthn`
echo "Tests: $TESTS"
2024-07-17 08:16:43 +00:00
./mvnw test ${{ env.SUREFIRE_RETRY }} -Pauth-server-quarkus -Dtest=$TESTS -Dbrowser=${{ matrix.browser }} "-Dwebdriver.chrome.driver=$CHROMEWEBDRIVER/chromedriver" "-Dwebdriver.gecko.driver=$GECKOWEBDRIVER/geckodriver" -pl testsuite/integration-arquillian/tests/base 2>&1 | misc/log/trimmer.sh
2023-02-13 12:28:25 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
- uses : ./.github/actions/upload-flaky-tests
name : Upload flaky tests
env :
GH_TOKEN : ${{ github.token }}
with :
job-name : WebAuthn IT
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : webauthn-integration-tests-${{ matrix.browser }}
2023-05-10 13:25:12 +00:00
sssd-unit-tests :
name : SSSD
runs-on : ubuntu-latest
2023-07-28 10:24:54 +00:00
if : needs.conditional.outputs.ci-sssd == 'true'
2023-05-10 13:25:12 +00:00
needs :
- conditional
- build
timeout-minutes : 30
steps :
- name : checkout
2023-09-06 11:40:06 +00:00
uses : actions/checkout@v4
2023-05-10 13:25:12 +00:00
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
- id : weekly-cache-key
name : Key for weekly rotation of cache
shell : bash
run : echo "key=ipa-data-`date -u "+%Y-%U"`" >> $GITHUB_OUTPUT
- id : cache-maven-repository
name : ipa-data cache
2024-03-22 07:57:41 +00:00
uses : actions/cache@v4
2023-05-10 13:25:12 +00:00
with :
path : ~/ipa-data.tar
key : ${{ steps.weekly-cache-key.outputs.key }}
- name : Run tests
run : .github/scripts/run-ipa.sh "${{ github.workspace }}"
2023-02-13 12:28:25 +00:00
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : sssd-unit-tests
2023-05-17 10:32:44 +00:00
migration-tests :
name : Migration Tests
runs-on : ubuntu-latest
needs : build
timeout-minutes : 45
strategy :
matrix :
2024-05-28 09:32:31 +00:00
old-version : [ 24.0 .4 ]
2023-05-17 10:32:44 +00:00
database : [ postgres, mysql, oracle, mssql, mariadb]
fail-fast : false
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2023-05-17 10:32:44 +00:00
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
- name : Run Migration Tests
run : |
2023-07-28 10:32:06 +00:00
./mvnw clean install ${{ env.SUREFIRE_RETRY }} \
2023-05-17 10:32:44 +00:00
-Pauth-server-quarkus -Pdb-${{ matrix.database }} -Pauth-server-migration \
-Dtest=MigrationTest \
-Dmigration.mode=auto \
-Dmigrated.auth.server.version=${{ matrix.old-version }} \
-Dmigration.import.file.name=migration-realm-${{ matrix.old-version }}.json \
-Dauth.server.ssl.required=false \
-Dauth.server.db.host=localhost \
2024-07-17 08:16:43 +00:00
"-Dwebdriver.chrome.driver=$CHROMEWEBDRIVER/chromedriver" \
2023-12-13 10:56:08 +00:00
-f testsuite/integration-arquillian/pom.xml 2>&1 | misc/log/trimmer.sh
2023-05-17 10:32:44 +00:00
- name : Upload JVM Heapdumps
if : always()
uses : ./.github/actions/upload-heapdumps
- uses : ./.github/actions/upload-flaky-tests
name : Upload flaky tests
env :
GH_TOKEN : ${{ github.token }}
with :
job-name : Migration Tests
2024-02-14 15:51:08 +00:00
2023-08-31 11:27:37 +00:00
- name : Surefire reports
2023-09-05 06:16:23 +00:00
if : always()
2023-08-31 11:27:37 +00:00
uses : ./.github/actions/archive-surefire-reports
with :
job-id : migration-tests-${{ matrix.old-version }}-${{ matrix.database }}
2023-05-17 10:32:44 +00:00
2024-07-19 10:11:17 +00:00
test-poc :
name : Test PoC
runs-on : ubuntu-latest
if : needs.conditional.outputs.ci-test-poc == 'true'
needs :
- conditional
- build
timeout-minutes : 30
steps :
- uses : actions/checkout@v4
- id : integration-test-setup
name : Integration test setup
uses : ./.github/actions/integration-test-setup
- name : Run tests
run : |
cd test-poc
mvn clean install
2023-07-28 05:04:16 +00:00
check :
name : Status Check - Keycloak CI
if : always()
2022-12-14 15:12:23 +00:00
needs :
2023-09-05 06:34:41 +00:00
- conditional
2024-01-09 07:39:43 +00:00
- build
2022-12-14 15:12:23 +00:00
- unit-tests
- base-integration-tests
2024-02-13 11:38:58 +00:00
- adapter-integration-tests
2023-08-23 06:43:27 +00:00
- quarkus-unit-tests
2022-12-14 15:12:23 +00:00
- quarkus-integration-tests
- jdk-integration-tests
2024-01-23 13:50:31 +00:00
- store-integration-tests
2024-03-28 08:17:07 +00:00
- persistent-sessions-tests
2022-12-14 15:12:23 +00:00
- store-model-tests
- clustering-integration-tests
- fips-unit-tests
- fips-integration-tests
2023-06-19 12:44:20 +00:00
- forms-integration-tests
2023-02-13 12:28:25 +00:00
- webauthn-integration-tests
2023-05-10 13:25:12 +00:00
- sssd-unit-tests
2023-05-17 10:32:44 +00:00
- migration-tests
2024-04-24 11:58:44 +00:00
- external-infinispan-tests
2024-07-19 10:11:17 +00:00
- test-poc
2022-12-14 15:12:23 +00:00
runs-on : ubuntu-latest
steps :
2023-09-06 11:40:06 +00:00
- uses : actions/checkout@v4
2023-07-28 05:04:16 +00:00
- uses : ./.github/actions/status-check
2021-11-23 14:45:46 +00:00
with :
2023-07-28 05:04:16 +00:00
jobs : ${{ toJSON(needs) }}