diff --git a/.github/workflows/basyx_test.yml b/.github/workflows/basyx_test.yml new file mode 100644 index 000000000..a7028d95e --- /dev/null +++ b/.github/workflows/basyx_test.yml @@ -0,0 +1,245 @@ +name: Build and Test BaSyx + +on: + pull_request: + branches: [ main ] + paths-ignore: + - '.github/ISSUE_TEMPLATE/**' + - '.github/CODE_OF_CONDUCT.md' + - '.github/CODING_CONVENTIONS.md' + - '.github/CONTRIBUTING.md' + - '.github/dependabot.yml' + - '.github/pull_request_template.md' + - '.github/SECURITY.md' + - 'docs/**' + - 'examples/**' + - 'README.md' + - '.gitattributes' + - '.gitignore' + - 'LICENSE' + - 'NOTICE' + +env: + MVN_ARGS_BUILD_BASYX: -DskipTests -T1C + +jobs: + test-basyx-common: + runs-on: ubuntu-latest + name: BaSyx Core Test + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Start environment + run: docker compose --project-directory ./ci up -d --wait + - name: Build BaSyx + run: mvn clean install ${MVN_ARGS_BUILD_BASYX} + - name: Test AAS Environment + run: mvn test -f "basyx.common/pom.xml" + - name: Stop environment + if: always() + run: docker compose --project-directory ./ci down + test-basyx-aasxfileserver: + runs-on: ubuntu-latest + name: AASX FileServer Test + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Start environment + run: docker compose --project-directory ./ci up -d --wait + - name: Build BaSyx + run: mvn clean install ${MVN_ARGS_BUILD_BASYX} + - name: Test AAS Environment + run: mvn test -f "basyx.aasxfileserver/pom.xml" + - name: Stop environment + if: always() + run: docker compose --project-directory ./ci down + test-basyx-aasenvironment: + runs-on: ubuntu-latest + name: AAS Environment Test + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Start environment + run: docker compose --project-directory ./ci up -d --wait + - name: Build BaSyx + run: mvn clean install ${MVN_ARGS_BUILD_BASYX} + - name: Test AAS Environment + run: mvn test -f "basyx.aasenvironment/pom.xml" + - name: Stop environment + if: always() + run: docker compose --project-directory ./ci down + test-basyx-aasrepository: + runs-on: ubuntu-latest + name: AAS Repository Test + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Start environment + run: docker compose --project-directory ./ci up -d --wait + - name: Build BaSyx + run: mvn clean install ${MVN_ARGS_BUILD_BASYX} + - name: Test AAS Repository + run: mvn test -f "basyx.aasrepository/pom.xml" + - name: Stop environment + if: always() + run: docker compose --project-directory ./ci down + test-basyx-aasservice: + runs-on: ubuntu-latest + name: AAS Service Test + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Start environment + run: docker compose --project-directory ./ci up -d --wait + - name: Build BaSyx + run: mvn clean install ${MVN_ARGS_BUILD_BASYX} + - name: Test AAS Service + run: mvn test -f "basyx.aasservice/pom.xml" + - name: Stop environment + if: always() + run: docker compose --project-directory ./ci down + test-basyx-submodelrepository: + runs-on: ubuntu-latest + name: Submodel Repository Test + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Start environment + run: docker compose --project-directory ./ci up -d --wait + - name: Build BaSyx + run: mvn clean install ${MVN_ARGS_BUILD_BASYX} + - name: Test Submodel Repository + run: mvn test -f "basyx.submodelrepository/pom.xml" + - name: Stop environment + if: always() + run: docker compose --project-directory ./ci down + test-basyx-submodelservice: + runs-on: ubuntu-latest + name: Submodel Service Test + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Start environment + run: docker compose --project-directory ./ci up -d --wait + - name: Build BaSyx + run: mvn clean install ${MVN_ARGS_BUILD_BASYX} + - name: Test Submodel Service + run: mvn test -f "basyx.submodelservice/pom.xml" + - name: Stop environment + if: always() + run: docker compose --project-directory ./ci down + test-basyx-conceptdescriptionrepository: + runs-on: ubuntu-latest + name: Concept Description Repository Test + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Start environment + run: docker compose --project-directory ./ci up -d --wait + - name: Build BaSyx + run: mvn clean install ${MVN_ARGS_BUILD_BASYX} + - name: Test Concept Description Repository + run: mvn test -f "basyx.conceptdescriptionrepository/pom.xml" + - name: Stop environment + if: always() + run: docker compose --project-directory ./ci down + test-basyx-submodelregistry: + runs-on: ubuntu-latest + name: Submodel Registry Test + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Start environment + run: docker compose --project-directory ./ci up -d --wait + - name: Build BaSyx + run: mvn clean install ${MVN_ARGS_BUILD_BASYX} + - name: Test Submodel Registry + run: mvn test -f "basyx.submodelregistry/pom.xml" + - name: Stop environment + if: always() + run: docker compose --project-directory ./ci down + test-basyx-aasregistry: + runs-on: ubuntu-latest + name: AAS Registry Test + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Start environment + run: docker compose --project-directory ./ci up -d --wait + - name: Build BaSyx + run: mvn clean install ${MVN_ARGS_BUILD_BASYX} + - name: Test AAS Registry + run: mvn test -f "basyx.aasregistry/pom.xml" + - name: Stop environment + if: always() + run: docker compose --project-directory ./ci down + test-basyx-aasdiscoveryservice: + runs-on: ubuntu-latest + name: AAS Discovery Service Test + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Start environment + run: docker compose --project-directory ./ci up -d --wait + - name: Build BaSyx + run: mvn clean install ${MVN_ARGS_BUILD_BASYX} + - name: Test AAS Discovery Service + run: mvn test -f "basyx.aasdiscoveryservice/pom.xml" + - name: Stop environment + if: always() + run: docker compose --project-directory ./ci down diff --git a/.github/workflows/docker_test.yml b/.github/workflows/docker_test.yml new file mode 100644 index 000000000..493891620 --- /dev/null +++ b/.github/workflows/docker_test.yml @@ -0,0 +1,417 @@ +# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven + +name: Build and Start Docker Images + +on: + pull_request: + branches: [ main ] + paths-ignore: + - '.github/ISSUE_TEMPLATE/**' + - '.github/CODE_OF_CONDUCT.md' + - '.github/CODING_CONVENTIONS.md' + - '.github/CONTRIBUTING.md' + - '.github/dependabot.yml' + - '.github/pull_request_template.md' + - '.github/SECURITY.md' + - 'docs/**' + - 'examples/**' + - 'README.md' + - '.gitattributes' + - '.gitignore' + - 'LICENSE' + - 'NOTICE' + +env: + VERSION: 2.0.0-SNAPSHOT + MVN_ARGS_BUILD_BASYX_NO_TESTS: -DskipTests + +jobs: + build-test-aas-repository: + runs-on: ubuntu-latest + name: AAS Repository - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + - name: Build AAS Repository Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasrepository.component" + + - name: Test AAS Repository Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image.sh && ./.github/workflows/scripts/build_start_docker_image.sh test/aas-repository ${VERSION} test_aas_repository + + - name: Clean up + run: exit 0 + + build-test-aas-environment: + runs-on: ubuntu-latest + name: AAS Environment - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build AAS Environment Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasenvironment.component" + + - name: Test AAS Environment Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image.sh && ./.github/workflows/scripts/build_start_docker_image.sh test/aas-environment ${VERSION} test_aas_environment + + - name: Clean up + run: exit 0 + + build-test-concept-description-repository: + runs-on: ubuntu-latest + name: Concept Description Repository - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build Concept Description Repository Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.conceptdescriptionrepository.component" + + - name: Test Concept Description Repository Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image.sh && ./.github/workflows/scripts/build_start_docker_image.sh test/conceptdescription-repository ${VERSION} test_conceptdescription_repository + + - name: Clean up + run: exit 0 + + build-test-aas-discovery: + runs-on: ubuntu-latest + name: AAS Discovery - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build AAS Discovery Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasdiscoveryservice.component" + + - name: Test AAS Discovery Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image.sh && ./.github/workflows/scripts/build_start_docker_image.sh test/aas-discovery ${VERSION} test_aas_discovery + + - name: Clean up + run: exit 0 + + build-test-aasx-fileserver: + runs-on: ubuntu-latest + name: AASX File Server - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build AASX File Server Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasxfileserver.component" + + - name: Test AASX File Server Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image.sh && ./.github/workflows/scripts/build_start_docker_image.sh test/aasxfileserver ${VERSION} test_aasxfileserver + + - name: Clean up + run: exit 0 + + build-test-submodel-repository: + runs-on: ubuntu-latest + name: Submodel Repository - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build Submodel Repository Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.submodelrepository.component" + + - name: Test Submodel Repository Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image.sh && ./.github/workflows/scripts/build_start_docker_image.sh test/submodel-repository ${VERSION} test_submodel_repository + + - name: Clean up + run: exit 0 + + build-test-submodel-service: + runs-on: ubuntu-latest + name: Submodel Service - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build Submodel Service Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.submodelservice.example" + + - name: Test Submodel Service Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image.sh && ./.github/workflows/scripts/build_start_docker_image.sh test/standalone_submodel_example ${VERSION} test_submodel_service + + - name: Clean up + run: exit 0 + + build-test-aas-registry-kafka-mem: + runs-on: ubuntu-latest + name: AAS Registry Kafka Mem - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build AAS Registry Kafka Mem Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasregistry-service-release-kafka-mem" + + - name: Test AAS Registry Kafka Mem Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image_docker_compose.sh && ./.github/workflows/scripts/build_start_docker_image_docker_compose.sh ./ci/test-aas-registry-kafka-mem.yml test_aas_registry_kafka_mem + + - name: Clean up + run: exit 0 + + build-test-aas-registry-kafka-mongodb: + runs-on: ubuntu-latest + name: AAS Registry Kafka MongoDB - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build AAS Registry Kafka MongoDB Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasregistry-service-release-kafka-mongodb" + + - name: Test AAS Registry Kafka MongoDB Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image_docker_compose.sh && ./.github/workflows/scripts/build_start_docker_image_docker_compose.sh ./ci/test-aas-registry-kafka-mongodb.yml test_aas_registry_kafka_mongodb + + - name: Clean up + run: exit 0 + + build-test-aas-registry-log-mem: + runs-on: ubuntu-latest + name: AAS Registry Log Mem - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build AAS Registry Log Mem Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasregistry-service-release-log-mem" + + - name: Test AAS Registry Log Mem Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image.sh && ./.github/workflows/scripts/build_start_docker_image.sh test/aas-registry-log-mem ${VERSION} test_aas_registry_log_mem + + - name: Clean up + run: exit 0 + + build-test-aas-registry-log-mongodb: + runs-on: ubuntu-latest + name: AAS Registry Log MongoDB - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build AAS Registry Log MongoDB Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasregistry-service-release-log-mongodb" + + - name: Test AAS Registry Log MongoDB Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image_docker_compose.sh && ./.github/workflows/scripts/build_start_docker_image_docker_compose.sh ./ci/test-aas-registry-log-mongodb.yml test_aas_registry_log_mongodb + + - name: Clean up + run: exit 0 + + build-test-submodel-registry-kafka-mem: + runs-on: ubuntu-latest + name: Submodel Registry Kafka Mem - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build Submodel Registry Kafka Mem Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.submodelregistry-service-release-kafka-mem" + + - name: Test Submodel Registry Kafka Mem Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image_docker_compose.sh && ./.github/workflows/scripts/build_start_docker_image_docker_compose.sh ./ci/test-submodel-registry-kafka-mem.yml test_submodel_registry_kafka_mem + + - name: Clean up + run: exit 0 + + build-test-submodel-registry-kafka-mongodb: + runs-on: ubuntu-latest + name: Submodel Registry Kafka MongoDB - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build Submodel Registry Kafka MongoDB Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.submodelregistry-service-release-kafka-mongodb" + + - name: Test Submodel Registry Kafka MongoDB Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image_docker_compose.sh && ./.github/workflows/scripts/build_start_docker_image_docker_compose.sh ./ci/test-submodel-registry-kafka-mongodb.yml test_submodel_registry_kafka_mongodb + + - name: Clean up + run: exit 0 + + build-test-submodel-registry-log-mem: + runs-on: ubuntu-latest + name: Submodel Registry Log Mem - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build Submodel Registry Log Mem Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.submodelregistry-service-release-log-mem" + + - name: Test Submodel Registry Log Mem Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image.sh && ./.github/workflows/scripts/build_start_docker_image.sh test/submodel-registry-log-mem ${VERSION} test_submodel_registry_log_mem + + - name: Clean up + run: exit 0 + + build-test-submodel-registry-log-mongodb: + runs-on: ubuntu-latest + name: Submodel Registry Log MongoDB - Build and Start Docker Image + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + cache: maven + - name: Build BaSyx + run: | + mvn clean install ${MVN_ARGS_BUILD_BASYX_NO_TESTS} + + - name: Build Submodel Registry Log MongoDB Docker Image + run: | + mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.submodelregistry-service-release-log-mongodb" + + - name: Test Submodel Registry Log MongoDB Docker Image + run: chmod +x ./.github/workflows/scripts/build_start_docker_image_docker_compose.sh && ./.github/workflows/scripts/build_start_docker_image_docker_compose.sh ./ci/test-submodel-registry-log-mongodb.yml test_submodel_registry_log_mongodb + + - name: Clean up + run: exit 0 diff --git a/.github/workflows/maven_run_test.yml b/.github/workflows/maven_run_test.yml deleted file mode 100644 index 3da66b4aa..000000000 --- a/.github/workflows/maven_run_test.yml +++ /dev/null @@ -1,73 +0,0 @@ -# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time -# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven - -name: Java CI with Maven - -on: - pull_request: - branches: [ main ] - paths-ignore: - - '.github/ISSUE_TEMPLATE/**' - - '.github/CODE_OF_CONDUCT.md' - - '.github/CODING_CONVENTIONS.md' - - '.github/CONTRIBUTING.md' - - '.github/dependabot.yml' - - '.github/pull_request_template.md' - - '.github/SECURITY.md' - - 'docs/**' - - 'examples/**' - - 'README.md' - - '.gitattributes' - - '.gitignore' - - 'LICENSE' - - 'NOTICE' - - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'adopt' - cache: maven - - name: Start environment - run: docker compose --project-directory ./ci up -d --wait - - name: Install BaSyx - run: mvn clean install - - name: Stop environment - if: always() - run: docker compose --project-directory ./ci down - - name: Build and remove Docker images - run: | - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.submodelservice.example" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.submodelrepository.component" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasrepository.component" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasenvironment.component" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.conceptdescriptionrepository.component" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasdiscoveryservice.component" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasxfileserver.component" - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasregistry-service-release-kafka-mem" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasregistry-service-release-kafka-mongodb" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasregistry-service-release-log-mem" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.aasregistry-service-release-log-mongodb" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.submodelregistry-service-release-kafka-mem" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.submodelregistry-service-release-kafka-mongodb" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.submodelregistry-service-release-log-mem" - docker rmi -f $(docker images -aq) - mvn package -DskipTests -Ddocker.namespace=test --pl "org.eclipse.digitaltwin.basyx:basyx.submodelregistry-service-release-log-mongodb" diff --git a/.github/workflows/scripts/build_start_docker_image.sh b/.github/workflows/scripts/build_start_docker_image.sh new file mode 100644 index 000000000..d4097dd9f --- /dev/null +++ b/.github/workflows/scripts/build_start_docker_image.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Check if the correct number of arguments are provided +if [ "$#" -ne 3 ]; then + echo "Usage: $0 " + exit 1 +fi + +# Assign input arguments to variables +IMAGE_NAME=$1 +VERSION=$2 +CONTAINER_NAME=$3 + +# Run the Docker container +docker run -d --name $CONTAINER_NAME $IMAGE_NAME:$VERSION + +# Initialize variables +max_checks=24 # 2 minutes total (120 seconds / 5 seconds per check) +sleep_interval=5 # Interval in seconds between checks +check_count=0 + +# Loop to check health status +while [ $check_count -lt $max_checks ]; do + if [ "$(docker inspect --format='{{.State.Health.Status}}' $CONTAINER_NAME)" == "healthy" ]; then + echo "$CONTAINER_NAME started successfully and is healthy." + break + else + echo "Waiting for $CONTAINER_NAME to become healthy..." + check_count=$((check_count + 1)) + sleep $sleep_interval + fi +done + +# If the container is still not healthy after the loop +if [ $check_count -eq $max_checks ]; then + echo "$CONTAINER_NAME failed to start or is unhealthy after 2 minutes." + docker logs $CONTAINER_NAME + exit 1 +fi + +# Stop and remove the container after testing +docker stop $CONTAINER_NAME +docker rm $CONTAINER_NAME diff --git a/.github/workflows/scripts/build_start_docker_image_docker_compose.sh b/.github/workflows/scripts/build_start_docker_image_docker_compose.sh new file mode 100644 index 000000000..457897c5f --- /dev/null +++ b/.github/workflows/scripts/build_start_docker_image_docker_compose.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Check if the correct number of arguments are provided +if [ "$#" -ne 2 ]; then + echo "Usage: $0 " + exit 1 +fi + +# Run the Docker container +docker compose -f $1 up -d + +#Check every 5 seconds if the compose is healthy +max_checks=24 # 2 minutes total (120 seconds / 5 seconds per check) +sleep_interval=5 # Interval in seconds between checks +check_count=0 + +# Loop to check health status +while [ $check_count -lt $max_checks ]; do + if [ "$(docker inspect --format='{{.State.Health.Status}}' $2)" == "healthy" ]; then + echo "$2 started successfully and is healthy." + break + else + echo "Waiting for $2 to become healthy..." + check_count=$((check_count + 1)) + sleep $sleep_interval + fi +done + +# If the container is still not healthy after the loop +if [ $check_count -eq $max_checks ]; then + echo "$2 failed to start or is unhealthy after 2 minutes." + docker logs $2 + exit 1 +fi +# Stop and remove all container +docker compose -f $1 down + diff --git a/basyx.aasregistry/basyx.aasregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/BaseInterfaceTest.java b/basyx.aasregistry/basyx.aasregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/BaseInterfaceTest.java index e2fe2743c..0ade65fce 100644 --- a/basyx.aasregistry/basyx.aasregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/BaseInterfaceTest.java +++ b/basyx.aasregistry/basyx.aasregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/BaseInterfaceTest.java @@ -54,7 +54,7 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) -@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) public abstract class BaseInterfaceTest { protected static final String IDENTIFICATION_2_3 = "identification_2.3"; diff --git a/basyx.aasregistry/basyx.aasregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/integration/BaseIntegrationTest.java b/basyx.aasregistry/basyx.aasregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/integration/BaseIntegrationTest.java index 21940a5a2..da381d92b 100644 --- a/basyx.aasregistry/basyx.aasregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/integration/BaseIntegrationTest.java +++ b/basyx.aasregistry/basyx.aasregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/integration/BaseIntegrationTest.java @@ -99,7 +99,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) @RunWith(SpringRunner.class) public abstract class BaseIntegrationTest { diff --git a/basyx.aasregistry/basyx.aasregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/integration/PersistencyTestSuite.java b/basyx.aasregistry/basyx.aasregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/integration/PersistencyTestSuite.java index 1b49d23da..2e1e260bc 100644 --- a/basyx.aasregistry/basyx.aasregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/integration/PersistencyTestSuite.java +++ b/basyx.aasregistry/basyx.aasregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/integration/PersistencyTestSuite.java @@ -45,7 +45,7 @@ * * @author mateusmolina, danish */ -@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) public abstract class PersistencyTestSuite { protected static final String DESC_ID = "TestDescriptor"; diff --git a/basyx.aasregistry/basyx.aasregistry-service-inmemory-storage/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/api/BasyxRegistryApiDelegateTest.java b/basyx.aasregistry/basyx.aasregistry-service-inmemory-storage/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/api/BasyxRegistryApiDelegateTest.java index 88ed9c638..32ff6737b 100644 --- a/basyx.aasregistry/basyx.aasregistry-service-inmemory-storage/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/api/BasyxRegistryApiDelegateTest.java +++ b/basyx.aasregistry/basyx.aasregistry-service-inmemory-storage/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/api/BasyxRegistryApiDelegateTest.java @@ -68,7 +68,7 @@ @RunWith(SpringRunner.class) @ContextConfiguration(classes = { BasyxSearchApiDelegate.class, BasyxRegistryApiDelegate.class, SearchApiController.class, ShellDescriptorsApiController.class, InMemoryAasStorageConfiguration.class }) -@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) @TestPropertySource(properties = { "registry.type=inMemory" }) public class BasyxRegistryApiDelegateTest { diff --git a/basyx.aasregistry/basyx.aasregistry-service-release-log-mem/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/CorsHeaderTest.java b/basyx.aasregistry/basyx.aasregistry-service-release-log-mem/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/CorsHeaderTest.java index d99add978..c02e02e2d 100644 --- a/basyx.aasregistry/basyx.aasregistry-service-release-log-mem/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/CorsHeaderTest.java +++ b/basyx.aasregistry/basyx.aasregistry-service-release-log-mem/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/CorsHeaderTest.java @@ -15,7 +15,7 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; -@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @RunWith(SpringRunner.class) @TestPropertySource(properties = {"spring.profiles.active=logEvents,inMemoryStorage", "basyx.cors.allowed-origins=*", "basyx.cors.allowed-methods=GET,POST,PATCH,DELETE,PUT,OPTIONS,HEAD" }) diff --git a/basyx.aasregistry/basyx.aasregistry-service/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/DescriptionProfilesTest.java b/basyx.aasregistry/basyx.aasregistry-service/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/DescriptionProfilesTest.java index b08ed285f..2352c4cd1 100644 --- a/basyx.aasregistry/basyx.aasregistry-service/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/DescriptionProfilesTest.java +++ b/basyx.aasregistry/basyx.aasregistry-service/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/DescriptionProfilesTest.java @@ -54,7 +54,7 @@ @RunWith(SpringRunner.class) @WebMvcTest(DescriptionApiController.class) -@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) @TestPropertySource(properties = { "description.profiles=https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRegistryServiceSpecification/SSP-001,https://admin-shell.io/aas/API/3/0/SubmodelRegistryServiceSpecification/SSP-001" }) public class DescriptionProfilesTest { diff --git a/basyx.aasxfileserver/basyx.aasxfileserver.component/pom.xml b/basyx.aasxfileserver/basyx.aasxfileserver.component/pom.xml index 583010243..b793f6898 100644 --- a/basyx.aasxfileserver/basyx.aasxfileserver.component/pom.xml +++ b/basyx.aasxfileserver/basyx.aasxfileserver.component/pom.xml @@ -15,6 +15,7 @@ aasxfileserver + http://localhost:${docker.host.port}/packages @@ -68,4 +69,66 @@ + + + + docker + + + docker.namespace + + + + + + io.fabric8 + docker-maven-plugin + + + + + + + ${docker.host.port}:${docker.container.port} + + + + ${docker.container.waitForEndpoint} + + + + + + + + + build-docker + + + push-docker + + + docker-compose-up + pre-integration-test + + start + + + + docker-compose-down + post-integration-test + + stop + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + + + + + \ No newline at end of file diff --git a/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/BaseInterfaceTest.java b/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/BaseInterfaceTest.java index 39ecca396..4bb7ce5d3 100644 --- a/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/BaseInterfaceTest.java +++ b/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/BaseInterfaceTest.java @@ -51,7 +51,7 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) -@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) public abstract class BaseInterfaceTest { protected static final String SM_ID_5 = "sm5"; diff --git a/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/integration/BaseIntegrationTest.java b/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/integration/BaseIntegrationTest.java index 91792d554..fc25049b6 100644 --- a/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/integration/BaseIntegrationTest.java +++ b/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/integration/BaseIntegrationTest.java @@ -82,7 +82,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) @RunWith(SpringRunner.class) public abstract class BaseIntegrationTest { diff --git a/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/integration/PersistencyTestSuite.java b/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/integration/PersistencyTestSuite.java index d5a39f1da..444adf5fb 100644 --- a/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/integration/PersistencyTestSuite.java +++ b/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/integration/PersistencyTestSuite.java @@ -40,7 +40,7 @@ * * @author mateusmolina */ -@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) public abstract class PersistencyTestSuite { protected static final String DESC_ID = "TestDescriptor"; diff --git a/basyx.submodelregistry/basyx.submodelregistry-service-inmemory-storage/src/test/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/api/BasyxRegistryApiDelegateTest.java b/basyx.submodelregistry/basyx.submodelregistry-service-inmemory-storage/src/test/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/api/BasyxRegistryApiDelegateTest.java index 4092a13ca..88cac1e33 100644 --- a/basyx.submodelregistry/basyx.submodelregistry-service-inmemory-storage/src/test/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/api/BasyxRegistryApiDelegateTest.java +++ b/basyx.submodelregistry/basyx.submodelregistry-service-inmemory-storage/src/test/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/api/BasyxRegistryApiDelegateTest.java @@ -59,7 +59,7 @@ @RunWith(SpringRunner.class) @ContextConfiguration(classes = { BasyxSubmodelRegistryApiDelegate.class, SubmodelDescriptorsApiController.class, SubmodelDescriptorsApiController.class, InMemorySubmodelStorageConfiguration.class }) -@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) @TestPropertySource(properties = { "registry.type=inMemory" }) public class BasyxRegistryApiDelegateTest { diff --git a/basyx.submodelregistry/basyx.submodelregistry-service-release-log-mem/src/test/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/CorsHeaderTest.java b/basyx.submodelregistry/basyx.submodelregistry-service-release-log-mem/src/test/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/CorsHeaderTest.java index bd29cb471..4574980cf 100644 --- a/basyx.submodelregistry/basyx.submodelregistry-service-release-log-mem/src/test/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/CorsHeaderTest.java +++ b/basyx.submodelregistry/basyx.submodelregistry-service-release-log-mem/src/test/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/CorsHeaderTest.java @@ -41,7 +41,7 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; -@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) @RunWith(SpringRunner.class) @TestPropertySource(properties = { "spring.profiles.active=logEvents,inMemoryStorage", "basyx.cors.allowed-origins=*", "basyx.cors.allowed-methods=GET,POST,PATCH,DELETE,PUT,OPTIONS,HEAD" }) diff --git a/basyx.submodelregistry/basyx.submodelregistry-service/src/test/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/DescriptionProfilesTest.java b/basyx.submodelregistry/basyx.submodelregistry-service/src/test/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/DescriptionProfilesTest.java index f537605b6..04f0c7c2b 100644 --- a/basyx.submodelregistry/basyx.submodelregistry-service/src/test/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/DescriptionProfilesTest.java +++ b/basyx.submodelregistry/basyx.submodelregistry-service/src/test/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/DescriptionProfilesTest.java @@ -54,7 +54,7 @@ @RunWith(SpringRunner.class) @WebMvcTest(DescriptionApiController.class) -@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) @TestPropertySource(properties = { "description.profiles=https://admin-shell.io/aas/API/3/0/SubmodelRegistryServiceSpecification/SSP-001,https://admin-shell.io/aas/API/3/0/DiscoveryServiceSpecification/SSP-001" }) public class DescriptionProfilesTest { diff --git a/basyx.submodelservice/basyx.submodelservice.example/Dockerfile b/basyx.submodelservice/basyx.submodelservice.example/Dockerfile index 556832735..1c3e9648d 100644 --- a/basyx.submodelservice/basyx.submodelservice.example/Dockerfile +++ b/basyx.submodelservice/basyx.submodelservice.example/Dockerfile @@ -5,5 +5,7 @@ ARG JAR_FILE=target/*-exec.jar COPY ${JAR_FILE} basyxExecutable.jar COPY src/main/resources/application.properties application.properties ARG PORT=8081 -EXPOSE ${PORT} +ENV SERVER_PORT=${PORT} +EXPOSE ${SERVER_PORT} +HEALTHCHECK --interval=30s --timeout=3s --retries=3 --start-period=15s CMD curl --fail http://localhost:${SERVER_PORT}/actuator/health || exit 1 ENTRYPOINT ["java","-jar","basyxExecutable.jar"] diff --git a/ci/test-aas-registry-kafka-mem.yml b/ci/test-aas-registry-kafka-mem.yml new file mode 100644 index 000000000..506450ed1 --- /dev/null +++ b/ci/test-aas-registry-kafka-mem.yml @@ -0,0 +1,92 @@ +version: '3.6' + +networks: + basyx: + internal: false + +volumes: + zookeeper-data: + driver: local + zookeeper-log: + driver: local + kafka-data: + driver: local + aas-config: + +services: + portainer: + image: portainer/portainer-ce:2.0.1 + container_name: portainer + restart: always + ports: + - "9090:9000" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + networks: + - basyx + + zookeeper: + image: zookeeper:3.6 + container_name: zookeeper + restart: always + ports: + - "2181:2181" + volumes: + - zookeeper-data:/var/lib/zookeeper/data + - zookeeper-log:/var/lib/zookeeper/log + networks: + - basyx + + kafka: + image: confluentinc/cp-kafka:6.2.1 + container_name: kafka + volumes: + - kafka-data:/var/lib/kafka + ports: + - "9092:9092" + environment: + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT + KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092 + KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' + links: + - zookeeper + restart: always + networks: + - basyx + + akhq: + image: tchiotludo/akhq:0.24.0 + container_name: akhq + environment: + AKHQ_CONFIGURATION: | + akhq: + connections: + docker-kafka-server: + properties: + bootstrap.servers: "kafka:29092" + ports: + - 8086:8080 + restart: always + depends_on: + - kafka + networks: + - basyx + + + + aas-registry-kafka-mem: + image: test/aas-registry-kafka-mem:$BASYX_VERSION + container_name: test_aas_registry_kafka_mem + pull_policy: never + ports: + - "8030:8080" + depends_on: + - kafka + restart: always + environment: + KAFKA_BOOTSTRAP_SERVERS: PLAINTEXT://kafka:29092 + networks: + - basyx \ No newline at end of file diff --git a/ci/test-aas-registry-kafka-mongodb.yml b/ci/test-aas-registry-kafka-mongodb.yml new file mode 100644 index 000000000..487325eaf --- /dev/null +++ b/ci/test-aas-registry-kafka-mongodb.yml @@ -0,0 +1,109 @@ +version: '3.6' + +networks: + basyx: + internal: false + mongo: + internal: false + +volumes: + zookeeper-data: + driver: local + zookeeper-log: + driver: local + kafka-data: + driver: local + mongodb-data-5.0.10: + driver: local + aas-config: + +services: + portainer: + image: portainer/portainer-ce:2.0.1 + container_name: portainer + restart: always + ports: + - "9090:9000" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + networks: + - basyx + + zookeeper: + image: zookeeper:3.6 + container_name: zookeeper + restart: always + ports: + - "2181:2181" + volumes: + - zookeeper-data:/var/lib/zookeeper/data + - zookeeper-log:/var/lib/zookeeper/log + networks: + - basyx + + kafka: + image: confluentinc/cp-kafka:6.2.1 + container_name: kafka + volumes: + - kafka-data:/var/lib/kafka + ports: + - "9092:9092" + environment: + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT + KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092 + KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' + links: + - zookeeper + restart: always + networks: + - basyx + + akhq: + image: tchiotludo/akhq:0.24.0 + container_name: akhq + environment: + AKHQ_CONFIGURATION: | + akhq: + connections: + docker-kafka-server: + properties: + bootstrap.servers: "kafka:29092" + ports: + - 8086:8080 + restart: always + depends_on: + - kafka + networks: + - basyx + + mongodb: + image: mongo:5.0.10 + container_name: mongodb + environment: + MONGO_INITDB_ROOT_USERNAME: admin + MONGO_INITDB_ROOT_PASSWORD: admin + ports: + - 27017:27017 + volumes: + - mongodb-data-5.0.10:/data/db + networks: + - basyx + + aas-registry-kafka-mongodb: + image: test/aas-registry-kafka-mongodb:$BASYX_VERSION + container_name: test_aas_registry_kafka_mongodb + pull_policy: never + ports: + - "8020:8080" + depends_on: + - mongodb + - kafka + restart: always + environment: + KAFKA_BOOTSTRAP_SERVERS: PLAINTEXT://kafka:29092 + SPRING_DATA_MONGODB_URI: mongodb://admin:admin@mongodb:27017 + networks: + - basyx diff --git a/ci/test-aas-registry-log-mongodb.yml b/ci/test-aas-registry-log-mongodb.yml new file mode 100644 index 000000000..8e2618c33 --- /dev/null +++ b/ci/test-aas-registry-log-mongodb.yml @@ -0,0 +1,51 @@ +version: '3.6' + +networks: + basyx: + internal: false + mongo: + internal: false + +volumes: + mongodb-data-5.0.10: + driver: local + aas-config: + +services: + portainer: + image: portainer/portainer-ce:2.0.1 + container_name: portainer + restart: always + ports: + - "9090:9000" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + networks: + - basyx + + mongodb: + image: mongo:5.0.10 + container_name: mongodb + environment: + MONGO_INITDB_ROOT_USERNAME: admin + MONGO_INITDB_ROOT_PASSWORD: admin + ports: + - 27017:27017 + volumes: + - mongodb-data-5.0.10:/data/db + networks: + - basyx + + aas-registry-log-mongodb: + image: test/aas-registry-log-mongodb:$BASYX_VERSION + container_name: test_aas_registry_log_mongodb + pull_policy: never + ports: + - "8050:8080" + depends_on: + - mongodb + restart: always + environment: + SPRING_DATA_MONGODB_URI: mongodb://admin:admin@mongodb:27017 + networks: + - basyx diff --git a/ci/test-submodel-registry-kafka-mem.yml b/ci/test-submodel-registry-kafka-mem.yml new file mode 100644 index 000000000..fa7c006f8 --- /dev/null +++ b/ci/test-submodel-registry-kafka-mem.yml @@ -0,0 +1,90 @@ +version: '3.6' + +networks: + basyx-submodel: + internal: false + +volumes: + zookeeper-data: + driver: local + zookeeper-log: + driver: local + kafka-data: + driver: local + submodel-config: + +services: + portainer: + image: portainer/portainer-ce:2.0.1 + container_name: portainer + restart: always + ports: + - "9091:9000" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + networks: + - basyx-submodel + + zookeeper: + image: zookeeper:3.6 + container_name: zookeeper + restart: always + ports: + - "2182:2181" + volumes: + - zookeeper-data:/var/lib/zookeeper/data + - zookeeper-log:/var/lib/zookeeper/log + networks: + - basyx-submodel + + kafka: + image: confluentinc/cp-kafka:6.2.1 + container_name: kafka + volumes: + - kafka-data:/var/lib/kafka + ports: + - "9093:9092" + environment: + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT + KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9093 + KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' + links: + - zookeeper + restart: always + networks: + - basyx-submodel + + akhq: + image: tchiotludo/akhq:0.24.0 + container_name: akhq + environment: + AKHQ_CONFIGURATION: | + akhq: + connections: + docker-kafka-server: + properties: + bootstrap.servers: "kafka:29092" + ports: + - 8087:8080 + restart: always + depends_on: + - kafka + networks: + - basyx-submodel + + submodel-registry-kafka-mem: + image: test/submodel-registry-kafka-mem:$BASYX_VERSION + container_name: test_submodel_registry_kafka_mem + pull_policy: never + ports: + - "8035:8080" + depends_on: + - kafka + restart: always + environment: + KAFKA_BOOTSTRAP_SERVERS: PLAINTEXT://kafka:29092 + networks: + - basyx-submodel diff --git a/ci/test-submodel-registry-kafka-mongodb.yml b/ci/test-submodel-registry-kafka-mongodb.yml new file mode 100644 index 000000000..027b9a62b --- /dev/null +++ b/ci/test-submodel-registry-kafka-mongodb.yml @@ -0,0 +1,109 @@ +version: '3.6' + +networks: + basyx-submodel: + internal: false + mongo-submodel: + internal: false + +volumes: + zookeeper-data: + driver: local + zookeeper-log: + driver: local + kafka-data: + driver: local + mongodb-data-5.0.10: + driver: local + submodel-config: + +services: + portainer: + image: portainer/portainer-ce:2.0.1 + container_name: portainer + restart: always + ports: + - "9091:9000" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + networks: + - basyx-submodel + + zookeeper: + image: zookeeper:3.6 + container_name: zookeeper + restart: always + ports: + - "2182:2181" + volumes: + - zookeeper-data:/var/lib/zookeeper/data + - zookeeper-log:/var/lib/zookeeper/log + networks: + - basyx-submodel + + kafka: + image: confluentinc/cp-kafka:6.2.1 + container_name: kafka + volumes: + - kafka-data:/var/lib/kafka + ports: + - "9093:9092" + environment: + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT + KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9093 + KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' + links: + - zookeeper + restart: always + networks: + - basyx-submodel + + akhq: + image: tchiotludo/akhq:0.24.0 + container_name: akhq + environment: + AKHQ_CONFIGURATION: | + akhq: + connections: + docker-kafka-server: + properties: + bootstrap.servers: "kafka:29092" + ports: + - 8087:8080 + restart: always + depends_on: + - kafka + networks: + - basyx-submodel + + mongodb: + image: mongo:5.0.10 + container_name: mongodb + environment: + MONGO_INITDB_ROOT_USERNAME: admin + MONGO_INITDB_ROOT_PASSWORD: admin + ports: + - 27018:27017 + volumes: + - mongodb-data-5.0.10:/data/db + networks: + - basyx-submodel + + submodel-registry-kafka-mongodb: + image: test/submodel-registry-kafka-mongodb:$BASYX_VERSION + container_name: test_submodel_registry_kafka_mongodb + pull_policy: never + ports: + - "8024:8080" + depends_on: + - mongodb + - kafka + restart: always + environment: + KAFKA_BOOTSTRAP_SERVERS: PLAINTEXT://kafka:29092 + SPRING_DATA_MONGODB_URI: mongodb://admin:admin@mongodb:27017 + networks: + - basyx-submodel diff --git a/ci/test-submodel-registry-log-mongodb.yml b/ci/test-submodel-registry-log-mongodb.yml new file mode 100644 index 000000000..2e2bb1fe0 --- /dev/null +++ b/ci/test-submodel-registry-log-mongodb.yml @@ -0,0 +1,107 @@ +version: '3.6' + +networks: + basyx-submodel: + internal: false + mongo-submodel: + internal: false + +volumes: + zookeeper-data: + driver: local + zookeeper-log: + driver: local + kafka-data: + driver: local + mongodb-data-5.0.10: + driver: local + submodel-config: + +services: + portainer: + image: portainer/portainer-ce:2.0.1 + container_name: portainer + restart: always + ports: + - "9091:9000" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + networks: + - basyx-submodel + + zookeeper: + image: zookeeper:3.6 + container_name: zookeeper + restart: always + ports: + - "2182:2181" + volumes: + - zookeeper-data:/var/lib/zookeeper/data + - zookeeper-log:/var/lib/zookeeper/log + networks: + - basyx-submodel + + kafka: + image: confluentinc/cp-kafka:6.2.1 + container_name: kafka + volumes: + - kafka-data:/var/lib/kafka + ports: + - "9093:9092" + environment: + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT + KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9093 + KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' + links: + - zookeeper + restart: always + networks: + - basyx-submodel + + akhq: + image: tchiotludo/akhq:0.24.0 + container_name: akhq + environment: + AKHQ_CONFIGURATION: | + akhq: + connections: + docker-kafka-server: + properties: + bootstrap.servers: "kafka:29092" + ports: + - 8087:8080 + restart: always + depends_on: + - kafka + networks: + - basyx-submodel + + mongodb: + image: mongo:5.0.10 + container_name: mongodb + environment: + MONGO_INITDB_ROOT_USERNAME: admin + MONGO_INITDB_ROOT_PASSWORD: admin + ports: + - 27018:27017 + volumes: + - mongodb-data-5.0.10:/data/db + networks: + - basyx-submodel + + submodel-registry-log-mongodb: + image: test/submodel-registry-log-mongodb:$BASYX_VERSION + container_name: test_submodel_registry_log_mongodb + pull_policy: never + ports: + - "8053:8080" + depends_on: + - mongodb + restart: always + environment: + SPRING_DATA_MONGODB_URI: mongodb://admin:admin@mongodb:27017 + networks: + - basyx-submodel diff --git a/pom.xml b/pom.xml index 5801f1dae..a87d6eec6 100644 --- a/pom.xml +++ b/pom.xml @@ -94,20 +94,6 @@ - - org.eclipse.dash - license-tool-plugin - 1.1.1-SNAPSHOT - - - license-check - - license-check - - - - - org.codehaus.mojo flatten-maven-plugin @@ -177,18 +163,6 @@ - - org.apache.maven.plugins - maven-javadoc-plugin - - - attach-javadocs - - jar - - - - @@ -1265,6 +1239,31 @@ org.apache.maven.plugins maven-gpg-plugin + + org.eclipse.dash + license-tool-plugin + 1.1.1-SNAPSHOT + + + license-check + + license-check + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + @@ -1286,6 +1285,31 @@ + + org.eclipse.dash + license-tool-plugin + 1.1.1-SNAPSHOT + + + license-check + + license-check + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + +