Add Maven build for JavaScript admin client (#17306)

Co-authored-by: Stian Thorgersen <stian@redhat.com>
This commit is contained in:
Jon Koops 2023-02-28 12:16:43 +01:00 committed by GitHub
parent 2429d18d78
commit 9144207755
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 194 additions and 29 deletions

View file

@ -13,37 +13,72 @@ public class CopyDependencies {
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
String version = args[2]; String version = args[2];
Path repository = new File(args[0]).toPath().resolve("org").resolve("keycloak");
Path targetRoot = new File(args[1]).toPath().resolve(version); Path targetRoot = new File(args[1]).toPath().resolve(version);
Path projectDir = targetRoot.getParent().getParent().getParent().getParent();
Path mavenRepository = new File(args[0]).toPath().resolve("org").resolve("keycloak");
CopyDependencies dependencies = new CopyDependencies(version, projectDir, targetRoot, mavenRepository);
dependencies.copyFiles();
}
private final String version;
private final String npmVersion;
private final Path targetDir;
private final Path projectDir;
private final Path mavenRepository;
public CopyDependencies(String version, Path projectDir, Path targetDir, Path mavenRepository) {
this.version = version;
this.npmVersion = version.equals("999-SNAPSHOT") ? "999.0.0-dev" : version;
this.targetDir = targetDir;
this.projectDir = projectDir;
this.mavenRepository = mavenRepository;
}
public void copyFiles() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(CopyDependencies.class.getResourceAsStream("files"))); BufferedReader br = new BufferedReader(new InputStreamReader(CopyDependencies.class.getResourceAsStream("files")));
targetDir.toFile().mkdirs();
Path target = targetRoot;
for (String l = br.readLine(); l != null; l = br.readLine()) { for (String l = br.readLine(); l != null; l = br.readLine()) {
if (l.trim().length() > 0) {
l = replaceVariables(l);
if (l.startsWith("./")) {
target = targetRoot.resolve(l.replace("./", "").replace('/', File.separatorChar));
if (!target.toFile().isDirectory()) {
target.toFile().mkdirs();
}
} else if (l.trim().length() > 0) {
String[] t = l.trim().split(":"); String[] t = l.trim().split(":");
String artifactName = t[0]; String type = t[0];
String destName = t.length == 1 ? artifactName : t[1]; String artifactName = t[1];
String destinationName = t.length == 2 ? artifactName : t[2];
File artifactDir = repository.resolve(artifactName).resolve(version).toFile(); switch (type) {
case "mvn":
for (File f : artifactDir.listFiles((file, name) -> name.contains(".tar.gz") || name.contains(".zip"))) { copyMaven(artifactName, destinationName);
Files.copy(f.toPath(), target.resolve(f.getName().replace(artifactName, destName)), StandardCopyOption.REPLACE_EXISTING); break;
case "npm":
copyNpm(artifactName, destinationName);
break;
} }
System.out.println(artifactName);
} }
} }
br.close(); br.close();
} }
private void copyMaven(String artifactName, String destinationName) throws IOException {
File artifactDir = mavenRepository.resolve(artifactName).resolve(version).toFile();
File[] files = artifactDir.listFiles((file, name) -> name.contains(".tar.gz") || name.contains(".tgz") || name.contains(".zip"));
for (File f : files) {
Files.copy(f.toPath(), targetDir.resolve(f.getName().replace(artifactName, destinationName)), StandardCopyOption.REPLACE_EXISTING);
}
}
private void copyNpm(String artifactName, String destinationName) throws IOException {
Files.copy(projectDir.resolve(artifactName), targetDir.resolve(destinationName));
}
private String replaceVariables(String input) {
return input.replaceAll("\\$\\$NPM_VERSION\\$\\$", npmVersion);
}
} }

View file

@ -1,12 +1,14 @@
./ mvn:keycloak-quarkus-dist:keycloak
keycloak-quarkus-dist:keycloak mvn:keycloak-api-docs-dist:keycloak-api-docs
keycloak-api-docs-dist:keycloak-api-docs
keycloak-jetty94-adapter-dist:keycloak-oidc-jetty94-adapter mvn:keycloak-jetty94-adapter-dist:keycloak-oidc-jetty94-adapter
keycloak-js-adapter-npm-dist:keycloak-oidc-js-adapter mvn:keycloak-js-adapter-npm-dist:keycloak-oidc-js-adapter
keycloak-tomcat-adapter-dist:keycloak-oidc-tomcat-adapter mvn:keycloak-js-admin-client:keycloak-js-admin-client
keycloak-wildfly-adapter-dist:keycloak-oidc-wildfly-adapter mvn:keycloak-tomcat-adapter-dist:keycloak-oidc-tomcat-adapter
mvn:keycloak-wildfly-adapter-dist:keycloak-oidc-wildfly-adapter
keycloak-saml-jetty94-adapter-dist:keycloak-saml-jetty94-adapter mvn:keycloak-saml-jetty94-adapter-dist:keycloak-saml-jetty94-adapter
keycloak-saml-tomcat-adapter-dist:keycloak-saml-tomcat-adapter mvn:keycloak-saml-tomcat-adapter-dist:keycloak-saml-tomcat-adapter
keycloak-saml-wildfly-adapter-dist:keycloak-saml-wildfly-adapter mvn:keycloak-saml-wildfly-adapter-dist:keycloak-saml-wildfly-adapter
npm:js/libs/keycloak-admin-client/target/keycloak-keycloak-admin-client-$$NPM_VERSION$$.tgz:keycloak-admin-client-$$NPM_VERSION$$.tgz

4
js/.gitignore vendored
View file

@ -36,3 +36,7 @@ assets
dist dist
dist-ssr dist-ssr
*.local *.local
# Distribution
*.tgz
npm-dist

View file

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>keycloak-js-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>999-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<artifactId>keycloak-js-admin-client</artifactId>
<name>Keycloak JavaScript Admin Client</name>
<description>A JavaScript client to interact with Keycloak's Administration API.</description>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>create-target-dir</id>
<phase>prepare-package</phase>
<configuration>
<target>
<mkdir dir="./target"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<executions>
<execution>
<id>npm-prepublish</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>run prepublishOnly --workspace=@keycloak/keycloak-admin-client</arguments>
</configuration>
</execution>
<execution>
<id>npm-pack</id>
<phase>package</phase>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>pack --workspace=@keycloak/keycloak-admin-client --pack-destination=libs/keycloak-admin-client/target</arguments>
</configuration>
</execution>
</executions>
<configuration>
<workingDirectory>../..</workingDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>

49
js/pom.xml Normal file
View file

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>999-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>keycloak-js-parent</artifactId>
<packaging>pom</packaging>
<name>Keycloak JavaScript Parent</name>
<description>Parent of all JavaScript related code, sets up Node.js and NPM and installs dependencies for all projects in the workspace.</description>
<modules>
<module>libs/keycloak-admin-client</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>install-node-and-npm</goal>
</goals>
</execution>
<execution>
<id>npm-ci</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>ci --ignore-scripts</arguments>
</configuration>
</execution>
</executions>
<configuration>
<nodeVersion>${node.version}</nodeVersion>
</configuration>
</plugin>
</plugins>
</build>
</project>

View file

@ -187,7 +187,7 @@
<osgi.bundle.plugin.version>2.4.0</osgi.bundle.plugin.version> <osgi.bundle.plugin.version>2.4.0</osgi.bundle.plugin.version>
<wildfly.plugin.version>2.0.1.Final</wildfly.plugin.version> <wildfly.plugin.version>2.0.1.Final</wildfly.plugin.version>
<nexus.staging.plugin.version>1.6.5</nexus.staging.plugin.version> <nexus.staging.plugin.version>1.6.5</nexus.staging.plugin.version>
<frontend.plugin.version>1.12.0</frontend.plugin.version> <frontend.plugin.version>1.12.1</frontend.plugin.version>
<docker.maven.plugin.version>0.40.3</docker.maven.plugin.version> <docker.maven.plugin.version>0.40.3</docker.maven.plugin.version>
<verifier.plugin.version>1.1</verifier.plugin.version> <verifier.plugin.version>1.1</verifier.plugin.version>
<shade.plugin.version>3.4.1</shade.plugin.version> <shade.plugin.version>3.4.1</shade.plugin.version>
@ -227,7 +227,7 @@
<server.output.dir.version>${project.version}</server.output.dir.version> <server.output.dir.version>${project.version}</server.output.dir.version>
<!-- Frontend --> <!-- Frontend -->
<node.version>v16.16.0</node.version> <node.version>v18.14.2</node.version>
</properties> </properties>
<url>http://keycloak.org</url> <url>http://keycloak.org</url>