From a6086528423ec82f00dd833a50f0b565a597bcd9 Mon Sep 17 00:00:00 2001 From: Jamie Li Date: Sat, 16 Dec 2023 21:47:45 +0800 Subject: [PATCH] Merge release 2.5.2 to `main` branch (#1238) ### Description Merge release 2.5.2 to `main` branch ### Context Release process. ### Testing - `./gradlew test` --- .../on_release_created_or_updated.yml | 26 +- .github/workflows/sub_essential_tests.yml | 3 +- .github/workflows/sub_extended_tests.yml | 146 +++++++- ...un.xml => Custody Server_ custody.run.xml} | 2 +- ... Event Processing Server_ default.run.xml} | 2 +- ...n.xml => Platform Server_ default.run.xml} | 2 +- ....xml => Reference Server_ default.run.xml} | 2 +- ... Java Reference Server - no Docker.run.xml | 10 - ...er.run.xml => Sep Server_ default.run.xml} | 2 +- ....xml => Stellar Observer_ default.run.xml} | 4 +- ...Test - End2End Test - no fullstack.run.xml | 34 -- ...st - End2End Test - with fullstack.run.xml | 34 -- ...d2End with RPC Test - no fullstack.run.xml | 34 -- ...End with RPC Test - with fullstack.run.xml | 34 -- ...blocks End2End Test - no fullstack.run.xml | 38 -- ...ocks End2End Test - with fullstack.run.xml | 38 -- ... - Integration Test - no fullstack.run.xml | 34 -- ... Integration Test - with fullstack.run.xml | 34 -- ...in Reference Server - no fullstack.run.xml | 19 - .../Test Profile_ auth-apikey-custody.run.xml | 14 + ...Test Profile_ auth-apikey-platform.run.xml | 14 + .run/Test Profile_ auth-jwt-custody.run.xml | 14 + .run/Test Profile_ auth-jwt-platform.run.xml | 14 + .run/Test Profile_ custody.run.xml | 14 + ....run.xml => Test Profile_ default.run.xml} | 4 +- .run/Test Profile_ rpc.run.xml | 14 + ... Wallet Reference Server_ default.run.xml} | 2 +- .../api/callback/PutCustomerRequest.java | 4 +- .../sep/sep12/Sep12PutCustomerRequest.java | 5 +- build.gradle.kts | 2 +- .../org/stellar/anchor/sep10/Sep10Helper.java | 10 +- .../stellar/anchor/sep12/Sep12Service.java | 29 ++ .../stellar/anchor/sep24/Sep24Service.java | 1 - .../org/stellar/anchor/util/Sep1Helper.java | 20 +- .../stellar/anchor/sep12/Sep12ServiceTest.kt | 40 ++ .../stellar/anchor/sep38/Sep38ServiceTest.kt | 3 +- .../kotlin/org/stellar/anchor/util/LogTest.kt | 34 +- .../org/stellar/anchor/util/NetUtilTest.kt | 7 + .../org/stellar/anchor/util/SepHelperTest.kt | 32 +- .../A - Development Environment.md | 111 +++--- docs/README.md | 2 +- .../platform/e2etest/Sep24End2EndTests.kt | 56 +-- .../platform/e2etest}/Sep31End2EndTests.kt | 130 ++++--- .../platform/e2etest/Sep6End2EndTest.kt | 6 +- .../platform/integrationtest/Sep12Tests.kt | 1 - .../platform/integrationtest/Sep24Tests.kt | 2 - .../platform/integrationtest/Sep31Tests.kt | 3 +- extended-tests/build.gradle.kts | 12 +- .../platform/AbstractAuthIntegrationTest.kt | 42 --- .../platform/AbstractIntegrationTest.kt | 73 ---- .../AnchorPlatformApiRpcEnd2EndTest.kt | 49 --- .../AnchorPlatformCustodyIntegrationTest.kt | 54 --- .../anchor/platform/DatabaseMigrationTests.kt | 36 -- .../auth/AbstractAuthIntegrationTest.kt | 48 +++ .../apikey/custody/AuthApiKeyCustodyTests.kt} | 44 +-- .../platform/AuthApiKeyPlatformTests.kt} | 39 +- .../auth/jwt/custody/AuthJwtCustodyTests.kt} | 36 +- .../jwt/platform/AuthJwtPlatformTests.kt} | 70 +--- .../custody}/CustodyApiTests.kt | 235 +++++++----- .../custody}/PlatformApiCustodyTests.kt | 76 ++-- .../extendedtest/rpc/RpcEnd2EndTests.kt | 46 +++ .../suite/AuthApikeyCustodyTestSuite.kt | 8 + .../suite/AuthApikeyPlatformTestSuite.kt | 8 + .../platform/suite/AuthJwtCustodyTestSuite.kt | 8 + .../suite/AuthJwtPlatformTestSuite.kt | 8 + .../anchor/platform/suite/CustodyTestSuite.kt | 6 + .../anchor/platform/suite/RpcTestSuite.kt | 6 + .../platform/test/ReferenceServerTests.kt | 26 -- .../platform/test/Sep24BaseEnd2EndTest.kt | 344 ------------------ .../reference/dao/CustomerRepository.kt | 19 +- .../org/stellar/reference/dao/Customers.kt | 4 +- .../org/stellar/reference/model/Customer.kt | 6 +- lib-util/build.gradle.kts | 1 + .../org/stellar/anchor/util/FileUtil.java | 3 - .../org/stellar/anchor/util}/RSAUtil.java | 42 ++- .../stellar/anchor/client/CustodyApiClient.kt | 16 +- .../org/stellar/anchor/client/Sep38Client.kt | 2 - .../org/stellar/anchor/client/SepClient.kt | 11 +- .../org/stellar/anchor/util/FileUtilTest.kt | 0 .../org/stellar/anchor}/util/RSAUtilTest.kt | 117 +++--- .../src/test/resources/test_resource.txt | 0 .../platform/config/FireblocksConfig.java | 8 +- .../anchor/platform/config/MetricConfig.java | 2 +- .../platform/configurator/ConfigReader.java | 3 - .../platform/controller/HealthController.java | 5 +- .../custody/CustodyHealthController.java | 5 +- .../custody/CustodyPaymentController.java | 2 + .../custody/CustodyTransactionController.java | 3 + .../custody/CustodyWebhookController.java | 3 +- .../observer/ObserverHealthController.java | 5 +- .../platform/PlatformController.java | 6 +- .../platform/PlatformHealthController.java | 5 +- .../platform/PlatformRpcController.java | 5 +- .../controller/sep/Sep10Controller.java | 6 +- .../controller/sep/Sep12Controller.java | 7 +- .../controller/sep/Sep1Controller.java | 3 + .../controller/sep/Sep24Controller.java | 12 +- .../controller/sep/Sep31Controller.java | 3 + .../controller/sep/Sep38Controller.java | 5 + .../controller/sep/Sep6Controller.java | 8 + .../controller/sep/SepHealthController.java | 5 +- .../fireblocks/FireblocksEventService.java | 5 +- .../anchor/platform/LogAppenderTest.kt | 83 ----- .../callback/RestCustomerIntegrationTest.kt | 2 - .../custody/CustodyEventServiceTest.kt | 3 +- .../fireblocks/FireblocksEventServiceTest.kt | 6 +- .../platform/service/CustodyServiceTest.kt | 2 - .../service/TransactionServiceTest.kt | 2 - service-runner/build.gradle.kts | 10 + .../anchor/platform/TestProfileRunner.kt | 9 +- .../platform/run_profiles/RunCustodyServer.kt | 2 +- ...unSEP24NoFrontend.kt => RunTestProfile.kt} | 12 +- .../profiles/auth-apikey-custody/config.env | 17 + .../profiles/auth-apikey-custody/test.env | 3 + .../profiles/auth-apikey-platform/config.env | 1 + .../profiles/auth-apikey-platform/test.env | 2 + .../profiles/auth-jwt-custody/config.env | 19 + .../profiles/auth-jwt-custody/test.env | 3 + .../profiles/auth-jwt-platform/config.env | 14 + .../profiles/auth-jwt-platform/test.env | 2 + .../{default-custody => custody}/config.env | 1 + .../main/resources/profiles/custody/test.env | 2 + .../profiles/default-custody/test.env | 1 - .../main/resources/profiles/default/test.env | 6 +- .../profiles/{default-rpc => rpc}/config.env | 0 .../profiles/{default-rpc => rpc}/test.env | 0 .../unused-default-custody-rpc/config.env | 61 ---- .../unused-default-custody-rpc/test.env | 16 - 128 files changed, 1190 insertions(+), 1776 deletions(-) rename .run/{Run - Custody Server - no Docker.run.xml => Custody Server_ custody.run.xml} (77%) rename .run/{Run - Event Processing Server - no Docker .run.xml => Event Processing Server_ default.run.xml} (76%) rename .run/{Run - Platform Server - no Docker.run.xml => Platform Server_ default.run.xml} (77%) rename .run/{Run - Kotlin Reference Server - no Docker.run.xml => Reference Server_ default.run.xml} (81%) delete mode 100644 .run/Run - Java Reference Server - no Docker.run.xml rename .run/{Run - Sep Server - no Docker.run.xml => Sep Server_ default.run.xml} (78%) rename .run/{Run - All Servers - with Docker.run.xml => Stellar Observer_ default.run.xml} (68%) delete mode 100644 .run/Test - End2End Test - no fullstack.run.xml delete mode 100644 .run/Test - End2End Test - with fullstack.run.xml delete mode 100644 .run/Test - End2End with RPC Test - no fullstack.run.xml delete mode 100644 .run/Test - End2End with RPC Test - with fullstack.run.xml delete mode 100644 .run/Test - Fireblocks End2End Test - no fullstack.run.xml delete mode 100644 .run/Test - Fireblocks End2End Test - with fullstack.run.xml delete mode 100644 .run/Test - Integration Test - no fullstack.run.xml delete mode 100644 .run/Test - Integration Test - with fullstack.run.xml delete mode 100644 .run/Test - Kotlin Reference Server - no fullstack.run.xml create mode 100644 .run/Test Profile_ auth-apikey-custody.run.xml create mode 100644 .run/Test Profile_ auth-apikey-platform.run.xml create mode 100644 .run/Test Profile_ auth-jwt-custody.run.xml create mode 100644 .run/Test Profile_ auth-jwt-platform.run.xml create mode 100644 .run/Test Profile_ custody.run.xml rename .run/{Run - All Servers - no Docker.run.xml => Test Profile_ default.run.xml} (74%) create mode 100644 .run/Test Profile_ rpc.run.xml rename .run/{Run - Wallet Reference Server - no Docker.run.xml => Wallet Reference Server_ default.run.xml} (76%) rename {extended-tests/src/test/kotlin/org/stellar/anchor/platform/test => essential-tests/src/testFixtures/kotlin/org/stellar/anchor/platform/e2etest}/Sep31End2EndTests.kt (68%) delete mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/AbstractAuthIntegrationTest.kt delete mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/AbstractIntegrationTest.kt delete mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/AnchorPlatformApiRpcEnd2EndTest.kt delete mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/AnchorPlatformCustodyIntegrationTest.kt delete mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/DatabaseMigrationTests.kt create mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/extendedtest/auth/AbstractAuthIntegrationTest.kt rename extended-tests/src/test/kotlin/org/stellar/anchor/platform/{CustodyApiKeyAuthIntegrationTest.kt => extendedtest/auth/apikey/custody/AuthApiKeyCustodyTests.kt} (54%) rename extended-tests/src/test/kotlin/org/stellar/anchor/platform/{PlatformApiKeyAuthIntegrationTest.kt => extendedtest/auth/apikey/platform/AuthApiKeyPlatformTests.kt} (66%) rename extended-tests/src/test/kotlin/org/stellar/anchor/platform/{CustodyJwtAuthIntegrationTest.kt => extendedtest/auth/jwt/custody/AuthJwtCustodyTests.kt} (75%) rename extended-tests/src/test/kotlin/org/stellar/anchor/platform/{PlatformJwtAuthIntegrationTest.kt => extendedtest/auth/jwt/platform/AuthJwtPlatformTests.kt} (71%) rename extended-tests/src/test/kotlin/org/stellar/anchor/platform/{test => extendedtest/custody}/CustodyApiTests.kt (78%) rename extended-tests/src/test/kotlin/org/stellar/anchor/platform/{test => extendedtest/custody}/PlatformApiCustodyTests.kt (96%) create mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/extendedtest/rpc/RpcEnd2EndTests.kt create mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/suite/AuthApikeyCustodyTestSuite.kt create mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/suite/AuthApikeyPlatformTestSuite.kt create mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/suite/AuthJwtCustodyTestSuite.kt create mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/suite/AuthJwtPlatformTestSuite.kt create mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/suite/CustodyTestSuite.kt create mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/suite/RpcTestSuite.kt delete mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/test/ReferenceServerTests.kt delete mode 100644 extended-tests/src/test/kotlin/org/stellar/anchor/platform/test/Sep24BaseEnd2EndTest.kt rename {core => lib-util}/src/main/java/org/stellar/anchor/util/FileUtil.java (90%) rename {platform/src/main/java/org/stellar/anchor/platform/utils => lib-util/src/main/java/org/stellar/anchor/util}/RSAUtil.java (74%) rename {core => lib-util}/src/test/kotlin/org/stellar/anchor/util/FileUtilTest.kt (100%) rename {platform/src/test/kotlin/org/stellar/anchor/platform => lib-util/src/test/kotlin/org/stellar/anchor}/util/RSAUtilTest.kt (59%) rename {core => lib-util}/src/test/resources/test_resource.txt (100%) delete mode 100644 platform/src/test/kotlin/org/stellar/anchor/platform/LogAppenderTest.kt rename service-runner/src/main/kotlin/org/stellar/anchor/platform/run_profiles/{RunSEP24NoFrontend.kt => RunTestProfile.kt} (53%) create mode 100644 service-runner/src/main/resources/profiles/auth-apikey-custody/config.env create mode 100644 service-runner/src/main/resources/profiles/auth-apikey-custody/test.env create mode 100644 service-runner/src/main/resources/profiles/auth-apikey-platform/config.env create mode 100644 service-runner/src/main/resources/profiles/auth-apikey-platform/test.env create mode 100644 service-runner/src/main/resources/profiles/auth-jwt-custody/config.env create mode 100644 service-runner/src/main/resources/profiles/auth-jwt-custody/test.env create mode 100644 service-runner/src/main/resources/profiles/auth-jwt-platform/config.env create mode 100644 service-runner/src/main/resources/profiles/auth-jwt-platform/test.env rename service-runner/src/main/resources/profiles/{default-custody => custody}/config.env (96%) create mode 100644 service-runner/src/main/resources/profiles/custody/test.env delete mode 100644 service-runner/src/main/resources/profiles/default-custody/test.env rename service-runner/src/main/resources/profiles/{default-rpc => rpc}/config.env (100%) rename service-runner/src/main/resources/profiles/{default-rpc => rpc}/test.env (100%) delete mode 100644 service-runner/src/main/resources/profiles/unused-default-custody-rpc/config.env delete mode 100644 service-runner/src/main/resources/profiles/unused-default-custody-rpc/test.env diff --git a/.github/workflows/on_release_created_or_updated.yml b/.github/workflows/on_release_created_or_updated.yml index b4c2e84b7c..96cfbed2e2 100644 --- a/.github/workflows/on_release_created_or_updated.yml +++ b/.github/workflows/on_release_created_or_updated.yml @@ -9,23 +9,20 @@ jobs: gradle_build: uses: ./.github/workflows/sub_gradle_build.yml - jacoco_report: - needs: [ gradle_build ] - uses: ./.github/workflows/sub_jacoco_report.yml - - essential_tests: - needs: [ gradle_build ] - uses: ./.github/workflows/sub_essential_tests.yml - - extended_tests: - needs: [ gradle_build ] - uses: ./.github/workflows/sub_extended_tests.yml - +# essential_tests: +# needs: [ gradle_build ] +# uses: ./.github/workflows/sub_essential_tests.yml +# +# extended_tests: +# needs: [ gradle_build ] +# uses: ./.github/workflows/sub_extended_tests.yml +# codeql_analysis: uses: ./.github/workflows/sub_codeql_analysis.yml build_and_push_docker_image: - needs: [ gradle_build, essential_tests, extended_tests, codeql_analysis ] + # needs: [ gradle_build, essential_tests, extended_tests, codeql_analysis ] + needs: [ gradle_build, codeql_analysis ] name: Push to DockerHub (tag=stellar/anchor-platform:${{ github.event.release.tag_name }}) runs-on: ubuntu-latest steps: @@ -60,7 +57,8 @@ jobs: complete: if: always() - needs: [ essential_tests, extended_tests, build_and_push_docker_image ] + # needs: [ essential_tests, extended_tests, build_and_push_docker_image ] + needs: [ build_and_push_docker_image ] runs-on: ubuntu-latest steps: - if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') diff --git a/.github/workflows/sub_essential_tests.yml b/.github/workflows/sub_essential_tests.yml index 8423ef8043..c2b238fa1d 100644 --- a/.github/workflows/sub_essential_tests.yml +++ b/.github/workflows/sub_essential_tests.yml @@ -7,8 +7,7 @@ on: jobs: essential_tests: name: Run Essential Tests (Integration Tests, Faster End-2-End Tests, Unit Tests, and Stellar Validation Tools) - runs-on: ubuntu-latest-16-cores - # runs-on: ubuntu-latest + runs-on: ubuntu-latest-8-cores steps: ############################################# # Setup JDK 11 diff --git a/.github/workflows/sub_extended_tests.yml b/.github/workflows/sub_extended_tests.yml index 5717c27e96..f5393ba8f6 100644 --- a/.github/workflows/sub_extended_tests.yml +++ b/.github/workflows/sub_extended_tests.yml @@ -7,7 +7,7 @@ on: jobs: extended_tests: name: Run Extended Tests - runs-on: ubuntu-latest-8-cores + runs-on: ubuntu-latest-16-cores steps: ############################################# # Setup JDK 11 @@ -46,14 +46,148 @@ jobs: ############################################# - - name: Run Extended Tests + - name: Run Zookeeper, Kafka, Postgres, and Sep24 UI with docker-compose + run: docker-compose -f /home/runner/java-stellar-anchor-sdk/service-runner/src/main/resources/docker-compose-test.yaml up -d --build + + # `custody` Tests + - name: Start `custody` configuration + env: + TEST_PROFILE_NAME: custody + run: | + cd /home/runner/java-stellar-anchor-sdk + ./gradlew startServersWithTestProfile & + echo "PID=$!" >> $GITHUB_ENV + + - name: Wait for the sep server to start and get ready + uses: mydea/action-wait-for-api@v1 + with: + url: "http://localhost:8080/.well-known/stellar.toml" + interval: "1" + + - name: Run `custody` configuration tests + env: + TEST_PROFILE_NAME: custody + run: | + cd /home/runner/java-stellar-anchor-sdk + ./gradlew :service-runner:clean :extended-tests:clean :extended-tests:test --tests org.stellar.anchor.platform.suite.CustodyTestSuite + kill -9 $PID + + # `rpc` Tests + - name: Start `rpc` configuration + env: + TEST_PROFILE_NAME: rpc + run: | + cd /home/runner/java-stellar-anchor-sdk + ./gradlew startServersWithTestProfile & + echo "PID=$!" >> $GITHUB_ENV + + - name: Wait for the sep server to start and get ready + uses: mydea/action-wait-for-api@v1 + with: + url: "http://localhost:8080/.well-known/stellar.toml" + interval: "1" + + - name: Run `rpc` configuration tests + env: + TEST_PROFILE_NAME: rpc + run: | + cd /home/runner/java-stellar-anchor-sdk + ./gradlew :extended-tests:test --tests org.stellar.anchor.platform.suite.RpcTestSuite + kill -9 $PID + + # `auth-apikey-custody` Tests + - name: Start `auth-apikey-custody` configuration + env: + TEST_PROFILE_NAME: auth-apikey-custody + run: | + cd /home/runner/java-stellar-anchor-sdk + ./gradlew startServersWithTestProfile & + echo "PID=$!" >> $GITHUB_ENV + + - name: Wait for the custody server to start and get ready + uses: mydea/action-wait-for-api@v1 + with: + url: "http://localhost:8086/health" + interval: "1" + + - name: Run `auth-apikey-custody` configuration tests + env: + TEST_PROFILE_NAME: auth-apikey-custody + run: | + cd /home/runner/java-stellar-anchor-sdk + ./gradlew :extended-tests:test --tests org.stellar.anchor.platform.suite.AuthApikeyCustodyTestSuite + kill -9 $PID + + # `auth-jwt-custody` Tests + - name: Start `auth-jwt-custody` configuration + env: + TEST_PROFILE_NAME: auth-jwt-custody + run: | + cd /home/runner/java-stellar-anchor-sdk + ./gradlew startServersWithTestProfile & + echo "PID=$!" >> $GITHUB_ENV + + - name: Wait for the custody server to start and get ready + uses: mydea/action-wait-for-api@v1 + with: + url: "http://localhost:8086/health" + interval: "1" + + - name: Run `auth-jwt-custody` configuration tests + env: + TEST_PROFILE_NAME: auth-jwt-custody + run: | + cd /home/runner/java-stellar-anchor-sdk + ./gradlew :extended-tests:test --tests org.stellar.anchor.platform.suite.AuthJwtCustodyTestSuite + kill -9 $PID + + # `auth-apikey-platform` Tests + - name: Start `auth-apikey-platform` configuration + env: + TEST_PROFILE_NAME: auth-apikey-platform + run: | + cd /home/runner/java-stellar-anchor-sdk + ./gradlew startServersWithTestProfile & + echo "PID=$!" >> $GITHUB_ENV + + - name: Wait for the platform server to start and get ready + uses: mydea/action-wait-for-api@v1 + with: + url: "http://localhost:8085/health" + expected-status: "403" + interval: "1" + + - name: Run `auth-apikey-platform` configuration tests + env: + TEST_PROFILE_NAME: auth-apikey-platform + run: | + cd /home/runner/java-stellar-anchor-sdk + ./gradlew :extended-tests:test --tests org.stellar.anchor.platform.suite.AuthApikeyPlatformTestSuite + kill -9 $PID + + # `auth-jwt-platform` Tests + - name: Start `auth-jwt-platform` configuration + env: + TEST_PROFILE_NAME: auth-jwt-platform + run: | + cd /home/runner/java-stellar-anchor-sdk + ./gradlew startServersWithTestProfile & + echo "PID=$!" >> $GITHUB_ENV + + - name: Wait for the platform server to start and get ready + uses: mydea/action-wait-for-api@v1 + with: + url: "http://localhost:8085/health" + expected-status: "403" + interval: "1" + + - name: Run `auth-jwt-platform` configuration tests env: - ANCHOR_DOMAIN: http://host.docker.internal:8080 - SEP1_TOML_VALUE: /home/runner/java-stellar-anchor-sdk/service-runner/src/main/resources/config/stellar.host.docker.internal.toml - SEP10_HOME_DOMAIN: host.docker.internal:8080 + TEST_PROFILE_NAME: auth-jwt-platform run: | cd /home/runner/java-stellar-anchor-sdk - ./gradlew extended-tests:test --stacktrace -x spotlessApply -x spotlessKotlinApply -x javadoc -x javadocJar -x sourcesJar -x distTar -x distZip -x shadowJar -x shadowDistZip -x shadowDistTar -x bootDistTar -x bootDistZip + ./gradlew :extended-tests:test --tests org.stellar.anchor.platform.suite.AuthJwtPlatformTestSuite + kill -9 $PID - name: Upload Extended Tests Report if: always() diff --git a/.run/Run - Custody Server - no Docker.run.xml b/.run/Custody Server_ custody.run.xml similarity index 77% rename from .run/Run - Custody Server - no Docker.run.xml rename to .run/Custody Server_ custody.run.xml index e94211a3bb..6d72f93a07 100644 --- a/.run/Run - Custody Server - no Docker.run.xml +++ b/.run/Custody Server_ custody.run.xml @@ -1,5 +1,5 @@ - +