2020-05-14 13:49:00 +00:00
name : Keycloak CI
on : [ push, pull_request]
2021-05-06 10:31:51 +00:00
env :
# workaround for Maven >= 3.8.1 (see KEYCLOAK-17812)
MVN_MIRRORS : '[{ "id": "jboss-public-repository-group-https", "mirrorOf": "jboss-public-repository-group", "url": "https://repository.jboss.org/nexus/content/groups/public/" }]'
2020-05-14 13:49:00 +00:00
jobs :
build :
name : Build
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v2
- uses : actions/setup-java@v1
with :
java-version : 1.8
2021-05-06 10:31:51 +00:00
- uses : whelk-io/maven-settings-xml-action@v15
with :
mirrors : ${{ env.MVN_MIRRORS }}
2020-05-14 13:49:00 +00:00
- name : Cache Maven packages
2020-11-05 09:23:15 +00:00
id : cache
2020-05-14 13:49:00 +00:00
uses : actions/cache@v2
with :
2020-11-05 09:23:15 +00:00
path : |
~/.m2/repository
2020-11-10 09:40:06 +00:00
key : cache-1-${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys : cache-1-${{ runner.os }}-m2
2020-11-05 14:35:47 +00:00
- name : Build Keycloak
2020-11-13 14:15:01 +00:00
run : |
mvn clean install -nsu -B -e -DskipTests -Pquarkus,distribution
mvn clean install -nsu -B -e -f testsuite/integration-arquillian/servers/auth-server -Pauth-server-quarkus
mvn clean install -nsu -B -e -f testsuite/integration-arquillian/servers/auth-server -Pauth-server-wildfly
mvn clean install -nsu -B -e -f testsuite/integration-arquillian/servers/auth-server -Pauth-server-undertow
2020-05-14 13:49:00 +00:00
2020-11-05 14:35:47 +00:00
- name : Store Keycloak artifacts
id : store-keycloak
uses : actions/upload-artifact@v2
with :
name : keycloak-artifacts.zip
retention-days : 2
path : |
~/.m2/repository/org/keycloak
!~/.m2/repository/org/keycloak/**/*.tar.gz
2020-11-10 09:40:06 +00:00
- name : Remove keycloak artifacts before caching
if : steps.cache.outputs.cache-hit != 'true'
run : rm -rf ~/.m2/repository/org/keycloak
2020-11-13 14:15:01 +00:00
# Tests: Regular distribution
2020-11-05 14:35:47 +00:00
2020-11-04 06:57:19 +00:00
unit-tests :
name : Unit Tests
runs-on : ubuntu-latest
2020-11-05 09:23:15 +00:00
needs : build
2020-11-04 06:57:19 +00:00
steps :
- uses : actions/checkout@v2
- uses : actions/setup-java@v1
with :
java-version : 1.8
2021-05-06 10:31:51 +00:00
- uses : whelk-io/maven-settings-xml-action@v15
with :
mirrors : ${{ env.MVN_MIRRORS }}
2020-11-04 06:57:19 +00:00
- name : Cache Maven packages
uses : actions/cache@v2
with :
path : ~/.m2/repository
2020-11-10 09:40:06 +00:00
key : cache-1-${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys : cache-1-${{ runner.os }}-m2
- name : Cleanup org.keycloak artifacts
run : rm -rf ~/.m2/repository/org/keycloak >/dev/null || true
2020-11-05 14:35:47 +00:00
- name : Download built keycloak
id : download-keycloak
uses : actions/download-artifact@v2
with :
2020-11-10 09:40:06 +00:00
path : ~/.m2/repository/org/keycloak/
2020-11-05 14:35:47 +00:00
name : keycloak-artifacts.zip
2020-11-04 06:57:19 +00:00
- name : Run unit tests
2020-11-05 14:35:47 +00:00
run : |
2020-11-13 14:15:01 +00:00
if ! mvn install -nsu -B -DskipTestsuite -DskipExamples -f pom.xml; then
find . -path '*/target/surefire-reports/*.xml' | zip -q reports-unit-tests.zip -@
exit 1
fi
2020-11-05 14:35:47 +00:00
- name : Unit test reports
uses : actions/upload-artifact@v2
if : failure()
with :
2020-11-13 07:46:30 +00:00
name : reports-unit-tests
2020-11-05 14:35:47 +00:00
retention-days : 14
path : reports-unit-tests.zip
2020-11-10 09:40:06 +00:00
if-no-files-found : ignore
2020-11-04 06:57:19 +00:00
2020-11-30 07:53:31 +00:00
model-tests :
name : Model Tests
runs-on : ubuntu-latest
needs : build
steps :
- uses : actions/checkout@v2
- uses : actions/setup-java@v1
with :
java-version : 1.8
2021-05-06 10:31:51 +00:00
- uses : whelk-io/maven-settings-xml-action@v15
with :
mirrors : ${{ env.MVN_MIRRORS }}
2020-11-30 07:53:31 +00:00
- name : Cache Maven packages
uses : actions/cache@v2
with :
path : ~/.m2/repository
key : cache-1-${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys : cache-1-${{ runner.os }}-m2
- name : Cleanup org.keycloak artifacts
run : rm -rf ~/.m2/repository/org/keycloak >/dev/null || true
- name : Download built keycloak
id : download-keycloak
uses : actions/download-artifact@v2
with :
path : ~/.m2/repository/org/keycloak/
name : keycloak-artifacts.zip
- name : Run model tests
run : |
if ! testsuite/model/test-all-profiles.sh; then
find . -path '*/target/surefire-reports*/*.xml' | zip -q reports-model-tests.zip -@
exit 1
fi
- name : Model test reports
uses : actions/upload-artifact@v2
if : failure()
with :
name : reports-model-tests
retention-days : 14
path : reports-model-tests.zip
if-no-files-found : ignore
2020-05-14 13:49:00 +00:00
test :
2020-11-13 14:15:01 +00:00
name : Base testsuite
2020-05-14 13:49:00 +00:00
needs : build
runs-on : ubuntu-latest
2020-11-13 14:15:01 +00:00
strategy :
matrix :
server : [ 'quarkus' , 'undertow-map' , 'wildfly' ]
tests : [ 'group1' , 'group2' , 'group3' ]
fail-fast : false
2020-05-14 13:49:00 +00:00
steps :
- uses : actions/checkout@v2
2020-11-05 09:23:15 +00:00
- name : Cache Maven packages
uses : actions/cache@v2
with :
2020-11-10 09:40:06 +00:00
path : ~/.m2/repository
key : cache-1-${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys : cache-1-${{ runner.os }}-m2
2020-11-05 14:35:47 +00:00
- name : Download built keycloak
id : download-keycloak
uses : actions/download-artifact@v2
with :
2020-11-10 09:40:06 +00:00
path : ~/.m2/repository/org/keycloak/
2020-11-05 14:35:47 +00:00
name : keycloak-artifacts.zip
2020-11-05 09:23:15 +00:00
2020-11-10 09:40:06 +00:00
# - name: List M2 repo
# run: |
# find ~ -name *dist*.zip
# ls -lR ~/.m2/repository
2020-05-14 13:49:00 +00:00
- uses : actions/setup-java@v1
with :
java-version : 1.8
2021-05-06 10:31:51 +00:00
- uses : whelk-io/maven-settings-xml-action@v15
with :
mirrors : ${{ env.MVN_MIRRORS }}
2020-11-05 09:23:15 +00:00
2020-05-14 13:49:00 +00:00
- name : Run base tests
2020-11-05 09:23:15 +00:00
run : |
2020-11-13 14:15:01 +00:00
declare -A PARAMS TESTGROUP
PARAMS["quarkus"]="-Pauth-server-quarkus"
2021-05-04 07:24:46 +00:00
PARAMS["undertow-map"]="-Pauth-server-undertow -Pmap-storage -Dpageload.timeout=90000"
2020-11-13 14:15:01 +00:00
PARAMS["wildfly"]="-Pauth-server-wildfly"
TESTGROUP["group1"]="-Dtest=!**.crossdc.**,!**.cluster.**,%regex[org.keycloak.testsuite.(a[abc]|ad[a-l]|[^a-q]).*]" # Tests alphabetically before admin tests and those after "r"
TESTGROUP["group2"]="-Dtest=!**.crossdc.**,!**.cluster.**,%regex[org.keycloak.testsuite.(ad[^a-l]|a[^a-d]|b).*]" # Admin tests and those starting with "b"
TESTGROUP["group3"]="-Dtest=!**.crossdc.**,!**.cluster.**,%regex[org.keycloak.testsuite.([c-q]).*]" # All the rest
mvn clean install -nsu -B ${PARAMS["${{ matrix.server }}"]} ${TESTGROUP["${{ matrix.tests }}"]} -f testsuite/integration-arquillian/tests/base/pom.xml | misc/log/trimmer.sh
2020-11-05 14:35:47 +00:00
TEST_RESULT=${PIPESTATUS[0]}
2020-11-13 14:15:01 +00:00
find . -path '*/target/surefire-reports/*.xml' | zip -q reports-${{ matrix.server }}-base-tests-${{ matrix.tests }}.zip -@
2020-11-05 14:35:47 +00:00
exit $TEST_RESULT
- name : Base test reports
uses : actions/upload-artifact@v2
if : failure()
with :
2020-11-13 14:15:01 +00:00
name : reports-${{ matrix.server }}-base-tests-${{ matrix.tests }}
2020-11-05 14:35:47 +00:00
retention-days : 14
2020-11-13 14:15:01 +00:00
path : reports-${{ matrix.server }}-base-tests-${{ matrix.tests }}.zip
2020-11-10 09:40:06 +00:00
if-no-files-found : ignore
2020-11-04 06:57:19 +00:00
2020-11-05 13:36:38 +00:00
test-cluster :
name : Test Clustering
needs : build
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v2
2021-03-30 11:02:31 +00:00
with :
fetch-depth : 2
2020-11-05 13:36:38 +00:00
2020-11-05 14:35:47 +00:00
- name : Check whether this phase should run
2021-03-04 10:57:35 +00:00
run : echo "GIT_DIFF=$[ $( git diff --name-only HEAD^ | egrep -ic 'crossdc|infinispan' ) + $( git diff HEAD^ pom.xml | egrep -ic '\+\s+<wildfly.version>' ) ]" >> $GITHUB_ENV
2020-11-05 14:35:47 +00:00
2020-11-05 13:36:38 +00:00
- name : Cache Maven packages
2020-11-05 14:35:47 +00:00
if : ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }}
2020-11-05 13:36:38 +00:00
uses : actions/cache@v2
with :
2020-11-10 09:40:06 +00:00
path : ~/.m2/repository
key : cache-1-${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys : cache-1-${{ runner.os }}-m2
- name : Cleanup org.keycloak artifacts
if : ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }}
run : rm -rf ~/.m2/repository/org/keycloak >/dev/null || true
2020-11-05 14:35:47 +00:00
- name : Download built keycloak
if : ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }}
id : download-keycloak
uses : actions/download-artifact@v2
with :
2020-11-10 09:40:06 +00:00
path : ~/.m2/repository/org/keycloak/
2020-11-05 14:35:47 +00:00
name : keycloak-artifacts.zip
2020-11-05 13:36:38 +00:00
- uses : actions/setup-java@v1
2020-11-05 14:35:47 +00:00
if : ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }}
2020-11-05 13:36:38 +00:00
with :
java-version : 1.8
2021-05-06 10:31:51 +00:00
- uses : whelk-io/maven-settings-xml-action@v15
if : ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }}
with :
mirrors : ${{ env.MVN_MIRRORS }}
2020-11-05 13:36:38 +00:00
- name : Run cluster tests
2020-11-05 14:35:47 +00:00
if : ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }}
2020-11-05 13:36:38 +00:00
run : |
2020-11-05 14:35:47 +00:00
mvn clean install -nsu -B -Pauth-server-wildfly,auth-server-cluster,db-mysql,jpa -Dsession.cache.owners=2 -Dbackends.console.output=true -Dauth.server.log.check=false -Dfrontend.console.output=true -Dtest=org.keycloak.testsuite.cluster.**.*Test -f testsuite/integration-arquillian/pom.xml | misc/log/trimmer.sh
TEST_RESULT=${PIPESTATUS[0]}
2020-11-13 07:46:30 +00:00
find . -path '*/target/surefire-reports/*.xml' | zip -q reports-cluster-tests.zip -@
2020-11-05 14:35:47 +00:00
exit $TEST_RESULT
- name : Cluster test reports
if : failure()
uses : actions/upload-artifact@v2
with :
2020-11-13 07:46:30 +00:00
name : reports-cluster-tests
2020-11-05 14:35:47 +00:00
retention-days : 14
path : reports-cluster-tests.zip
2020-11-10 09:40:06 +00:00
if-no-files-found : ignore
2020-11-05 13:36:38 +00:00
2020-11-04 16:32:25 +00:00
test-crossdc :
2020-11-05 14:35:47 +00:00
name : Cross-DC Tests
2020-11-04 16:32:25 +00:00
needs : build
runs-on : ubuntu-latest
env :
MAVEN_OPTS : -Xmx1024m
steps :
- uses : actions/checkout@v2
with :
fetch-depth : 2
2020-11-05 09:23:15 +00:00
- name : Check whether this phase should run
2021-03-04 10:57:35 +00:00
run : echo "GIT_DIFF=$[ $( git diff --name-only HEAD^ | egrep -ic 'crossdc|infinispan' ) + $( git diff HEAD^ pom.xml | egrep -ic '\+\s+<wildfly.version>' ) ]" >> $GITHUB_ENV
2020-11-05 09:23:15 +00:00
2020-11-04 16:32:25 +00:00
- uses : actions/setup-java@v1
2020-11-05 09:23:15 +00:00
if : ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }}
2020-11-04 16:32:25 +00:00
with :
java-version : 1.8
2021-05-06 10:31:51 +00:00
- uses : whelk-io/maven-settings-xml-action@v15
if : ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }}
with :
mirrors : ${{ env.MVN_MIRRORS }}
2020-11-05 09:23:15 +00:00
- name : Cache Maven packages
if : ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }}
uses : actions/cache@v2
2020-11-04 16:32:25 +00:00
with :
2020-11-10 09:40:06 +00:00
path : ~/.m2/repository
key : cache-1-${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys : cache-1-${{ runner.os }}-m2
- name : Cleanup org.keycloak artifacts
if : ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }}
run : rm -rf ~/.m2/repository/org/keycloak >/dev/null || true
2020-11-05 14:35:47 +00:00
- name : Download built keycloak
if : ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }}
id : download-keycloak
uses : actions/download-artifact@v2
with :
2020-11-10 09:40:06 +00:00
path : ~/.m2/repository/org/keycloak/
2020-11-05 14:35:47 +00:00
name : keycloak-artifacts.zip
2020-11-05 09:23:15 +00:00
- name : Run tests
2020-11-04 16:32:25 +00:00
if : ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }}
2020-11-05 09:23:15 +00:00
shell : bash
run : |
2020-11-10 09:40:06 +00:00
echo '::group::Compiling testsuite'
2020-11-05 14:35:47 +00:00
mvn clean install -B -nsu -Pauth-servers-crossdc-jboss,auth-server-wildfly,cache-server-infinispan,app-server-wildfly -DskipTests
2020-11-10 09:40:06 +00:00
echo '::endgroup::'
2020-11-05 14:35:47 +00:00
mvn clean install -B -nsu -f testsuite/integration-arquillian/tests/base/pom.xml -Pcache-server-infinispan,auth-servers-crossdc-jboss,auth-server-wildfly "-Dtest=org.keycloak.testsuite.crossdc.**.*,org.keycloak.testsuite.adapter.**.crossdc.**.*" | misc/log/trimmer.sh
TEST_RESULT=${PIPESTATUS[0]}
2020-11-13 07:46:30 +00:00
find . -path '*/target/surefire-reports/*.xml' | zip -q reports-cross-dc-tests.zip -@
2020-11-05 14:35:47 +00:00
exit $TEST_RESULT
- name : Cross-DC test reports
if : failure()
uses : actions/upload-artifact@v2
with :
2020-11-13 07:46:30 +00:00
name : reports-cross-dc-tests
2020-11-05 14:35:47 +00:00
retention-days : 14
path : reports-cross-dc-tests.zip
2020-11-10 09:40:06 +00:00
if-no-files-found : ignore
2020-11-04 16:32:25 +00:00
2020-11-05 14:35:47 +00:00
### Tests: Quarkus distribution
quarkus-test-cluster :
name : Quarkus Test Clustering
needs : build
runs-on : ubuntu-latest
env :
2021-04-15 10:53:48 +00:00
MAVEN_OPTS : -Xmx1024m
2020-11-05 14:35:47 +00:00
steps :
- uses : actions/checkout@v2
- name : Cache Maven packages
uses : actions/cache@v2
with :
2020-11-10 09:40:06 +00:00
path : ~/.m2/repository
key : cache-1-${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys : cache-1-${{ runner.os }}-m2
- name : Cleanup org.keycloak artifacts
run : rm -rf ~/.m2/repository/org/keycloak >/dev/null || true
2020-11-05 14:35:47 +00:00
- name : Download built keycloak
id : download-keycloak
uses : actions/download-artifact@v2
with :
2020-11-10 09:40:06 +00:00
path : ~/.m2/repository/org/keycloak/
2020-11-05 14:35:47 +00:00
name : keycloak-artifacts.zip
- uses : actions/setup-java@v1
with :
java-version : 1.8
2021-05-06 10:31:51 +00:00
- uses : whelk-io/maven-settings-xml-action@v15
with :
mirrors : ${{ env.MVN_MIRRORS }}
2020-11-10 09:40:06 +00:00
- name : Run Quarkus cluster tests
2020-11-05 14:35:47 +00:00
run : |
2020-11-10 09:40:06 +00:00
echo '::group::Compiling testsuite'
2020-11-12 13:42:51 +00:00
mvn clean install -nsu -B -Pauth-server-quarkus -DskipTests -f testsuite/pom.xml
2020-11-10 09:40:06 +00:00
echo '::endgroup::'
2020-11-05 14:35:47 +00:00
mvn clean install -nsu -B -Pauth-server-cluster-quarkus -Dsession.cache.owners=2 -Dtest=**.cluster.** -f testsuite/integration-arquillian/pom.xml | misc/log/trimmer.sh
TEST_RESULT=${PIPESTATUS[0]}
2020-11-13 07:46:30 +00:00
find . -path '*/target/surefire-reports/*.xml' | zip -q reports-quarkus-cluster-tests.zip -@
2020-11-05 14:35:47 +00:00
exit $TEST_RESULT
2020-11-10 09:40:06 +00:00
- name : Quarkus cluster test reports
2020-11-05 14:35:47 +00:00
uses : actions/upload-artifact@v2
if : failure()
with :
2020-11-13 07:46:30 +00:00
name : reports-quarkus-cluster-tests
2020-11-05 14:35:47 +00:00
retention-days : 14
2020-11-10 09:40:06 +00:00
path : reports-quarkus-cluster-tests.zip
if-no-files-found : ignore
2021-04-13 15:28:34 +00:00
quickstarts-tests :
name : Quickstarts Tests
needs : build
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v2
with :
repository : keycloak/keycloak-quickstarts
ref : master # default is "latest"
- uses : actions/checkout@v2
with :
path : keycloak
- uses : actions/setup-java@v1
with :
java-version : 1.8
2021-05-06 10:31:51 +00:00
- uses : whelk-io/maven-settings-xml-action@v15
with :
mirrors : ${{ env.MVN_MIRRORS }}
2021-04-13 15:28:34 +00:00
- name : Cache Maven packages
uses : actions/cache@v2
with :
path : ~/.m2/repository
key : cache-1-${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys : cache-1-${{ runner.os }}-m2
- name : Cleanup org.keycloak artifacts
run : rm -rf ~/.m2/repository/org/keycloak >/dev/null || true
- name : Download built keycloak
id : download-keycloak
uses : actions/download-artifact@v2
with :
path : ~/.m2/repository/org/keycloak/
name : keycloak-artifacts.zip
- name : Prepare Keycloak
run : keycloak/.github/scripts/quickstarts/prepare-server.sh
- name : Build Quickstarts
run : .github/scripts/build-quickstarts.sh
- name : Start Keycloak
run : .github/scripts/start-local-server.sh
- name : Run tests
run : .github/scripts/run-tests.sh
- name : Archive logs
if : ${{ always() }}
uses : actions/upload-artifact@v2
with :
name : quickstarts-test-logs
retention-days : 2
path : |
test-logs
keycloak.log