Skip to content

Add support for environment variable TARANTOOL_REGISTRY #124

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 16 additions & 36 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ on:
pull_request:
branches: [ master ]

env:
TARANTOOL_REGISTRY: "registry.ps.tarantool.io/"
TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX: "registry.ps.tarantool.io/"

jobs:
tests-cartridge-container:
runs-on: ubuntu-latest
Expand All @@ -25,6 +29,9 @@ jobs:
java-version: '8'
cache: 'maven'

- name: Docker login to private registry
run: docker login "$TARANTOOL_REGISTRY" -u admin -p "${{ secrets.TARANTOOL_REGISTRY_PASSWORD }}"

- name: Build and run unit tests
run: ./mvnw -B verify -Djacoco.destFile=target/jacoco-cartridge-container.exec --file pom.xml

Expand All @@ -35,6 +42,9 @@ jobs:
TARANTOOL_VERSION: "2.11.2-ubuntu20.04"
run: ./mvnw -B test -P integration -Djacoco.destFile=target/jacoco-cartridge-container.exec --file pom.xml

- name: Print system images
run: docker images

- name: Upload jacoco exec results
uses: actions/upload-artifact@v4
with:
Expand All @@ -43,35 +53,6 @@ jobs:
retention-days: 5
overwrite: true

tests-ee:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4

- name: Set up JDK 1.8
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '8'
cache: 'maven'

- name: Run enterprise tests
env:
TARANTOOL_SERVER_USER: root
TARANTOOL_SERVER_GROUP: root
DOWNLOAD_HOST: https://tarantool:${{ secrets.DOWNLOAD_SDK_TOKEN }}@download.tarantool.io
SDK_PATH: enterprise/release/linux/x86_64/2.11/tarantool-enterprise-sdk-nogc64-2.11.2-0-r609.linux.x86_64.tar.gz
run: ./mvnw -B test -P enterprise -Djacoco.destFile=target/jacoco-ee.exec --file pom.xml

- name: Upload jacoco exec results
uses: actions/upload-artifact@v4
with:
name: tests-ee-jacoco
path: "**/jacoco-ee.exec"
retention-days: 5
overwrite: true

tests-tarantool-container:
runs-on: ubuntu-latest
timeout-minutes: 25
Expand All @@ -89,13 +70,19 @@ jobs:
java-version: '8'
cache: 'maven'

- name: Docker login to private registry
run: docker login "$TARANTOOL_REGISTRY" -u admin -p "${{ secrets.TARANTOOL_REGISTRY_PASSWORD }}"

- name: Build and run integration matrix tests
env:
TARANTOOL_VERSION: ${{ matrix.tarantool-version }}
TARANTOOL_SERVER_USER: root
TARANTOOL_SERVER_GROUP: root
run: ./mvnw -B test -P tarantool-container -Djacoco.destFile=target/jacoco-tarantool-container.exec --file pom.xml

- name: Print system images
run: docker images

- name: Upload jacoco exec results
uses: actions/upload-artifact@v4
with:
Expand All @@ -108,7 +95,6 @@ jobs:
name: Jacoco Merge Results
needs:
- tests-cartridge-container
- tests-ee
- tests-tarantool-container
runs-on: ubuntu-latest
steps:
Expand All @@ -126,11 +112,6 @@ jobs:
name: tests-cartridge-container-jacoco
path: .

- uses: actions/download-artifact@v4
with:
name: tests-ee-jacoco
path: .

- uses: actions/download-artifact@v4
with:
name: tests-tarantool-container-jacoco
Expand All @@ -149,7 +130,6 @@ jobs:
if-no-files-found: error
overwrite: true


- name: Jacoco Report to PR
id: jacoco
uses: madrapps/jacoco-report@v1.6.1
Expand Down
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

## [Unreleased]

## [1.3.3] - 2024-05-06
- Add support for environment variable `TARANTOOL_REGISTRY`
- Remove enterprise tests


## [1.3.2] - 2024-04-25
- Fix NullPointerException during building docker image when images with null tags exist on a local machine.

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Add the Maven dependency:
<dependency>
<groupId>io.tarantool</groupId>
<artifactId>testcontainers-java-tarantool</artifactId>
<version>1.3.2</version>
<version>1.3.3</version>
</dependency>
```

Expand Down
24 changes: 0 additions & 24 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,6 @@
<include>**/*IT.java</include>
</includes>
<excludes>
<exclude>**/*EnterpriseIT.java</exclude>
<exclude>**/*TarantoolContainer*IT.java</exclude>
</excludes>
<systemPropertyVariables>
Expand All @@ -271,29 +270,6 @@
</plugins>
</build>
</profile>
<profile>
<id>enterprise</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<includes>
<include>**/*TestEnterprise.java</include>
<include>**/*EnterpriseIT.java</include>
</includes>
<systemPropertyVariables>
<logback.configurationFile>${logging.config}</logback.configurationFile>
<logLevel>${logging.logLevel}</logLevel>
</systemPropertyVariables>
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>release</id>
<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
public class TarantoolContainer extends GenericContainer<TarantoolContainer>
implements TarantoolContainerOperations<TarantoolContainer> {

public static final String TARANTOOL_IMAGE = "tarantool/tarantool";
public static final String DEFAULT_IMAGE_VERSION = "2.11.2-ubuntu20.04";
public static final String DEFAULT_TARANTOOL_BASE_IMAGE = String.format("%s:%s", TARANTOOL_IMAGE, DEFAULT_IMAGE_VERSION);
public static final String DEFAULT_IMAGE = "tarantool/tarantool";
public static final String DEFAULT_TAG = "2.11.2-ubuntu20.04";
public static final String DEFAULT_BASE_IMAGE = String.format("%s:%s", DEFAULT_IMAGE, DEFAULT_TAG);


private static final String DEFAULT_HOST = "localhost";
Expand Down Expand Up @@ -50,7 +50,7 @@ public class TarantoolContainer extends GenericContainer<TarantoolContainer>
* Constructor for {@link TarantoolContainer}
*/
public TarantoolContainer() {
this(DEFAULT_TARANTOOL_BASE_IMAGE);
this(DEFAULT_BASE_IMAGE);
setImageNameFromEnv();
}

Expand Down Expand Up @@ -386,7 +386,11 @@ public <T> T executeCommandDecoded(String command) throws Exception {
private void setImageNameFromEnv() {
String version = System.getenv("TARANTOOL_VERSION");
if (version != null && !version.trim().isEmpty()) {
setDockerImageName(String.format("%s:%s", TARANTOOL_IMAGE, version));
String registry = System.getenv("TARANTOOL_REGISTRY");
String image = registry == null || registry.isEmpty() ?
DEFAULT_IMAGE :
(registry.endsWith("/") ? registry + DEFAULT_IMAGE : registry + "/" + DEFAULT_IMAGE);
setDockerImageName(String.format("%s:%s", image, version));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.io.File;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

/**
Expand Down Expand Up @@ -38,6 +39,17 @@ public TarantoolImageParams(String tag, File dockerfile, Map<String, String> bui
this.buildArgs = buildArgs;
}

/**
* Custom constructor for tarantool image parameters
*
* @param tag docker image tag
* @param dockerfile dockerfile for building custom tarantool image
* @param baseImageName default image name for building docker image
*/
public TarantoolImageParams(String tag, File dockerfile, String baseImageName) {
this(tag, dockerfile, extract(baseImageName));
}

/**
* Getter for sdk version
*
Expand All @@ -64,4 +76,22 @@ public File getDockerfile() {
Map<String, String> getBuildArgs() {
return buildArgs;
}

/**
* Extract build arguments from environment variables
*
* @param defaultImage default image name for building docker image
* @return map of building arguments
*/
private static Map<String, String> extract(String defaultImage) {
final Map<String, String> buildArgs = new HashMap<>();
String registry = System.getenv("TARANTOOL_REGISTRY");
if (registry != null && !registry.isEmpty()) {
buildArgs.put("IMAGE", registry.endsWith("/") ? registry + defaultImage : registry + "/" + defaultImage);
}
buildArgs.put("DOWNLOAD_HOST", System.getenv("DOWNLOAD_HOST"));
buildArgs.put("SDK_PATH", System.getenv("SDK_PATH"));
buildArgs.put("CLUSTER_SRC_DIR", "vshard_cluster");
return buildArgs;
}
}
5 changes: 3 additions & 2 deletions src/main/resources/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
ARG TARANTOOL_VERSION=2.11.2-ubuntu20.04
FROM tarantool/tarantool:${TARANTOOL_VERSION} AS cartridge-base
ARG IMAGE="tarantool/tarantool"
ARG TARANTOOL_VERSION="2.11.2-ubuntu20.04"
FROM $IMAGE:$TARANTOOL_VERSION AS cartridge-base

ARG TARANTOOL_SERVER_USER="root"
ARG TARANTOOL_SERVER_GROUP="root"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.junit.jupiter.api.Test;
import org.rnorth.ducttape.RetryCountExceededException;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.Container.ExecResult;
import org.testcontainers.containers.exceptions.CartridgeTopologyException;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.junit.jupiter.Container;
Expand All @@ -16,8 +17,6 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.testcontainers.containers.Container.ExecResult;


/**
* @author Alexey Kuzin
Expand All @@ -29,7 +28,7 @@ public class TarantoolCartridgeBootstrapFromLuaWithFixedPortsIT {
private static final TarantoolCartridgeContainer container =
new TarantoolCartridgeContainer(
"Dockerfile",
"cartridge",
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "") + "cartridge",
"cartridge/instances_fixedport.yml",
"cartridge/topology_fixedport.lua")
.withEnv("TARANTOOL_INSTANCES_FILE", "instances_fixedport.yml")
Expand Down Expand Up @@ -58,7 +57,7 @@ public void testTarantoolClusterCookieDefault() throws Exception {
public void testTarantoolClusterCookieWithEnv() throws Exception {
try(TarantoolCartridgeContainer newContainer = new TarantoolCartridgeContainer(
"Dockerfile",
"cartridge",
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "") + "cartridge",
"cartridge/instances.yml",
"cartridge/replicasets.yml")
.withEnv(TarantoolCartridgeContainer.ENV_TARANTOOL_CLUSTER_COOKIE, "secret")
Expand Down Expand Up @@ -86,7 +85,7 @@ public void test_retryingSetupTopology_shouldWork() {
try (TarantoolCartridgeContainer testContainer =
new TarantoolCartridgeContainer(
"Dockerfile",
"cartridge",
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "") + "cartridge",
"cartridge/instances.yml",
"cartridge/incorrect_topology.lua")
.withLogConsumer(new Slf4jLogConsumer(
Expand Down Expand Up @@ -120,7 +119,7 @@ public void testBuildArgs() throws Exception {

try(TarantoolCartridgeContainer newContainer = new TarantoolCartridgeContainer(
"Dockerfile",
"build_args_test",
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "") + "build_args_test",
"cartridge/instances.yml",
"cartridge/replicasets.yml",
buildArgs)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class TarantoolCartridgeBootstrapFromYamlIT {
private static final TarantoolCartridgeContainer container =
new TarantoolCartridgeContainer(
"Dockerfile",
"cartridge",
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "") + "cartridge",
"cartridge/instances.yml",
"cartridge/replicasets.yml")
.withStartupTimeout(Duration.ofMinutes(5))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class TarantoolCartridgePortMappingIT {
@Container
private final static TarantoolCartridgeContainer container = new TarantoolCartridgeContainer(
"Dockerfile",
"mapping-ports-container",
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "") + "mapping-ports-container",
"cartridge/instances.yml",
"cartridge/replicasets.yml")
.withEnv(TarantoolCartridgeContainer.ENV_TARANTOOL_CLUSTER_COOKIE, "secret")
Expand Down
Loading
Loading