From 49a7a5c813468521938d4d1a22faf18cad969b8b Mon Sep 17 00:00:00 2001 From: Sattvik Date: Tue, 25 Mar 2025 11:33:58 +0530 Subject: [PATCH 01/17] fix: typo --- src/main/java/io/supertokens/storage/postgresql/Start.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/supertokens/storage/postgresql/Start.java b/src/main/java/io/supertokens/storage/postgresql/Start.java index c63669b9..03933584 100644 --- a/src/main/java/io/supertokens/storage/postgresql/Start.java +++ b/src/main/java/io/supertokens/storage/postgresql/Start.java @@ -3069,7 +3069,7 @@ public void createDevice(AppIdentifier appIdentifier, TOTPDevice device) try { startTransaction(con -> { try { - createDevice_Transaction(con, new AppIdentifier(null, null), device); + createDevice_Transaction(con, appIdentifier, device); } catch (DeviceAlreadyExistsException | TenantOrAppNotFoundException e) { throw new StorageTransactionLogicException(e); } From f564569e649f4b0e2a2c806b6587592d4818e2ec Mon Sep 17 00:00:00 2001 From: Sattvik Date: Tue, 25 Mar 2025 16:20:03 +0530 Subject: [PATCH 02/17] fix: update startdb.sh --- startDb.sh | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/startDb.sh b/startDb.sh index 5fa7d75e..2d9ece1e 100755 --- a/startDb.sh +++ b/startDb.sh @@ -1 +1,56 @@ -docker run --rm --name postgres -e 'POSTGRES_USER=root' -e 'POSTGRES_PASSWORD=root' -d -p 5432:5432 -v ~/Desktop/db/pstgres:/var/lib/postgresql/data postgres -c 'max_connections=10000' \ No newline at end of file +docker run --rm --name postgres -e 'POSTGRES_USER=root' -e 'POSTGRES_PASSWORD=root' -d -p 5432:5432 -v ~/Desktop/db/pstgres:/var/lib/postgresql/data postgres -c 'max_connections=10000' + +sleep 5 + +docker exec postgres psql -U root root -c 'create database supertokens;' +docker exec postgres psql -U root root -c 'create database st0;' +docker exec postgres psql -U root root -c 'create database st1;' +docker exec postgres psql -U root root -c 'create database st2;' +docker exec postgres psql -U root root -c 'create database st3;' +docker exec postgres psql -U root root -c 'create database st4;' +docker exec postgres psql -U root root -c 'create database st5;' +docker exec postgres psql -U root root -c 'create database st6;' +docker exec postgres psql -U root root -c 'create database st7;' +docker exec postgres psql -U root root -c 'create database st8;' +docker exec postgres psql -U root root -c 'create database st9;' +docker exec postgres psql -U root root -c 'create database st10;' +docker exec postgres psql -U root root -c 'create database st11;' +docker exec postgres psql -U root root -c 'create database st12;' +docker exec postgres psql -U root root -c 'create database st13;' +docker exec postgres psql -U root root -c 'create database st14;' +docker exec postgres psql -U root root -c 'create database st15;' +docker exec postgres psql -U root root -c 'create database st16;' +docker exec postgres psql -U root root -c 'create database st17;' +docker exec postgres psql -U root root -c 'create database st18;' +docker exec postgres psql -U root root -c 'create database st19;' +docker exec postgres psql -U root root -c 'create database st20;' +docker exec postgres psql -U root root -c 'create database st21;' +docker exec postgres psql -U root root -c 'create database st22;' +docker exec postgres psql -U root root -c 'create database st23;' +docker exec postgres psql -U root root -c 'create database st24;' +docker exec postgres psql -U root root -c 'create database st25;' +docker exec postgres psql -U root root -c 'create database st26;' +docker exec postgres psql -U root root -c 'create database st27;' +docker exec postgres psql -U root root -c 'create database st28;' +docker exec postgres psql -U root root -c 'create database st29;' +docker exec postgres psql -U root root -c 'create database st30;' +docker exec postgres psql -U root root -c 'create database st31;' +docker exec postgres psql -U root root -c 'create database st32;' +docker exec postgres psql -U root root -c 'create database st33;' +docker exec postgres psql -U root root -c 'create database st34;' +docker exec postgres psql -U root root -c 'create database st35;' +docker exec postgres psql -U root root -c 'create database st36;' +docker exec postgres psql -U root root -c 'create database st37;' +docker exec postgres psql -U root root -c 'create database st38;' +docker exec postgres psql -U root root -c 'create database st39;' +docker exec postgres psql -U root root -c 'create database st40;' +docker exec postgres psql -U root root -c 'create database st41;' +docker exec postgres psql -U root root -c 'create database st42;' +docker exec postgres psql -U root root -c 'create database st43;' +docker exec postgres psql -U root root -c 'create database st44;' +docker exec postgres psql -U root root -c 'create database st45;' +docker exec postgres psql -U root root -c 'create database st46;' +docker exec postgres psql -U root root -c 'create database st47;' +docker exec postgres psql -U root root -c 'create database st48;' +docker exec postgres psql -U root root -c 'create database st49;' +docker exec postgres psql -U root root -c 'create database st50;' From 3fbacda8b0c12aad5e35e0e84647b904ece9234c Mon Sep 17 00:00:00 2001 From: Sattvik Date: Thu, 27 Mar 2025 11:15:17 +0530 Subject: [PATCH 03/17] fix: startDb.sh --- startDb.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/startDb.sh b/startDb.sh index 2d9ece1e..b88d9438 100755 --- a/startDb.sh +++ b/startDb.sh @@ -1,6 +1,6 @@ docker run --rm --name postgres -e 'POSTGRES_USER=root' -e 'POSTGRES_PASSWORD=root' -d -p 5432:5432 -v ~/Desktop/db/pstgres:/var/lib/postgresql/data postgres -c 'max_connections=10000' -sleep 5 +sleep 30 docker exec postgres psql -U root root -c 'create database supertokens;' docker exec postgres psql -U root root -c 'create database st0;' From 038a270e0d740a2839d70f7d11dc3e5f58576b82 Mon Sep 17 00:00:00 2001 From: Sattvik Date: Thu, 27 Mar 2025 18:13:51 +0530 Subject: [PATCH 04/17] fix: startDb.sh --- startDb.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/startDb.sh b/startDb.sh index b88d9438..60940ece 100755 --- a/startDb.sh +++ b/startDb.sh @@ -1,4 +1,13 @@ -docker run --rm --name postgres -e 'POSTGRES_USER=root' -e 'POSTGRES_PASSWORD=root' -d -p 5432:5432 -v ~/Desktop/db/pstgres:/var/lib/postgresql/data postgres -c 'max_connections=10000' +docker run --rm --name postgres \ + -e 'POSTGRES_USER=root' \ + -e 'POSTGRES_PASSWORD=root' \ + -d -p 5432:5432 \ + -v ~/Desktop/db/pstgres:/var/lib/postgresql/data \ + postgres \ + -c 'max_connections=1000' \ + -c 'autovacuum_naptime=1' \ + -c 'autovacuum_vacuum_threshold=10' \ + -c 'autovacuum_analyze_threshold=10' sleep 30 From 1c5ee7574dd7dcb049dbfc234dce3aaf4f664613 Mon Sep 17 00:00:00 2001 From: Sattvik Date: Wed, 2 Apr 2025 22:57:30 +0530 Subject: [PATCH 05/17] fix: port for testing --- .../storage/postgresql/config/PostgreSQLConfig.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/supertokens/storage/postgresql/config/PostgreSQLConfig.java b/src/main/java/io/supertokens/storage/postgresql/config/PostgreSQLConfig.java index 666c4795..ceb5afc3 100644 --- a/src/main/java/io/supertokens/storage/postgresql/config/PostgreSQLConfig.java +++ b/src/main/java/io/supertokens/storage/postgresql/config/PostgreSQLConfig.java @@ -23,6 +23,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonObject; + import io.supertokens.pluginInterface.ConfigFieldInfo; import io.supertokens.pluginInterface.exceptions.InvalidConfigException; import io.supertokens.storage.postgresql.Start; @@ -650,7 +651,7 @@ private void validateAndNormalise(boolean skipValidation) throws InvalidConfigEx { // postgresql_port if (postgresql_port < 0) { - postgresql_port = 5432; + postgresql_port = Integer.parseInt(System.getProperty("ST_PLUGIN_SERVER_PORT", "5432")); } } From 093ac7d6a0f315b400d0088bf2070debfc0726c5 Mon Sep 17 00:00:00 2001 From: Sattvik Date: Wed, 2 Apr 2025 23:17:02 +0530 Subject: [PATCH 06/17] fix: tests --- .../storage/postgresql/test/Utils.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/test/java/io/supertokens/storage/postgresql/test/Utils.java b/src/test/java/io/supertokens/storage/postgresql/test/Utils.java index b82c4bfd..c09d5b6d 100644 --- a/src/test/java/io/supertokens/storage/postgresql/test/Utils.java +++ b/src/test/java/io/supertokens/storage/postgresql/test/Utils.java @@ -50,7 +50,8 @@ public static void afterTesting() { process.waitFor(); // remove config.yaml file - pb = new ProcessBuilder("rm", "config.yaml"); + String workerId = System.getProperty("org.gradle.test.worker"); + pb = new ProcessBuilder("rm", "config" + workerId + ".yaml"); pb.directory(new File(installDir)); process = pb.start(); process.waitFor(); @@ -63,7 +64,7 @@ public static void afterTesting() { } // remove .started folder created by processes - final File dotStartedFolder = new File(installDir + ".started"); + final File dotStartedFolder = new File(installDir + ".started" + workerId); try { FileUtils.deleteDirectory(dotStartedFolder); } catch (Exception ignored) { @@ -82,11 +83,12 @@ public static void reset() { MultitenancyQueries.simulateErrorInAddingTenantIdInTargetStorage_forTesting = false; String installDir = "../"; + String workerId = System.getProperty("org.gradle.test.worker"); try { // if the default config is not the same as the current config, we must reset // the storage layer File ogConfig = new File("../temp/config.yaml"); - File currentConfig = new File("../config.yaml"); + File currentConfig = new File("../config" + workerId + ".yaml"); if (currentConfig.isFile()) { byte[] ogConfigContent = Files.readAllBytes(ogConfig.toPath()); byte[] currentConfigContent = Files.readAllBytes(currentConfig.toPath()); @@ -95,7 +97,7 @@ public static void reset() { } } - ProcessBuilder pb = new ProcessBuilder("cp", "temp/config.yaml", "./config.yaml"); + ProcessBuilder pb = new ProcessBuilder("cp", "temp/config.yaml", "./config" + workerId + ".yaml"); pb.directory(new File(installDir)); Process process = pb.start(); process.waitFor(); @@ -140,14 +142,15 @@ public static void setValueInConfig(String key, String value) throws FileNotFoun String oldStr = "\n((#\\s)?)" + key + "(:|((:\\s).+))\n"; String newStr = "\n" + key + ": " + value + "\n"; StringBuilder originalFileContent = new StringBuilder(); - try (BufferedReader reader = new BufferedReader(new FileReader("../config.yaml"))) { + String workerId = System.getProperty("org.gradle.test.worker"); + try (BufferedReader reader = new BufferedReader(new FileReader("../config" + workerId + ".yaml"))) { String currentReadingLine = reader.readLine(); while (currentReadingLine != null) { originalFileContent.append(currentReadingLine).append(System.lineSeparator()); currentReadingLine = reader.readLine(); } String modifiedFileContent = originalFileContent.toString().replaceAll(oldStr, newStr); - try (BufferedWriter writer = new BufferedWriter(new FileWriter("../config.yaml"))) { + try (BufferedWriter writer = new BufferedWriter(new FileWriter("../config" + workerId + ".yaml"))) { writer.write(modifiedFileContent); } } @@ -162,14 +165,15 @@ public static void commentConfigValue(String key) throws IOException { String newStr = "\n# " + key + ":"; StringBuilder originalFileContent = new StringBuilder(); - try (BufferedReader reader = new BufferedReader(new FileReader("../config.yaml"))) { + String workerId = System.getProperty("org.gradle.test.worker"); + try (BufferedReader reader = new BufferedReader(new FileReader("../config" + workerId + ".yaml"))) { String currentReadingLine = reader.readLine(); while (currentReadingLine != null) { originalFileContent.append(currentReadingLine).append(System.lineSeparator()); currentReadingLine = reader.readLine(); } String modifiedFileContent = originalFileContent.toString().replaceAll(oldStr, newStr); - try (BufferedWriter writer = new BufferedWriter(new FileWriter("../config.yaml"))) { + try (BufferedWriter writer = new BufferedWriter(new FileWriter("../config" + workerId + ".yaml"))) { writer.write(modifiedFileContent); } } From 12037bef01558da6b6625ff693ab8d1ef1c45038 Mon Sep 17 00:00:00 2001 From: Sattvik Date: Thu, 3 Apr 2025 14:28:02 +0530 Subject: [PATCH 07/17] fix: tests --- .../storage/postgresql/test/ConfigTest.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/test/java/io/supertokens/storage/postgresql/test/ConfigTest.java b/src/test/java/io/supertokens/storage/postgresql/test/ConfigTest.java index 755b6720..327fa2d1 100644 --- a/src/test/java/io/supertokens/storage/postgresql/test/ConfigTest.java +++ b/src/test/java/io/supertokens/storage/postgresql/test/ConfigTest.java @@ -120,7 +120,8 @@ public void testThatInvalidConfigThrowsRightError() throws Exception { public void testThatMissingConfigFileThrowsError() throws Exception { String[] args = {"../"}; - ProcessBuilder pb = new ProcessBuilder("rm", "-r", "config.yaml"); + String workerId = System.getProperty("org.gradle.test.worker"); + ProcessBuilder pb = new ProcessBuilder("rm", "-r", "config" + workerId + ".yaml"); pb.directory(new File(args[0])); Process process1 = pb.start(); process1.waitFor(); @@ -130,7 +131,7 @@ public void testThatMissingConfigFileThrowsError() throws Exception { ProcessState.EventAndException e = process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.INIT_FAILURE); assertNotNull(e); TestCase.assertEquals(e.exception.getMessage(), - "../config.yaml (No such file or directory)"); + "config" + workerId + ".yaml (No such file or directory)"); process.kill(); assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STOPPED)); @@ -468,7 +469,8 @@ public void testAddingSchemaViaConnectionUriWorks3() throws Exception { @Test public void testValidConnectionURI() throws Exception { final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); - PostgreSQLConfig userConfig = mapper.readValue(new File("../config.yaml"), PostgreSQLConfig.class); + String workerId = System.getProperty("org.gradle.test.worker"); + PostgreSQLConfig userConfig = mapper.readValue(new File("../config" + workerId + ".yaml"), PostgreSQLConfig.class); userConfig.validateAndNormalise(); String hostname = userConfig.getHostName(); @@ -573,7 +575,8 @@ public void testValidConnectionURI() throws Exception { @Test public void testInvalidConnectionURI() throws Exception { final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); - PostgreSQLConfig userConfig = mapper.readValue(new File("../config.yaml"), PostgreSQLConfig.class); + String workerId = System.getProperty("org.gradle.test.worker"); + PostgreSQLConfig userConfig = mapper.readValue(new File("../config" + workerId + ".yaml"), PostgreSQLConfig.class); userConfig.validateAndNormalise(); String hostname = userConfig.getHostName(); @@ -620,7 +623,8 @@ public void testInvalidConnectionURI() throws Exception { @Test public void testValidConnectionURIAttributes() throws Exception { final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); - PostgreSQLConfig userConfig = mapper.readValue(new File("../config.yaml"), PostgreSQLConfig.class); + String workerId = System.getProperty("org.gradle.test.worker"); + PostgreSQLConfig userConfig = mapper.readValue(new File("../config" + workerId + ".yaml"), PostgreSQLConfig.class); userConfig.validateAndNormalise(); String hostname = userConfig.getHostName(); { @@ -674,7 +678,8 @@ public void testAllConfigsHaveAnAnnotation() throws Exception { public static void checkConfig(PostgreSQLConfig config) throws IOException, InvalidConfigException { final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); - PostgreSQLConfig userConfig = mapper.readValue(new File("../config.yaml"), PostgreSQLConfig.class); + String workerId = System.getProperty("org.gradle.test.worker"); + PostgreSQLConfig userConfig = mapper.readValue(new File("../config" + workerId + ".yaml"), PostgreSQLConfig.class); userConfig.validateAndNormalise(); String hostname = userConfig.getHostName(); From 199d31c5541560cce2df5970877977d586d0e5a2 Mon Sep 17 00:00:00 2001 From: Sattvik Date: Thu, 3 Apr 2025 16:00:37 +0530 Subject: [PATCH 08/17] fix: tests --- .../storage/postgresql/test/ConfigTest.java | 6 ++-- .../storage/postgresql/test/Utils.java | 36 +++++++++++++++++++ .../TestForNoCrashDuringStartup.java | 9 ++--- 3 files changed, 44 insertions(+), 7 deletions(-) diff --git a/src/test/java/io/supertokens/storage/postgresql/test/ConfigTest.java b/src/test/java/io/supertokens/storage/postgresql/test/ConfigTest.java index 327fa2d1..edb430a7 100644 --- a/src/test/java/io/supertokens/storage/postgresql/test/ConfigTest.java +++ b/src/test/java/io/supertokens/storage/postgresql/test/ConfigTest.java @@ -120,18 +120,18 @@ public void testThatInvalidConfigThrowsRightError() throws Exception { public void testThatMissingConfigFileThrowsError() throws Exception { String[] args = {"../"}; + TestingProcessManager.TestingProcess process = TestingProcessManager.start(args); + String workerId = System.getProperty("org.gradle.test.worker"); ProcessBuilder pb = new ProcessBuilder("rm", "-r", "config" + workerId + ".yaml"); pb.directory(new File(args[0])); Process process1 = pb.start(); process1.waitFor(); - TestingProcessManager.TestingProcess process = TestingProcessManager.start(args); - ProcessState.EventAndException e = process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.INIT_FAILURE); assertNotNull(e); TestCase.assertEquals(e.exception.getMessage(), - "config" + workerId + ".yaml (No such file or directory)"); + "../config" + workerId + ".yaml (No such file or directory)"); process.kill(); assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STOPPED)); diff --git a/src/test/java/io/supertokens/storage/postgresql/test/Utils.java b/src/test/java/io/supertokens/storage/postgresql/test/Utils.java index c09d5b6d..7d13cc27 100644 --- a/src/test/java/io/supertokens/storage/postgresql/test/Utils.java +++ b/src/test/java/io/supertokens/storage/postgresql/test/Utils.java @@ -26,6 +26,7 @@ import org.junit.rules.TestRule; import org.junit.rules.TestWatcher; import org.junit.runner.Description; +import org.junit.runners.model.Statement; import org.mockito.Mockito; import javax.net.ssl.HttpsURLConnection; @@ -35,6 +36,7 @@ import java.nio.file.Paths; import java.util.Arrays; import java.util.List; +import java.util.Random; public abstract class Utils extends Mockito { @@ -189,4 +191,38 @@ protected void failed(Throwable e, Description description) { }; } + public static TestRule retryFlakyTest() { + return new TestRule() { + private final int retryCount = 10; + + public Statement apply(Statement base, Description description) { + return statement(base, description); + } + + private Statement statement(final Statement base, final Description description) { + return new Statement() { + @Override + public void evaluate() throws Throwable { + Throwable caughtThrowable = null; + + // implement retry logic here + for (int i = 0; i < retryCount; i++) { + try { + base.evaluate(); + return; + } catch (Throwable t) { + caughtThrowable = t; + System.err.println(description.getDisplayName() + ": run " + (i+1) + " failed"); + TestingProcessManager.killAll(); + Thread.sleep(1000 + new Random().nextInt(3000)); + } + } + System.err.println(description.getDisplayName() + ": giving up after " + retryCount + " failures"); + throw caughtThrowable; + } + }; + } + }; + } + } diff --git a/src/test/java/io/supertokens/storage/postgresql/test/multitenancy/TestForNoCrashDuringStartup.java b/src/test/java/io/supertokens/storage/postgresql/test/multitenancy/TestForNoCrashDuringStartup.java index 0f34f815..fc340727 100644 --- a/src/test/java/io/supertokens/storage/postgresql/test/multitenancy/TestForNoCrashDuringStartup.java +++ b/src/test/java/io/supertokens/storage/postgresql/test/multitenancy/TestForNoCrashDuringStartup.java @@ -41,10 +41,8 @@ import io.supertokens.storageLayer.StorageLayer; import io.supertokens.thirdparty.InvalidProviderConfigException; import io.supertokens.utils.SemVer; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.Test; +import org.junit.*; +import org.junit.rules.TestRule; import java.io.IOException; @@ -54,6 +52,9 @@ public class TestForNoCrashDuringStartup { TestingProcessManager.TestingProcess process; + @Rule + public TestRule retryFlaky = Utils.retryFlakyTest(); + @AfterClass public static void afterTesting() { Utils.afterTesting(); From d5e4c3a3b737968d296803a7d3b6c7b44f55971f Mon Sep 17 00:00:00 2001 From: Sattvik Date: Thu, 3 Apr 2025 18:28:17 +0530 Subject: [PATCH 09/17] fix: tests --- .../supertokens/storage/postgresql/config/PostgreSQLConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/supertokens/storage/postgresql/config/PostgreSQLConfig.java b/src/main/java/io/supertokens/storage/postgresql/config/PostgreSQLConfig.java index ceb5afc3..c1046f23 100644 --- a/src/main/java/io/supertokens/storage/postgresql/config/PostgreSQLConfig.java +++ b/src/main/java/io/supertokens/storage/postgresql/config/PostgreSQLConfig.java @@ -651,7 +651,7 @@ private void validateAndNormalise(boolean skipValidation) throws InvalidConfigEx { // postgresql_port if (postgresql_port < 0) { - postgresql_port = Integer.parseInt(System.getProperty("ST_PLUGIN_SERVER_PORT", "5432")); + postgresql_port = Integer.parseInt(System.getProperty("ST_POSTGRESQL_PLUGIN_SERVER_PORT", "5432")); } } From 0111d00327a7c76a4ff023d2c9ff124b2efba012 Mon Sep 17 00:00:00 2001 From: Sattvik Date: Fri, 4 Apr 2025 10:45:42 +0530 Subject: [PATCH 10/17] fix: retry --- .../storage/postgresql/test/DbConnectionPoolTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/java/io/supertokens/storage/postgresql/test/DbConnectionPoolTest.java b/src/test/java/io/supertokens/storage/postgresql/test/DbConnectionPoolTest.java index 3a7f5935..fe0641e2 100644 --- a/src/test/java/io/supertokens/storage/postgresql/test/DbConnectionPoolTest.java +++ b/src/test/java/io/supertokens/storage/postgresql/test/DbConnectionPoolTest.java @@ -50,6 +50,9 @@ public class DbConnectionPoolTest { @Rule public TestRule watchman = Utils.getOnFailure(); + @Rule + public TestRule retryFlaky = Utils.retryFlakyTest(); + @AfterClass public static void afterTesting() { Utils.afterTesting(); From dcba2e41502b48b0ca001b68f7b8363809bbc68a Mon Sep 17 00:00:00 2001 From: Sattvik Date: Tue, 8 Apr 2025 12:39:55 +0530 Subject: [PATCH 11/17] fix: docker scripts --- .github/helpers/docker/Dockerfile | 40 ++ .github/helpers/docker/docker-entrypoint.sh | 406 ++++++++++++++++++++ 2 files changed, 446 insertions(+) create mode 100644 .github/helpers/docker/Dockerfile create mode 100755 .github/helpers/docker/docker-entrypoint.sh diff --git a/.github/helpers/docker/Dockerfile b/.github/helpers/docker/Dockerfile new file mode 100644 index 00000000..32c3f360 --- /dev/null +++ b/.github/helpers/docker/Dockerfile @@ -0,0 +1,40 @@ +FROM ubuntu:bionic-20200219 AS tmp +WORKDIR /build +RUN apt-get update && apt-get install -y curl wget zip +RUN wget https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_linux-x64_bin.tar.gz +RUN tar -xzvf openjdk-15.0.1_linux-x64_bin.tar.gz +RUN ls && mv jdk-15.0.1 jre +ADD ./cli ./cli +ADD ./core ./core +ADD ./plugin-interface ./plugin-interface +ADD ./plugin ./plugin +ADD ./config.yaml ./config.yaml +ADD ./version.yaml ./version.yaml + +RUN ls && ./jre/bin/java -classpath "./cli/*" io.supertokens.cli.Main true $@ + +FROM debian:bookworm-slim +RUN groupadd supertokens && useradd -m -s /bin/bash -g supertokens supertokens +RUN apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr curl && rm -rf /var/lib/apt/lists/* +RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata +ENV GOSU_VERSION=1.7 +RUN set -x \ + && apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \ + && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \ + && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \ + && export GNUPGHOME="$(mktemp -d)" \ + && gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ + && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ + && gpgconf --kill all \ + && rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc \ + && chmod +x /usr/local/bin/gosu \ + && apt-get purge -y --auto-remove wget +COPY --from=tmp --chown=supertokens /usr/lib/supertokens /usr/lib/supertokens +COPY --from=tmp --chown=supertokens /usr/bin/supertokens /usr/bin/supertokens +COPY ./supertokens-core/.github/helpers/docker/postgresql/docker-entrypoint.sh /usr/local/bin/ +RUN echo "$(md5sum /usr/lib/supertokens/config.yaml | awk '{ print $1 }')" >> /CONFIG_HASH +RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat +EXPOSE 3567 +USER "supertokens" +ENTRYPOINT ["docker-entrypoint.sh"] +CMD ["supertokens", "start"] \ No newline at end of file diff --git a/.github/helpers/docker/docker-entrypoint.sh b/.github/helpers/docker/docker-entrypoint.sh new file mode 100755 index 00000000..27b36e5b --- /dev/null +++ b/.github/helpers/docker/docker-entrypoint.sh @@ -0,0 +1,406 @@ +#!/bin/bash +set -eo pipefail +# -e Exit immediately if a command exits with a non-zero status. +# -o pipefail the return value of a pipeline is the status of the last command +# to exit with a non-zero status, or zero if no command exited with a non-zero status + +CONFIG_HASH=$(head -n 1 /CONFIG_HASH) + +ERROR="\x1b[1;31m" +DEFAULT="\x1b[0m" + +# logging functions +log() { + local level="$1"; shift + local type="$1"; shift + printf "[$level$type$DEFAULT]: $*\n" +} +error_log() { + log "$ERROR" "$@" >&2 + exit 1 +} + +# if command starts with an option, prepend supertokens start +if [ "${1}" = 'dev' -o "${1}" = "production" -o "${1:0:2}" = "--" ]; then + # set -- supertokens start "$@" + set -- supertokens start "$@" + # check if --foreground option is passed or not + if [[ "$*" != *--foreground* ]] + then + set -- "$@" --foreground + fi +fi + +CONFIG_FILE=/usr/lib/supertokens/config.yaml +TEMP_LOCATION_WHEN_READONLY=/lib/supertokens/temp/ +mkdir -p $TEMP_LOCATION_WHEN_READONLY +CONFIG_MD5SUM="$(md5sum /usr/lib/supertokens/config.yaml | awk '{ print $1 }')" + +# always assuming read-only + +#changing where the config file is written +ORIGINAL_CONFIG=$CONFIG_FILE +CONFIG_FILE="${TEMP_LOCATION_WHEN_READONLY}config.yaml" +cat $ORIGINAL_CONFIG >> $CONFIG_FILE +#required by JNA +export _JAVA_OPTIONS=-Djava.io.tmpdir=$TEMP_LOCATION_WHEN_READONLY +#make sure the CLI knows which config file to pass to the core +set -- "$@" --with-config="$CONFIG_FILE" --with-temp-dir="$TEMP_LOCATION_WHEN_READONLY" --foreground + + +if [ "$CONFIG_HASH" = "$CONFIG_MD5SUM" ] +then + echo "" >> $CONFIG_FILE + echo "host: 0.0.0.0" >> $CONFIG_FILE + echo "postgresql_config_version: 0" >> $CONFIG_FILE + + # verify api keys are passed + if [ ! -z $API_KEYS ] + then + echo "api_keys: $API_KEYS" >> $CONFIG_FILE + fi + + # verify postgresql user name is passed + if [ ! -z $POSTGRESQL_USER ] + then + echo "postgresql_user: $POSTGRESQL_USER" >> $CONFIG_FILE + fi + + if [ ! -z $POSTGRESQL_PASSWORD_FILE ] + then + POSTGRESQL_PASSWORD=$(cat "$POSTGRESQL_PASSWORD_FILE") + export POSTGRESQL_PASSWORD + fi + + # verify postgresql password is passed + if [ ! -z $POSTGRESQL_PASSWORD ] + then + echo "postgresql_password: $POSTGRESQL_PASSWORD" >> $CONFIG_FILE + fi + + # check if supertokens port is passed + if [ ! -z $SUPERTOKENS_PORT ] + then + echo "port: $SUPERTOKENS_PORT" >> $CONFIG_FILE + fi + + # check if access token validity is passed + if [ ! -z $ACCESS_TOKEN_VALIDITY ] + then + echo "access_token_validity: $ACCESS_TOKEN_VALIDITY" >> $CONFIG_FILE + fi + + # check if access token blacklisting is passed + if [ ! -z $ACCESS_TOKEN_BLACKLISTING ] + then + echo "access_token_blacklisting: $ACCESS_TOKEN_BLACKLISTING" >> $CONFIG_FILE + fi + + # check if access token signing key dynamic is passed + if [ ! -z $ACCESS_TOKEN_SIGNING_KEY_DYNAMIC ] + then + echo "access_token_signing_key_dynamic: $ACCESS_TOKEN_SIGNING_KEY_DYNAMIC" >> $CONFIG_FILE + fi + + # check if access token signing key update interval is passed + if [ ! -z $ACCESS_TOKEN_DYNAMIC_SIGNING_KEY_UPDATE_INTERVAL ] + then + echo "access_token_dynamic_signing_key_update_interval: $ACCESS_TOKEN_DYNAMIC_SIGNING_KEY_UPDATE_INTERVAL" >> $CONFIG_FILE + fi + + # check if refresh token validity is passed + if [ ! -z $REFRESH_TOKEN_VALIDITY ] + then + echo "refresh_token_validity: $REFRESH_TOKEN_VALIDITY" >> $CONFIG_FILE + fi + + if [ ! -z $PASSWORD_RESET_TOKEN_LIFETIME ] + then + echo "password_reset_token_lifetime: $PASSWORD_RESET_TOKEN_LIFETIME" >> $CONFIG_FILE + fi + + if [ ! -z $EMAIL_VERIFICATION_TOKEN_LIFETIME ] + then + echo "email_verification_token_lifetime: $EMAIL_VERIFICATION_TOKEN_LIFETIME" >> $CONFIG_FILE + fi + + if [ ! -z $PASSWORDLESS_MAX_CODE_INPUT_ATTEMPTS ] + then + echo "passwordless_max_code_input_attempts: $PASSWORDLESS_MAX_CODE_INPUT_ATTEMPTS" >> $CONFIG_FILE + fi + + if [ ! -z $PASSWORDLESS_CODE_LIFETIME ] + then + echo "passwordless_code_lifetime: $PASSWORDLESS_CODE_LIFETIME" >> $CONFIG_FILE + fi + + if [ ! -z $BASE_PATH ] + then + echo "base_path: $BASE_PATH" >> $CONFIG_FILE + fi + + if [ ! -z $PASSWORD_HASHING_ALG ] + then + echo "password_hashing_alg: $PASSWORD_HASHING_ALG" >> $CONFIG_FILE + fi + + if [ ! -z $ARGON2_ITERATIONS ] + then + echo "argon2_iterations: $ARGON2_ITERATIONS" >> $CONFIG_FILE + fi + + if [ ! -z $ARGON2_MEMORY_KB ] + then + echo "argon2_memory_kb: $ARGON2_MEMORY_KB" >> $CONFIG_FILE + fi + + if [ ! -z $ARGON2_PARALLELISM ] + then + echo "argon2_parallelism: $ARGON2_PARALLELISM" >> $CONFIG_FILE + fi + + if [ ! -z $ARGON2_HASHING_POOL_SIZE ] + then + echo "argon2_hashing_pool_size: $ARGON2_HASHING_POOL_SIZE" >> $CONFIG_FILE + fi + + if [ ! -z $BCRYPT_LOG_ROUNDS ] + then + echo "bcrypt_log_rounds: $BCRYPT_LOG_ROUNDS" >> $CONFIG_FILE + fi + + if [ ! -z $FIREBASE_PASSWORD_HASHING_SIGNER_KEY ] + then + echo "firebase_password_hashing_signer_key: $FIREBASE_PASSWORD_HASHING_SIGNER_KEY" >> $CONFIG_FILE + fi + + if [ ! -z $FIREBASE_PASSWORD_HASHING_POOL_SIZE ] + then + echo "firebase_password_hashing_pool_size: $FIREBASE_PASSWORD_HASHING_POOL_SIZE" >> $CONFIG_FILE + fi + + if [ ! -z $LOG_LEVEL ] + then + echo "log_level: $LOG_LEVEL" >> $CONFIG_FILE + fi + + if [ ! -z $IP_ALLOW_REGEX ] + then + echo "ip_allow_regex: $IP_ALLOW_REGEX" >> $CONFIG_FILE + fi + + if [ ! -z $IP_DENY_REGEX ] + then + echo "ip_deny_regex: $IP_DENY_REGEX" >> $CONFIG_FILE + fi + + if [ ! -z $TOTP_MAX_ATTEMPTS ] + then + echo "totp_max_attempts: $TOTP_MAX_ATTEMPTS" >> $CONFIG_FILE + fi + + if [ ! -z $TOTP_RATE_LIMIT_COOLDOWN_SEC ] + then + echo "totp_rate_limit_cooldown_sec: $TOTP_RATE_LIMIT_COOLDOWN_SEC" >> $CONFIG_FILE + fi + + if [ ! -z $SUPERTOKENS_SAAS_SECRET ] + then + echo "supertokens_saas_secret: $SUPERTOKENS_SAAS_SECRET" >> $CONFIG_FILE + fi + + if [ ! -z $SUPERTOKENS_MAX_CDI_VERSION ] + then + echo "supertokens_max_cdi_version: $SUPERTOKENS_MAX_CDI_VERSION" >> $CONFIG_FILE + fi + + # check if info log path is not passed + if [ ! -z $INFO_LOG_PATH ] + then + if [[ ! -f $INFO_LOG_PATH ]] + then + touch $INFO_LOG_PATH + fi + echo "info_log_path: $INFO_LOG_PATH" >> $CONFIG_FILE + else + echo "info_log_path: null" >> $CONFIG_FILE + fi + + # check if error log path is passed + if [ ! -z $ERROR_LOG_PATH ] + then + if [[ ! -f $ERROR_LOG_PATH ]] + then + touch $ERROR_LOG_PATH + fi + echo "error_log_path: $ERROR_LOG_PATH" >> $CONFIG_FILE + else + echo "error_log_path: null" >> $CONFIG_FILE + fi + + # check if max server pool size is passed + if [ ! -z $MAX_SERVER_POOL_SIZE ] + then + echo "max_server_pool_size: $MAX_SERVER_POOL_SIZE" >> $CONFIG_FILE + fi + + # check if telemetry config is passed + if [ ! -z $DISABLE_TELEMETRY ] + then + echo "disable_telemetry: $DISABLE_TELEMETRY" >> $CONFIG_FILE + fi + + # check if max server pool size is passed + if [ ! -z $POSTGRESQL_CONNECTION_POOL_SIZE ] + then + echo "postgresql_connection_pool_size: $POSTGRESQL_CONNECTION_POOL_SIZE" >> $CONFIG_FILE + fi + + # check if postgresql host is passed + if [ ! -z $POSTGRESQL_HOST ] + then + echo "postgresql_host: $POSTGRESQL_HOST" >> $CONFIG_FILE + fi + + # check if postgresql port is passed + if [ ! -z $POSTGRESQL_PORT ] + then + echo "postgresql_port: $POSTGRESQL_PORT" >> $CONFIG_FILE + fi + + # check if postgresql database name is passed + if [ ! -z $POSTGRESQL_DATABASE_NAME ] + then + echo "postgresql_database_name: $POSTGRESQL_DATABASE_NAME" >> $CONFIG_FILE + fi + + # check if postgresql table schema is passed + if [ ! -z $POSTGRESQL_TABLE_SCHEMA ] + then + echo "postgresql_table_schema: $POSTGRESQL_TABLE_SCHEMA" >> $CONFIG_FILE + fi + + # check if postgresql table name prefix is passed + if [ ! -z $POSTGRESQL_TABLE_NAMES_PREFIX ] + then + echo "postgresql_table_names_prefix: $POSTGRESQL_TABLE_NAMES_PREFIX" >> $CONFIG_FILE + fi + + if [ ! -z $POSTGRESQL_CONNECTION_URI ] + then + echo "postgresql_connection_uri: $POSTGRESQL_CONNECTION_URI" >> $CONFIG_FILE + fi + + # THE CONFIGS BELOW ARE DEPRECATED---------------- + + # check if postgresql key value table name is passed + if [ ! -z $POSTGRESQL_KEY_VALUE_TABLE_NAME ] + then + echo "postgresql_key_value_table_name: $POSTGRESQL_KEY_VALUE_TABLE_NAME" >> $CONFIG_FILE + fi + + # check if postgresql session info table name is passed + if [ ! -z $POSTGRESQL_SESSION_INFO_TABLE_NAME ] + then + echo "postgresql_session_info_table_name: $POSTGRESQL_SESSION_INFO_TABLE_NAME" >> $CONFIG_FILE + fi + + # check if postgresql emailpassword user table name is passed + if [ ! -z $POSTGRESQL_EMAILPASSWORD_USERS_TABLE_NAME ] + then + echo "postgresql_emailpassword_users_table_name: $POSTGRESQL_EMAILPASSWORD_USERS_TABLE_NAME" >> $CONFIG_FILE + fi + + # check if postgresql emailpassword password reset table name is passed + if [ ! -z $POSTGRESQL_EMAILPASSWORD_PSWD_RESET_TOKENS_TABLE_NAME ] + then + echo "postgresql_emailpassword_pswd_reset_tokens_table_name: $POSTGRESQL_EMAILPASSWORD_PSWD_RESET_TOKENS_TABLE_NAME" >> $CONFIG_FILE + fi + + # check if postgresql email verification tokens table name is passed + if [ ! -z $POSTGRESQL_EMAILVERIFICATION_TOKENS_TABLE_NAME ] + then + echo "postgresql_emailverification_tokens_table_name: $POSTGRESQL_EMAILVERIFICATION_TOKENS_TABLE_NAME" >> $CONFIG_FILE + fi + + # check if postgresql verified emails table name is passed + if [ ! -z $POSTGRESQL_EMAILVERIFICATION_VERIFIED_EMAILS_TABLE_NAME ] + then + echo "postgresql_emailverification_verified_emails_table_name: $POSTGRESQL_EMAILVERIFICATION_VERIFIED_EMAILS_TABLE_NAME" >> $CONFIG_FILE + fi + + if [ ! -z $POSTGRESQL_THIRDPARTY_USERS_TABLE_NAME ] + then + echo "postgresql_thirdparty_users_table_name: $POSTGRESQL_THIRDPARTY_USERS_TABLE_NAME" >> $CONFIG_FILE + fi + + if [ ! -z $POSTGRESQL_IDLE_CONNECTION_TIMEOUT ] + then + echo "postgresql_idle_connection_timeout: $POSTGRESQL_IDLE_CONNECTION_TIMEOUT" >> $CONFIG_FILE + fi + + if [ ! -z $POSTGRESQL_MINIMUM_IDLE_CONNECTIONS ] + then + echo "postgresql_minimum_idle_connections: $POSTGRESQL_MINIMUM_IDLE_CONNECTIONS" >> $CONFIG_FILE + fi + + if [ ! -z $SUPERTOKENS_SAAS_LOAD_ONLY_CUD ] + then + echo "supertokens_saas_load_only_cud: $SUPERTOKENS_SAAS_LOAD_ONLY_CUD" >> $CONFIG_FILE + fi + + if [ ! -z $OAUTH_PROVIDER_PUBLIC_SERVICE_URL ] + then + echo "oauth_provider_public_service_url: $OAUTH_PROVIDER_PUBLIC_SERVICE_URL" >> $CONFIG_FILE + fi + + if [ ! -z $OAUTH_PROVIDER_ADMIN_SERVICE_URL ] + then + echo "oauth_provider_admin_service_url: $OAUTH_PROVIDER_ADMIN_SERVICE_URL" >> $CONFIG_FILE + fi + + if [ ! -z $OAUTH_PROVIDER_CONSENT_LOGIN_BASE_URL ] + then + echo "oauth_provider_consent_login_base_url: $OAUTH_PROVIDER_CONSENT_LOGIN_BASE_URL" >> $CONFIG_FILE + fi + + if [ ! -z $OAUTH_PROVIDER_URL_CONFIGURED_IN_OAUTH_PROVIDER ] + then + echo "oauth_provider_url_configured_in_oauth_provider: $OAUTH_PROVIDER_URL_CONFIGURED_IN_OAUTH_PROVIDER" >> $CONFIG_FILE + fi + + if [ ! -z $OAUTH_CLIENT_SECRET_ENCRYPTION_KEY ] + then + echo "oauth_client_secret_encryption_key: $OAUTH_CLIENT_SECRET_ENCRYPTION_KEY" >> $CONFIG_FILE + fi + + if [ ! -z $BULK_MIGRATION_PARALLELISM ] + then + echo "bulk_migration_parallelism: $BULK_MIGRATION_PARALLELISM" >> $CONFIG_FILE + fi + + if [ ! -z $BULK_MIGRATION_BATCH_SIZE ] + then + echo "bulk_migration_batch_size: $BULK_MIGRATION_BATCH_SIZE" >> $CONFIG_FILE + fi + + if [ ! -z $WEBAUTHN_RECOVER_ACCOUNT_TOKEN_LIFETIME ] + then + echo "webauthn_recover_account_token_lifetime: $WEBAUTHN_RECOVER_ACCOUNT_TOKEN_LIFETIME" >> $CONFIG_FILE + fi + +fi + +# check if no options has been passed to docker run +if [[ "$@" == "supertokens start" ]] +then + set -- "$@" --with-config="$CONFIG_FILE" --foreground +fi + + +# If container is started as root user, restart as dedicated supertokens user +if [ "$(id -u)" = "0" ] && [ "$1" = 'supertokens' ]; then + exec gosu supertokens "$@" +else + exec "$@" +fi From ce8156a04b8b8b30269f329ebe9a5af382772b1a Mon Sep 17 00:00:00 2001 From: Sattvik Date: Tue, 8 Apr 2025 12:50:20 +0530 Subject: [PATCH 12/17] fix: dockerfile --- .github/helpers/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/helpers/docker/Dockerfile b/.github/helpers/docker/Dockerfile index 32c3f360..c514ed95 100644 --- a/.github/helpers/docker/Dockerfile +++ b/.github/helpers/docker/Dockerfile @@ -31,7 +31,7 @@ RUN set -x \ && apt-get purge -y --auto-remove wget COPY --from=tmp --chown=supertokens /usr/lib/supertokens /usr/lib/supertokens COPY --from=tmp --chown=supertokens /usr/bin/supertokens /usr/bin/supertokens -COPY ./supertokens-core/.github/helpers/docker/postgresql/docker-entrypoint.sh /usr/local/bin/ +COPY ./supertokens-postgresql-plugin/.github/helpers/docker/postgresql/docker-entrypoint.sh /usr/local/bin/ RUN echo "$(md5sum /usr/lib/supertokens/config.yaml | awk '{ print $1 }')" >> /CONFIG_HASH RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat EXPOSE 3567 From 504a816f03b8cd1e47f612c9c35b30e35d3f3a4f Mon Sep 17 00:00:00 2001 From: Sattvik Date: Tue, 8 Apr 2025 12:54:57 +0530 Subject: [PATCH 13/17] fix: dockerfile --- .github/helpers/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/helpers/docker/Dockerfile b/.github/helpers/docker/Dockerfile index c514ed95..0e1867b9 100644 --- a/.github/helpers/docker/Dockerfile +++ b/.github/helpers/docker/Dockerfile @@ -31,7 +31,7 @@ RUN set -x \ && apt-get purge -y --auto-remove wget COPY --from=tmp --chown=supertokens /usr/lib/supertokens /usr/lib/supertokens COPY --from=tmp --chown=supertokens /usr/bin/supertokens /usr/bin/supertokens -COPY ./supertokens-postgresql-plugin/.github/helpers/docker/postgresql/docker-entrypoint.sh /usr/local/bin/ +COPY ./supertokens-root/supertokens-postgresql-plugin/.github/helpers/docker/postgresql/docker-entrypoint.sh /usr/local/bin/ RUN echo "$(md5sum /usr/lib/supertokens/config.yaml | awk '{ print $1 }')" >> /CONFIG_HASH RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat EXPOSE 3567 From 828548d0ed59d30873b079a3f91c9d285090624f Mon Sep 17 00:00:00 2001 From: Sattvik Date: Tue, 8 Apr 2025 12:56:55 +0530 Subject: [PATCH 14/17] fix: dockerfile --- .github/helpers/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/helpers/docker/Dockerfile b/.github/helpers/docker/Dockerfile index 0e1867b9..4cc45f75 100644 --- a/.github/helpers/docker/Dockerfile +++ b/.github/helpers/docker/Dockerfile @@ -31,7 +31,7 @@ RUN set -x \ && apt-get purge -y --auto-remove wget COPY --from=tmp --chown=supertokens /usr/lib/supertokens /usr/lib/supertokens COPY --from=tmp --chown=supertokens /usr/bin/supertokens /usr/bin/supertokens -COPY ./supertokens-root/supertokens-postgresql-plugin/.github/helpers/docker/postgresql/docker-entrypoint.sh /usr/local/bin/ +COPY ./supertokens-postgresql-plugin/.github/helpers/docker/docker-entrypoint.sh /usr/local/bin/ RUN echo "$(md5sum /usr/lib/supertokens/config.yaml | awk '{ print $1 }')" >> /CONFIG_HASH RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat EXPOSE 3567 From 100e78eb4fddd1632f1323ea3d472523ac4cc6a5 Mon Sep 17 00:00:00 2001 From: Sattvik Date: Tue, 8 Apr 2025 13:23:53 +0530 Subject: [PATCH 15/17] fix: changelog and version --- CHANGELOG.md | 4 ++++ build.gradle | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a28f568e..c4d4815a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [8.1.3] + +- Migrates to github actions + ## [8.1.2] - Adds user_id index to the user roles table diff --git a/build.gradle b/build.gradle index a46c3418..4dd77cc3 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java-library' } -version = "8.1.2" +version = "8.1.3" repositories { mavenCentral() From 13a53ca3db68ad30322468c6db2daccd15f8d441 Mon Sep 17 00:00:00 2001 From: Sattvik Date: Wed, 9 Apr 2025 14:49:50 +0530 Subject: [PATCH 16/17] fix: ee --- .github/helpers/docker/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/helpers/docker/Dockerfile b/.github/helpers/docker/Dockerfile index 4cc45f75..7da98bbb 100644 --- a/.github/helpers/docker/Dockerfile +++ b/.github/helpers/docker/Dockerfile @@ -8,6 +8,7 @@ ADD ./cli ./cli ADD ./core ./core ADD ./plugin-interface ./plugin-interface ADD ./plugin ./plugin +ADD ./ee ./ee ADD ./config.yaml ./config.yaml ADD ./version.yaml ./version.yaml From 272cb211fb4ae631dceb8f68f76bfe7f3262cb42 Mon Sep 17 00:00:00 2001 From: Sattvik Chakravarthy Date: Mon, 28 Apr 2025 13:03:02 +0530 Subject: [PATCH 17/17] fix: dockerfile --- .github/helpers/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/helpers/docker/Dockerfile b/.github/helpers/docker/Dockerfile index 7da98bbb..2b935c1f 100644 --- a/.github/helpers/docker/Dockerfile +++ b/.github/helpers/docker/Dockerfile @@ -3,7 +3,7 @@ WORKDIR /build RUN apt-get update && apt-get install -y curl wget zip RUN wget https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_linux-x64_bin.tar.gz RUN tar -xzvf openjdk-15.0.1_linux-x64_bin.tar.gz -RUN ls && mv jdk-15.0.1 jre +RUN ls && mv jdk-15.0.1 jre && rm jre/lib/src.zip ADD ./cli ./cli ADD ./core ./core ADD ./plugin-interface ./plugin-interface