diff --git a/distribution/downloads/src/main/resources/files b/distribution/downloads/src/main/resources/files
index c92f32036a81..0bc69947ed1a 100644
--- a/distribution/downloads/src/main/resources/files
+++ b/distribution/downloads/src/main/resources/files
@@ -1,6 +1,6 @@
./
- keycloak-server-dist:keycloak
- keycloak-server-x-dist:keycloak.x-preview
+ keycloak-server-dist:keycloak-legacy
+ keycloak-quarkus-dist:keycloak
keycloak-api-docs-dist:keycloak-api-docs
keycloak-jetty92-adapter-dist:keycloak-oidc-jetty92-adapter
diff --git a/distribution/pom.xml b/distribution/pom.xml
index 4a1c707d9a46..8f1b4f5ee690 100755
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -77,18 +77,6 @@
server-legacy-dist
-
- quarkus
-
- [11,)
-
- !product
-
-
-
- server-x-dist
-
-
distribution-downloads
diff --git a/distribution/server-dist/pom.xml b/distribution/server-dist/pom.xml
index f68f949ff9c9..2136aa1cc0d3 100644
--- a/distribution/server-dist/pom.xml
+++ b/distribution/server-dist/pom.xml
@@ -35,7 +35,7 @@
keycloak-server-dist
- Keycloak Server Galleon Based Distribution
+ Keycloak Server Legacy WildFly Distribution
pom
@@ -301,7 +301,7 @@
- keycloak-${project.version}
+ keycloak-legacy-${project.version}
diff --git a/pom.xml b/pom.xml
index 2ef406b79a5f..84d2c85f95f3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1468,7 +1468,7 @@
org.keycloak
- keycloak-server-x-dist
+ keycloak-quarkus-dist
${project.version}
zip
diff --git a/quarkus/container/.gitignore b/quarkus/container/.gitignore
new file mode 100644
index 000000000000..335ec9573de5
--- /dev/null
+++ b/quarkus/container/.gitignore
@@ -0,0 +1 @@
+*.tar.gz
diff --git a/quarkus/container/Dockerfile b/quarkus/container/Dockerfile
new file mode 100644
index 000000000000..433cb06da393
--- /dev/null
+++ b/quarkus/container/Dockerfile
@@ -0,0 +1,34 @@
+FROM registry.access.redhat.com/ubi8-minimal AS build-env
+
+ENV KEYCLOAK_VERSION 17.0.0-SNAPSHOT
+ARG KEYCLOAK_DIST=https://github.com/keycloak/keycloak/releases/download/$KEYCLOAK_VERSION/keycloak-$KEYCLOAK_VERSION.tar.gz
+
+RUN microdnf install -y tar gzip
+
+ADD $KEYCLOAK_DIST /tmp/keycloak/
+
+# The next step makes it uniform for local development and upstream built.
+# If it is a local tar archive then it is unpacked, if from remote is just downloaded.
+RUN (cd /tmp/keycloak && \
+ tar -xvf /tmp/keycloak/keycloak-*.tar.gz && \
+ rm /tmp/keycloak/keycloak-*.tar.gz) || true
+
+RUN mv /tmp/keycloak/keycloak-* /opt/keycloak
+
+FROM registry.access.redhat.com/ubi8-minimal
+
+COPY --from=build-env /opt/keycloak /opt/keycloak
+
+RUN microdnf update -y && \
+ microdnf install -y java-11-openjdk-headless && microdnf clean all && rm -rf /var/cache/yum/* && \
+ echo "keycloak:x:0:root" >> /etc/group && \
+ echo "keycloak:x:1000:0:keycloak user:/opt/keycloak:/sbin/nologin" >> /etc/passwd && \
+ chown -R keycloak:root /opt/keycloak && \
+ chmod -R g+rwX /opt/keycloak
+
+USER 1000
+
+EXPOSE 8080
+EXPOSE 8443
+
+ENTRYPOINT [ "/opt/keycloak/bin/kc.sh" ]
diff --git a/distribution/server-x-dist/assembly.xml b/quarkus/dist/assembly.xml
similarity index 100%
rename from distribution/server-x-dist/assembly.xml
rename to quarkus/dist/assembly.xml
diff --git a/distribution/server-x-dist/pom.xml b/quarkus/dist/pom.xml
similarity index 95%
rename from distribution/server-x-dist/pom.xml
rename to quarkus/dist/pom.xml
index fa7ada3f610c..b022b83f2836 100755
--- a/distribution/server-x-dist/pom.xml
+++ b/quarkus/dist/pom.xml
@@ -19,14 +19,14 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
- keycloak-distribution-parent
+ keycloak-quarkus-parent
org.keycloak
17.0.0-SNAPSHOT
- keycloak-server-x-dist
+ keycloak-quarkus-dist
pom
- Keycloak.X Server Distribution
+ Keycloak Quarkus Server Distribution
@@ -49,7 +49,7 @@
- keycloak.x-${project.version}
+ keycloak-${project.version}
org.apache.maven.plugins
diff --git a/distribution/server-x-dist/src/main/README.md b/quarkus/dist/src/main/README.md
similarity index 100%
rename from distribution/server-x-dist/src/main/README.md
rename to quarkus/dist/src/main/README.md
diff --git a/distribution/server-x-dist/src/main/content/bin/kc.bat b/quarkus/dist/src/main/content/bin/kc.bat
similarity index 100%
rename from distribution/server-x-dist/src/main/content/bin/kc.bat
rename to quarkus/dist/src/main/content/bin/kc.bat
diff --git a/distribution/server-x-dist/src/main/content/bin/kc.sh b/quarkus/dist/src/main/content/bin/kc.sh
similarity index 100%
rename from distribution/server-x-dist/src/main/content/bin/kc.sh
rename to quarkus/dist/src/main/content/bin/kc.sh
diff --git a/distribution/server-x-dist/src/main/content/conf/README.md b/quarkus/dist/src/main/content/conf/README.md
similarity index 100%
rename from distribution/server-x-dist/src/main/content/conf/README.md
rename to quarkus/dist/src/main/content/conf/README.md
diff --git a/distribution/server-x-dist/src/main/content/conf/keycloak.conf b/quarkus/dist/src/main/content/conf/keycloak.conf
similarity index 100%
rename from distribution/server-x-dist/src/main/content/conf/keycloak.conf
rename to quarkus/dist/src/main/content/conf/keycloak.conf
diff --git a/distribution/server-x-dist/src/main/content/providers/README.md b/quarkus/dist/src/main/content/providers/README.md
similarity index 100%
rename from distribution/server-x-dist/src/main/content/providers/README.md
rename to quarkus/dist/src/main/content/providers/README.md
diff --git a/distribution/server-x-dist/src/main/content/themes/README.md b/quarkus/dist/src/main/content/themes/README.md
similarity index 100%
rename from distribution/server-x-dist/src/main/content/themes/README.md
rename to quarkus/dist/src/main/content/themes/README.md
diff --git a/distribution/server-x-dist/src/main/version.txt b/quarkus/dist/src/main/version.txt
similarity index 100%
rename from distribution/server-x-dist/src/main/version.txt
rename to quarkus/dist/src/main/version.txt
diff --git a/quarkus/pom.xml b/quarkus/pom.xml
index 36bbadcd8668..2c1b52c1d496 100644
--- a/quarkus/pom.xml
+++ b/quarkus/pom.xml
@@ -154,6 +154,7 @@
runtime
deployment
server
+ dist
tests
diff --git a/quarkus/tests/integration/pom.xml b/quarkus/tests/integration/pom.xml
index 328fa0d517f2..d5a24c1f1a9e 100644
--- a/quarkus/tests/integration/pom.xml
+++ b/quarkus/tests/integration/pom.xml
@@ -57,6 +57,11 @@
+
+ org.keycloak
+ keycloak-quarkus-dist
+ zip
+
io.quarkus
quarkus-junit5
diff --git a/quarkus/tests/integration/src/main/java/org/keycloak/it/utils/DockerKeycloakDistribution.java b/quarkus/tests/integration/src/main/java/org/keycloak/it/utils/DockerKeycloakDistribution.java
index b44161095abb..03927223ece4 100644
--- a/quarkus/tests/integration/src/main/java/org/keycloak/it/utils/DockerKeycloakDistribution.java
+++ b/quarkus/tests/integration/src/main/java/org/keycloak/it/utils/DockerKeycloakDistribution.java
@@ -1,6 +1,5 @@
package org.keycloak.it.utils;
-import org.apache.commons.io.FileUtils;
import org.jboss.logging.Logger;
import org.keycloak.common.Version;
import org.testcontainers.containers.GenericContainer;
@@ -11,8 +10,6 @@
import org.testcontainers.utility.ResourceReaper;
import java.io.File;
-import java.io.IOException;
-import java.net.URL;
import java.time.Duration;
import java.util.List;
import java.util.concurrent.Executor;
@@ -30,9 +27,8 @@ public final class DockerKeycloakDistribution implements KeycloakDistribution {
private String stderr = "";
private ToStringConsumer backupConsumer = new ToStringConsumer();
- private File distributionFile = new File("../../../distribution/server-x-dist/target/keycloak.x-" + Version.VERSION_KEYCLOAK + ".tar.gz");
- private File cachedDockerfile = createDockerCacheFile();
- private boolean dockerfileFetched = false;
+ private File distributionFile = new File("../../dist/target/keycloak-" + Version.VERSION_KEYCLOAK + ".tar.gz");
+ private File dockerFile = new File("../../container/Dockerfile");
private GenericContainer> keycloakContainer = null;
private String containerId = null;
@@ -44,37 +40,15 @@ public DockerKeycloakDistribution(boolean debug, boolean manualStop, boolean reC
this.manualStop = manualStop;
}
- private File createDockerCacheFile() {
- try {
- File tmp = File.createTempFile("Dockerfile", "keycloak.x");
- tmp.deleteOnExit();
- return tmp;
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- private void fetchDockerfile() {
- if (!dockerfileFetched) {
- try {
- FileUtils.copyURLToFile(new URL("https://raw.githubusercontent.com/keycloak/keycloak-containers/main/server-x/Dockerfile"), cachedDockerfile);
- dockerfileFetched = true;
- } catch (Exception cause) {
- throw new RuntimeException("Cannot download upstream Dockerfile", cause);
- }
- }
- }
-
private GenericContainer getKeycloakContainer() {
if (!distributionFile.exists()) {
throw new RuntimeException("Distribution archive " + distributionFile.getAbsolutePath() +" doesn't exists");
}
- fetchDockerfile();
return new GenericContainer(
- new ImageFromDockerfile("keycloak.x-under-test", false)
- .withFileFromFile("keycloakx.tar.gz", distributionFile)
- .withFileFromFile("Dockerfile", cachedDockerfile)
- .withBuildArg("KEYCLOAK_DIST", "keycloakx.tar.gz")
+ new ImageFromDockerfile("keycloak-under-test", false)
+ .withFileFromFile("keycloak.tar.gz", distributionFile)
+ .withFileFromFile("Dockerfile", dockerFile)
+ .withBuildArg("KEYCLOAK_DIST", "keycloak.tar.gz")
)
.withExposedPorts(8080)
.withStartupAttempts(1)
diff --git a/quarkus/tests/integration/src/main/java/org/keycloak/it/utils/RawKeycloakDistribution.java b/quarkus/tests/integration/src/main/java/org/keycloak/it/utils/RawKeycloakDistribution.java
index b0f496a8db36..c0a18a4e0058 100644
--- a/quarkus/tests/integration/src/main/java/org/keycloak/it/utils/RawKeycloakDistribution.java
+++ b/quarkus/tests/integration/src/main/java/org/keycloak/it/utils/RawKeycloakDistribution.java
@@ -251,7 +251,7 @@ private Path prepareDistribution() {
try {
Path distRootPath = Paths.get(System.getProperty("java.io.tmpdir")).resolve("kc-tests");
distRootPath.toFile().mkdirs();
- File distFile = new File("../../../distribution/server-x-dist/target/keycloak.x-" + Version.VERSION_KEYCLOAK + ".zip");
+ File distFile = new File("../../dist/target/keycloak-" + Version.VERSION_KEYCLOAK + ".zip");
if (!distFile.exists()) {
throw new RuntimeException("Distribution archive " + distFile.getAbsolutePath() +" doesn't exists");
}
diff --git a/set-version.sh b/set-version.sh
index 84bd01d401d0..4495f9530887 100755
--- a/set-version.sh
+++ b/set-version.sh
@@ -4,3 +4,5 @@ NEW_VERSION=$1
mvn versions:set -DnewVersion=$NEW_VERSION -DgenerateBackupPoms=false -DgroupId=org.keycloak* -DartifactId=*
mvn versions:use-dep-version -Dincludes=org.keycloak:keycloak-admin-ui -DdepVersion=$NEW_VERSION -DforceVersion=true -pl org.keycloak:keycloak-parent
+
+sed -i "s/ENV KEYCLOAK_VERSION .*/ENV KEYCLOAK_VERSION $NEW_VERSION/" quarkus/container/Dockerfile
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/servers/auth-server/quarkus/pom.xml b/testsuite/integration-arquillian/servers/auth-server/quarkus/pom.xml
index 4d402908535a..1978aa42fd1d 100644
--- a/testsuite/integration-arquillian/servers/auth-server/quarkus/pom.xml
+++ b/testsuite/integration-arquillian/servers/auth-server/quarkus/pom.xml
@@ -13,7 +13,7 @@
integration-arquillian-servers-auth-server-quarkus
- ${project.build.directory}/unpacked/keycloak.x-${project.version}
+ ${project.build.directory}/unpacked/keycloak-${project.version}
${basedir}/../jboss/common
2
2
@@ -26,7 +26,7 @@
org.keycloak
- keycloak-server-x-dist
+ keycloak-quarkus-dist
zip
@@ -177,7 +177,7 @@
org.keycloak
- keycloak-server-x-dist
+ keycloak-quarkus-dist
${project.version}
zip
${project.build.directory}/unpacked