You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by xi...@apache.org on 2023/04/26 01:31:30 UTC
[tinkerpop] branch 3.6-dev updated: Replace spotify dockerfile-maven-plugin in server and console
This is an automated email from the ASF dual-hosted git repository.
xiazcy pushed a commit to branch 3.6-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/3.6-dev by this push:
new 9ed801fb45 Replace spotify dockerfile-maven-plugin in server and console
new c82e182648 Merge pull request #2043 from Bit-Quill/cole/updateDockerPlugin-3.6
9ed801fb45 is described below
commit 9ed801fb45389b91716a3fbb106a5935344dad94
Author: Cole Greer <co...@bitquilltech.com>
AuthorDate: Wed Mar 29 13:54:15 2023 -0700
Replace spotify dockerfile-maven-plugin in server and console
Replaces spotify plugin with io.fabric8 docker-maven-plugin. The new
plugin has the benefit of supporting multi-arch images through buildx
for deployments and it is an actively maintained plugin as opposed to
the spotify plugin.
---
CHANGELOG.asciidoc | 1 +
.../dev/developer/development-environment.asciidoc | 2 +-
docs/src/upgrade/release-3.5.x.asciidoc | 4 +
gremlin-console/pom.xml | 105 +++++++++------------
gremlin-server/pom.xml | 98 ++++++++-----------
pom.xml | 56 ++++++++++-
6 files changed, 142 insertions(+), 124 deletions(-)
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 7ac521c83a..dfe23a7f89 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -305,6 +305,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
* Improved `addE()` error messaging when traverser is not a `Vertex`.
* Added `SubmitWithOptions()` methods to `Client` and `DriverRemoteConnection` in Go GLV to pass `RequestOptions` to the server.
* Fixed bug in which `gremlin-server` would not respond to clients if an `Error` was thrown during bytecode traversals.
+* Added ability to deploy multi-arch Docker images for server and console. Server image now supports AMD64 and ARM64.
* Changed `with()` configuration for `ARGS_BATCH_SIZE` and `ARGS_EVAL_TIMEOUT` to be more forgiving on the type of `Number` used for the value.
* Changed `gremlin-console` to add imports via an ImportCustomizer to reduce time spent resolving imports.
* Bumped to Groovy 2.5.22.
diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc
index bb225fa040..6f8560141b 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -443,7 +443,7 @@ organization. So if you don't already have an account on Docker Hub then create
a PMC member adds your account to the TinkerPop organization. Afterwards, authentication information needs to be added to
the `~/.docker/config.json` file. This information can simply be added with the `docker login` command which will ask for
credentials. This must be done only once. Finally, `docker push` can be used to push images to Docker Hub which will
-be done automatically on `mvn deploy` or it can be triggered manually with `mvn dockerfile:push`.
+be done automatically on `mvn deploy` or it can be triggered manually with `mvn docker:push`.
[[building-testing]]
== Building and Testing
diff --git a/docs/src/upgrade/release-3.5.x.asciidoc b/docs/src/upgrade/release-3.5.x.asciidoc
index b8ddbfe65a..a41acf52b6 100644
--- a/docs/src/upgrade/release-3.5.x.asciidoc
+++ b/docs/src/upgrade/release-3.5.x.asciidoc
@@ -30,6 +30,10 @@ complete list of all the modifications that are part of this release.
=== Upgrading for Users
+==== ARM64 Support for Gremlin Server Docker Image
+
+Gremlin server docker image now supports both AMD64 and ARM64. Multi-architecture image can now be found at
+https://hub.docker.com/r/tinkerpop/gremlin-server
=== Upgrading for Providers
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index 727212d4f4..bb8f768753 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -25,6 +25,14 @@ limitations under the License.
</parent>
<artifactId>gremlin-console</artifactId>
<name>Apache TinkerPop :: Gremlin Console</name>
+ <properties>
+ <!--Testing in macOs on ARM reveals that the linux/arm64/v8 console
+ container is quite unstable at this time and results in frequent freezes.
+ It is believed the issue lies with the ARM docker engine. The stability of ARM
+ images is likely to improve overtime and this omition should be intermittently
+ re-evaluated.-->
+ <docker.platforms>linux/amd64<!--,linux/arm64/v8--></docker.platforms>
+ </properties>
<dependencies>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
@@ -288,6 +296,38 @@ limitations under the License.
</executions>
</plugin>
</plugins>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ <configuration>
+ <images>
+ <image>
+ <name>tinkerpop/gremlin-console:${project.version}</name>
+ <build>
+ <dockerFile>${project.build.directory}/../Dockerfile</dockerFile>
+ <args>
+ <GREMLIN_CONSOLE_DIR>target/apache-tinkerpop-${project.artifactId}-${project.version}-standalone</GREMLIN_CONSOLE_DIR>
+ </args>
+ <tags>
+ <!-- docker.tags.* properties are empty if project.version is a pre-release
+ resulting in no additional tags -->
+ <tag>${docker.tags.majorVersion.minorVersion}</tag>
+ <tag>${docker.tags.latest}</tag>
+ </tags>
+ <buildx>
+ <platforms>
+ <platform>${docker.platforms}</platform>
+ </platforms>
+ </buildx>
+ </build>
+ </image>
+ </images>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
</build>
<profiles>
@@ -360,79 +400,26 @@ limitations under the License.
<skip>true</skip>
</configuration>
</plugin>
+
<plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
<executions>
<execution>
- <id>docker-image-build</id>
+ <id>docker:build</id>
<goals>
<goal>build</goal>
</goals>
- <configuration>
- <tag>${project.version}</tag>
- <buildArgs>
- <GREMLIN_CONSOLE_DIR>target/apache-tinkerpop-${project.artifactId}-${project.version}-standalone</GREMLIN_CONSOLE_DIR>
- </buildArgs>
- </configuration>
+ <phase>package</phase>
</execution>
<execution>
- <id>docker-image-tag-minor-version</id>
- <goals>
- <goal>tag</goal>
- </goals>
- <configuration>
- <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
- <skip>${only.when.is.prerelease.version}</skip>
- </configuration>
- </execution>
- <execution>
- <id>docker-image-tag-latest</id>
- <goals>
- <goal>tag</goal>
- </goals>
- <configuration>
- <tag>latest</tag>
- <skip>${only.when.is.prerelease.version}</skip>
- </configuration>
- </execution>
- <execution>
- <id>docker-image-push</id>
- <phase>deploy</phase>
+ <id>docker:push</id>
<goals>
<goal>push</goal>
</goals>
- <configuration>
- <tag>${project.version}</tag>
- <skip>${only.when.is.snapshot.used}</skip>
- </configuration>
- </execution>
- <execution>
- <id>docker-image-push-minor-version</id>
- <phase>deploy</phase>
- <goals>
- <goal>push</goal>
- </goals>
- <configuration>
- <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
- <skip>${only.when.is.prerelease.version}</skip>
- </configuration>
- </execution>
- <execution>
- <id>docker-image-push-latest</id>
<phase>deploy</phase>
- <goals>
- <goal>push</goal>
- </goals>
- <configuration>
- <tag>latest</tag>
- <skip>${only.when.is.prerelease.version}</skip>
- </configuration>
</execution>
</executions>
- <configuration>
- <repository>tinkerpop/gremlin-console</repository>
- </configuration>
</plugin>
</plugins>
</build>
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index 97a47aeeb4..932ed8661e 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -32,6 +32,7 @@ limitations under the License.
-->
<maven.exec.skip>false</maven.exec.skip> <!-- default -->
<skipImageBuild>${maven.exec.skip}</skipImageBuild>
+ <docker.platforms>linux/amd64,linux/arm64/v8</docker.platforms>
</properties>
<dependencies>
<dependency>
@@ -207,6 +208,38 @@ limitations under the License.
</executions>
</plugin>
</plugins>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ <configuration>
+ <images>
+ <image>
+ <name>tinkerpop/gremlin-server:${project.version}</name>
+ <build>
+ <dockerFile>${project.build.directory}/../Dockerfile</dockerFile>
+ <args>
+ <GREMLIN_SERVER_DIR>target/apache-tinkerpop-${project.artifactId}-${project.version}-standalone</GREMLIN_SERVER_DIR>
+ </args>
+ <tags>
+ <!-- docker.tags.* properties are empty if project.version is a pre-release
+ resulting in no additional tags -->
+ <tag>${docker.tags.majorVersion.minorVersion}</tag>
+ <tag>${docker.tags.latest}</tag>
+ </tags>
+ <buildx>
+ <platforms>
+ <platform>${docker.platforms}</platform>
+ </platforms>
+ </buildx>
+ </build>
+ </image>
+ </images>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
</build>
<profiles>
@@ -234,7 +267,6 @@ limitations under the License.
</build>
</profile>
-
<profile>
<!--
This profile will include neo4j for purposes of transactional testing within Gremlin Server.
@@ -378,78 +410,24 @@ limitations under the License.
</configuration>
</plugin>
<plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
<executions>
<execution>
- <id>docker-image-build</id>
+ <id>docker:build</id>
<goals>
<goal>build</goal>
</goals>
- <configuration>
- <tag>${project.version}</tag>
- <buildArgs>
- <GREMLIN_SERVER_DIR>target/apache-tinkerpop-${project.artifactId}-${project.version}-standalone</GREMLIN_SERVER_DIR>
- </buildArgs>
- </configuration>
- </execution>
- <execution>
- <id>docker-image-tag-minor-version</id>
- <goals>
- <goal>tag</goal>
- </goals>
- <configuration>
- <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
- <skip>${only.when.is.prerelease.version}</skip>
- </configuration>
+ <phase>package</phase>
</execution>
<execution>
- <id>docker-image-tag-latest</id>
- <goals>
- <goal>tag</goal>
- </goals>
- <configuration>
- <tag>latest</tag>
- <skip>${only.when.is.prerelease.version}</skip>
- </configuration>
- </execution>
- <execution>
- <id>docker-image-push</id>
- <phase>deploy</phase>
+ <id>docker:push</id>
<goals>
<goal>push</goal>
</goals>
- <configuration>
- <tag>${project.version}</tag>
- <skip>${only.when.is.snapshot.used}</skip>
- </configuration>
- </execution>
- <execution>
- <id>docker-image-push-minor-version</id>
- <phase>deploy</phase>
- <goals>
- <goal>push</goal>
- </goals>
- <configuration>
- <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
- <skip>${only.when.is.prerelease.version}</skip>
- </configuration>
- </execution>
- <execution>
- <id>docker-image-push-latest</id>
<phase>deploy</phase>
- <goals>
- <goal>push</goal>
- </goals>
- <configuration>
- <tag>latest</tag>
- <skip>${only.when.is.prerelease.version}</skip>
- </configuration>
</execution>
</executions>
- <configuration>
- <repository>tinkerpop/gremlin-server</repository>
- </configuration>
</plugin>
</plugins>
</build>
diff --git a/pom.xml b/pom.xml
index 448daf97ed..2e36b454a9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -352,6 +352,55 @@ limitations under the License.
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</execution>
+ <execution>
+ <!-- sets the true.when.is.prerelease.version property to true if a prerelease version was used,
+ empty string otherwise -->
+ <id>build-helper-regex-is-prerelease-version2</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>regex-property</goal>
+ </goals>
+ <configuration>
+ <name>true.when.is.prerelease.version</name>
+ <value>${only.when.is.prerelease.version}</value>
+ <regex>${project.version}</regex>
+ <replacement></replacement>
+ <failIfNoMatch>false</failIfNoMatch>
+ </configuration>
+ </execution>
+ <execution>
+ <!-- sets the docker.tags.majorVersion.minorVersion property to
+ ${parsedVersion.majorVersion}.${parsedVersion.minorVersion} unless a prerelease version was,
+ used. If a prerelease is used, an empty string is assigned instead. -->
+ <id>build-helper-regex-set-docker-version-tag</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>regex-property</goal>
+ </goals>
+ <configuration>
+ <name>docker.tags.majorVersion.minorVersion</name>
+ <value>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}${true.when.is.prerelease.version}</value>
+ <regex>.*true</regex>
+ <replacement></replacement>
+ <failIfNoMatch>false</failIfNoMatch>
+ </configuration>
+ </execution>
+ <execution>
+ <!-- sets the docker.tags.latest property to "latest" unless a prerelease version was,
+ used. If a prerelease is used, an empty string is assigned instead. -->
+ <id>build-helper-regex-set-docker-latest-tag</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>regex-property</goal>
+ </goals>
+ <configuration>
+ <name>docker.tags.latest</name>
+ <value>latest${true.when.is.prerelease.version}</value>
+ <regex>.*true</regex>
+ <replacement></replacement>
+ <failIfNoMatch>false</failIfNoMatch>
+ </configuration>
+ </execution>
<execution>
<id>parse-version</id>
<goals>
@@ -625,9 +674,9 @@ limitations under the License.
<version>3.2.0</version>
</plugin>
<plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <version>1.4.13</version>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ <version>0.42.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -855,7 +904,6 @@ limitations under the License.
</dependencyManagement>
<profiles>
-
<profile>
<id>jdk11</id>
<activation>