User Postgresq #2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Keycloak CI | |
on: [push, pull_request] | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-java@v1 | |
with: | |
java-version: 1.8 | |
- name: Update maven settings | |
run: mkdir -p ~/.m2 ; cp .github/settings.xml ~/.m2/ | |
- name: Cache Maven packages | |
id: cache | |
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: Build Keycloak | |
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 | |
- 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 | |
- name: Remove keycloak artifacts before caching | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: rm -rf ~/.m2/repository/org/keycloak | |
# Tests: Regular distribution | |
unit-tests: | |
name: Unit Tests | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-java@v1 | |
with: | |
java-version: 1.8 | |
- name: Update maven settings | |
run: mkdir -p ~/.m2 ; cp .github/settings.xml ~/.m2/ | |
- 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 unit tests | |
run: | | |
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 | |
- name: Unit test reports | |
uses: actions/upload-artifact@v2 | |
if: failure() | |
with: | |
name: reports-unit-tests | |
retention-days: 14 | |
path: reports-unit-tests.zip | |
if-no-files-found: ignore | |
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 | |
- name: Update maven settings | |
run: mkdir -p ~/.m2 ; cp .github/settings.xml ~/.m2/ | |
- 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 | |
test: | |
name: Base testsuite | |
needs: build | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
server: ['quarkus', 'undertow-map', 'wildfly'] | |
tests: ['group1','group2','group3'] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v2 | |
- 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: Download built keycloak | |
id: download-keycloak | |
uses: actions/download-artifact@v2 | |
with: | |
path: ~/.m2/repository/org/keycloak/ | |
name: keycloak-artifacts.zip | |
# - name: List M2 repo | |
# run: | | |
# find ~ -name *dist*.zip | |
# ls -lR ~/.m2/repository | |
- uses: actions/setup-java@v1 | |
with: | |
java-version: 1.8 | |
- name: Update maven settings | |
run: mkdir -p ~/.m2 ; cp .github/settings.xml ~/.m2/ | |
- name: Run base tests | |
run: | | |
declare -A PARAMS TESTGROUP | |
PARAMS["quarkus"]="-Pauth-server-quarkus" | |
PARAMS["undertow-map"]="-Pauth-server-undertow -Pmap-storage -Dpageload.timeout=90000" | |
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 | |
TEST_RESULT=${PIPESTATUS[0]} | |
find . -path '*/target/surefire-reports/*.xml' | zip -q reports-${{ matrix.server }}-base-tests-${{ matrix.tests }}.zip -@ | |
exit $TEST_RESULT | |
- name: Base test reports | |
uses: actions/upload-artifact@v2 | |
if: failure() | |
with: | |
name: reports-${{ matrix.server }}-base-tests-${{ matrix.tests }} | |
retention-days: 14 | |
path: reports-${{ matrix.server }}-base-tests-${{ matrix.tests }}.zip | |
if-no-files-found: ignore | |
test-cluster: | |
name: Test Clustering | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 2 | |
- name: Check whether this phase should run | |
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 | |
- name: Cache Maven packages | |
if: ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }} | |
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 | |
if: ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }} | |
run: rm -rf ~/.m2/repository/org/keycloak >/dev/null || true | |
- name: Download built keycloak | |
if: ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }} | |
id: download-keycloak | |
uses: actions/download-artifact@v2 | |
with: | |
path: ~/.m2/repository/org/keycloak/ | |
name: keycloak-artifacts.zip | |
- uses: actions/setup-java@v1 | |
if: ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }} | |
with: | |
java-version: 1.8 | |
- name: Update maven settings | |
if: ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }} | |
run: mkdir -p ~/.m2 ; cp .github/settings.xml ~/.m2/ | |
- name: Run cluster tests | |
if: ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }} | |
run: | | |
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]} | |
find . -path '*/target/surefire-reports/*.xml' | zip -q reports-cluster-tests.zip -@ | |
exit $TEST_RESULT | |
- name: Cluster test reports | |
if: failure() | |
uses: actions/upload-artifact@v2 | |
with: | |
name: reports-cluster-tests | |
retention-days: 14 | |
path: reports-cluster-tests.zip | |
if-no-files-found: ignore | |
test-crossdc: | |
name: Cross-DC Tests | |
needs: build | |
runs-on: ubuntu-latest | |
env: | |
MAVEN_OPTS: -Xmx1024m | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 2 | |
- name: Check whether this phase should run | |
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 | |
- uses: actions/setup-java@v1 | |
if: ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }} | |
with: | |
java-version: 1.8 | |
- name: Update maven settings | |
if: ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }} | |
run: mkdir -p ~/.m2 ; cp .github/settings.xml ~/.m2/ | |
- name: Cache Maven packages | |
if: ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }} | |
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 | |
if: ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }} | |
run: rm -rf ~/.m2/repository/org/keycloak >/dev/null || true | |
- name: Download built keycloak | |
if: ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }} | |
id: download-keycloak | |
uses: actions/download-artifact@v2 | |
with: | |
path: ~/.m2/repository/org/keycloak/ | |
name: keycloak-artifacts.zip | |
- name: Run tests | |
if: ${{ github.event_name != 'pull_request' || env.GIT_DIFF != 0 }} | |
shell: bash | |
run: | | |
echo '::group::Compiling testsuite' | |
mvn clean install -B -nsu -Pauth-servers-crossdc-jboss,auth-server-wildfly,cache-server-infinispan,app-server-wildfly -DskipTests | |
echo '::endgroup::' | |
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]} | |
find . -path '*/target/surefire-reports/*.xml' | zip -q reports-cross-dc-tests.zip -@ | |
exit $TEST_RESULT | |
- name: Cross-DC test reports | |
if: failure() | |
uses: actions/upload-artifact@v2 | |
with: | |
name: reports-cross-dc-tests | |
retention-days: 14 | |
path: reports-cross-dc-tests.zip | |
if-no-files-found: ignore | |
### Tests: Quarkus distribution | |
quarkus-test-cluster: | |
name: Quarkus Test Clustering | |
needs: build | |
runs-on: ubuntu-latest | |
env: | |
MAVEN_OPTS: -Xmx1024m | |
steps: | |
- uses: actions/checkout@v2 | |
- 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 | |
- uses: actions/setup-java@v1 | |
with: | |
java-version: 1.8 | |
- name: Update maven settings | |
run: mkdir -p ~/.m2 ; cp .github/settings.xml ~/.m2/ | |
- name: Run Quarkus cluster tests | |
run: | | |
echo '::group::Compiling testsuite' | |
mvn clean install -nsu -B -Pauth-server-quarkus -DskipTests -f testsuite/pom.xml | |
echo '::endgroup::' | |
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]} | |
find . -path '*/target/surefire-reports/*.xml' | zip -q reports-quarkus-cluster-tests.zip -@ | |
exit $TEST_RESULT | |
- name: Quarkus cluster test reports | |
uses: actions/upload-artifact@v2 | |
if: failure() | |
with: | |
name: reports-quarkus-cluster-tests | |
retention-days: 14 | |
path: reports-quarkus-cluster-tests.zip | |
if-no-files-found: ignore | |
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 | |
- name: Update maven settings | |
run: mkdir -p ~/.m2 ; cp .github/settings.xml ~/.m2/ | |
- 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: scripts/build-quickstarts.sh | |
- name: Start Keycloak | |
run: scripts/start-local-server.sh | |
- name: Run tests | |
run: 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 |