diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 7c0975ff0..8d3c16545 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -41,7 +41,9 @@ jobs: ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} OLLAMA_TESTS_ENABLED: "false" - run: mvn -s settings.xml -Pintegration-tests -Pjavadoc -Dfailsafe.rerunFailingTestsCount=3 -DOLLAMA_TESTS_ENABLED=false --batch-mode --update-snapshots deploy + run: | + mvn -s settings.xml -Pintegration-tests -Pjavadoc -Dfailsafe.rerunFailingTestsCount=3 \ + --batch-mode --update-snapshots deploy - name: Generate Java docs run: mvn javadoc:aggregate @@ -73,3 +75,36 @@ jobs: unzip spring-ai-$PROJECT_VERSION-docs.zip ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "cd $DOCS_PATH && mkdir -p $PROJECT_VERSION" scp -i $HOME/.ssh/key -r api $DOCS_USERNAME@$DOCS_HOST:$DOCS_PATH/$PROJECT_VERSION + + + # The docker-compose and testcontainers modules will be compiled and run in a parallel job + container-tests: + name: Container integration tests + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + + - name: Configure Testcontainers + run: | + echo "testcontainers.reuse.enable=true" > $HOME/.testcontainers.properties + + - name: Run Container Integration Tests + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + SPRING_AI_OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} + ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} + run: | + mvn -s settings.xml -Pintegration-tests verify \ + -Dskip.docker-compose=false \ + -Dskip.testcontainers=false \ + -pl spring-ai-spring-boot-docker-compose,spring-ai-spring-boot-testcontainers \ + -am --batch-mode \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6af6e0d0c..d76d0f4ed 100644 --- a/pom.xml +++ b/pom.xml @@ -256,6 +256,31 @@ true 9.3 true + + + true + true + true + false + true + true + true + true + true + true + true + true + true + false + true + true + true + true + true + + + true + true @@ -616,6 +641,31 @@ + + + full-vectorstore-tests + + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + + test-coverage diff --git a/spring-ai-spring-boot-docker-compose/pom.xml b/spring-ai-spring-boot-docker-compose/pom.xml index 62d0d0de8..9b42b8155 100644 --- a/spring-ai-spring-boot-docker-compose/pom.xml +++ b/spring-ai-spring-boot-docker-compose/pom.xml @@ -36,6 +36,7 @@ + false @@ -176,4 +177,24 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.docker-compose} + + + + + integration-test + verify + + + + + + diff --git a/spring-ai-spring-boot-testcontainers/pom.xml b/spring-ai-spring-boot-testcontainers/pom.xml index f60e6b34d..776148030 100644 --- a/spring-ai-spring-boot-testcontainers/pom.xml +++ b/spring-ai-spring-boot-testcontainers/pom.xml @@ -37,6 +37,7 @@ + false @@ -267,4 +268,25 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.testcontainers} + + + + + integration-test + verify + + + + + + + diff --git a/vector-stores/spring-ai-azure-cosmos-db-store/pom.xml b/vector-stores/spring-ai-azure-cosmos-db-store/pom.xml index ca93a9ece..4e9617591 100644 --- a/vector-stores/spring-ai-azure-cosmos-db-store/pom.xml +++ b/vector-stores/spring-ai-azure-cosmos-db-store/pom.xml @@ -94,4 +94,24 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.azure-cosmos-db} + + + + + integration-test + verify + + + + + + diff --git a/vector-stores/spring-ai-azure-store/pom.xml b/vector-stores/spring-ai-azure-store/pom.xml index 25bf7e5f1..7d2ce45c3 100644 --- a/vector-stores/spring-ai-azure-store/pom.xml +++ b/vector-stores/spring-ai-azure-store/pom.xml @@ -103,5 +103,24 @@ - + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.azure} + + + + + integration-test + verify + + + + + + diff --git a/vector-stores/spring-ai-cassandra-store/pom.xml b/vector-stores/spring-ai-cassandra-store/pom.xml index 1032f3635..9f457aa30 100644 --- a/vector-stores/spring-ai-cassandra-store/pom.xml +++ b/vector-stores/spring-ai-cassandra-store/pom.xml @@ -93,5 +93,24 @@ test - + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.cassandra} + + + + + integration-test + verify + + + + + + diff --git a/vector-stores/spring-ai-chroma-store/pom.xml b/vector-stores/spring-ai-chroma-store/pom.xml index 3e7b35c4a..0adde0d8b 100644 --- a/vector-stores/spring-ai-chroma-store/pom.xml +++ b/vector-stores/spring-ai-chroma-store/pom.xml @@ -89,4 +89,24 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.chroma} + + + + + integration-test + verify + + + + + + diff --git a/vector-stores/spring-ai-coherence-store/pom.xml b/vector-stores/spring-ai-coherence-store/pom.xml index 1a4e9dc5a..f90928927 100644 --- a/vector-stores/spring-ai-coherence-store/pom.xml +++ b/vector-stores/spring-ai-coherence-store/pom.xml @@ -80,4 +80,24 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.coherence} + + + + + integration-test + verify + + + + + + diff --git a/vector-stores/spring-ai-elasticsearch-store/pom.xml b/vector-stores/spring-ai-elasticsearch-store/pom.xml index 440dc99b7..5783fc3ca 100644 --- a/vector-stores/spring-ai-elasticsearch-store/pom.xml +++ b/vector-stores/spring-ai-elasticsearch-store/pom.xml @@ -96,4 +96,24 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.elasticsearch} + + + + + integration-test + verify + + + + + + diff --git a/vector-stores/spring-ai-gemfire-store/pom.xml b/vector-stores/spring-ai-gemfire-store/pom.xml index 37d859f70..4fa35710f 100644 --- a/vector-stores/spring-ai-gemfire-store/pom.xml +++ b/vector-stores/spring-ai-gemfire-store/pom.xml @@ -101,4 +101,24 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.gemfire} + + + + + integration-test + verify + + + + + + diff --git a/vector-stores/spring-ai-hanadb-store/pom.xml b/vector-stores/spring-ai-hanadb-store/pom.xml index 430297bb7..b66452cb4 100644 --- a/vector-stores/spring-ai-hanadb-store/pom.xml +++ b/vector-stores/spring-ai-hanadb-store/pom.xml @@ -99,4 +99,25 @@ test + + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.hanadb} + + + + + integration-test + verify + + + + + + diff --git a/vector-stores/spring-ai-milvus-store/pom.xml b/vector-stores/spring-ai-milvus-store/pom.xml index fddad05b6..b96d13aa8 100644 --- a/vector-stores/spring-ai-milvus-store/pom.xml +++ b/vector-stores/spring-ai-milvus-store/pom.xml @@ -96,4 +96,24 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.milvus} + + + + + integration-test + verify + + + + + + diff --git a/vector-stores/spring-ai-mongodb-atlas-store/pom.xml b/vector-stores/spring-ai-mongodb-atlas-store/pom.xml index b1b803005..02140c7c9 100644 --- a/vector-stores/spring-ai-mongodb-atlas-store/pom.xml +++ b/vector-stores/spring-ai-mongodb-atlas-store/pom.xml @@ -93,4 +93,25 @@ test + + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.mongodb-atlas} + + + + + integration-test + verify + + + + + + diff --git a/vector-stores/spring-ai-neo4j-store/pom.xml b/vector-stores/spring-ai-neo4j-store/pom.xml index a8acbfc8f..c78d315e8 100644 --- a/vector-stores/spring-ai-neo4j-store/pom.xml +++ b/vector-stores/spring-ai-neo4j-store/pom.xml @@ -108,7 +108,27 @@ micrometer-observation-test test - + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.neo4j} + + + + + integration-test + verify + + + + + + + diff --git a/vector-stores/spring-ai-opensearch-store/pom.xml b/vector-stores/spring-ai-opensearch-store/pom.xml index aa3ddfbbd..d7cd5d174 100644 --- a/vector-stores/spring-ai-opensearch-store/pom.xml +++ b/vector-stores/spring-ai-opensearch-store/pom.xml @@ -104,4 +104,25 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.opensearch} + + + + + integration-test + verify + + + + + + + diff --git a/vector-stores/spring-ai-oracle-store/pom.xml b/vector-stores/spring-ai-oracle-store/pom.xml index 0f795fa89..f78dc0382 100644 --- a/vector-stores/spring-ai-oracle-store/pom.xml +++ b/vector-stores/spring-ai-oracle-store/pom.xml @@ -123,4 +123,25 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.oracle} + + + + + integration-test + verify + + + + + + + diff --git a/vector-stores/spring-ai-pgvector-store/pom.xml b/vector-stores/spring-ai-pgvector-store/pom.xml index 5b4a7b0df..2b25c3072 100644 --- a/vector-stores/spring-ai-pgvector-store/pom.xml +++ b/vector-stores/spring-ai-pgvector-store/pom.xml @@ -117,4 +117,25 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.pgvector} + + + + + integration-test + verify + + + + + + + diff --git a/vector-stores/spring-ai-pinecone-store/pom.xml b/vector-stores/spring-ai-pinecone-store/pom.xml index 87b2722c5..6d37241bb 100644 --- a/vector-stores/spring-ai-pinecone-store/pom.xml +++ b/vector-stores/spring-ai-pinecone-store/pom.xml @@ -124,4 +124,25 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.pinecone} + + + + + integration-test + verify + + + + + + + diff --git a/vector-stores/spring-ai-qdrant-store/pom.xml b/vector-stores/spring-ai-qdrant-store/pom.xml index 2d9c598e5..1b8a5d4eb 100644 --- a/vector-stores/spring-ai-qdrant-store/pom.xml +++ b/vector-stores/spring-ai-qdrant-store/pom.xml @@ -104,4 +104,25 @@ test + + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.qdrant} + + + + + integration-test + verify + + + + + + diff --git a/vector-stores/spring-ai-redis-store/pom.xml b/vector-stores/spring-ai-redis-store/pom.xml index 80c7c6874..021e741eb 100644 --- a/vector-stores/spring-ai-redis-store/pom.xml +++ b/vector-stores/spring-ai-redis-store/pom.xml @@ -103,4 +103,25 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.redis} + + + + + integration-test + verify + + + + + + + diff --git a/vector-stores/spring-ai-typesense-store/pom.xml b/vector-stores/spring-ai-typesense-store/pom.xml index db03d7917..cfd9172d5 100644 --- a/vector-stores/spring-ai-typesense-store/pom.xml +++ b/vector-stores/spring-ai-typesense-store/pom.xml @@ -91,4 +91,25 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.typesense} + + + + + integration-test + verify + + + + + + + diff --git a/vector-stores/spring-ai-weaviate-store/pom.xml b/vector-stores/spring-ai-weaviate-store/pom.xml index c1ea5ff95..a8a0e3e38 100644 --- a/vector-stores/spring-ai-weaviate-store/pom.xml +++ b/vector-stores/spring-ai-weaviate-store/pom.xml @@ -104,4 +104,25 @@ + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + ${skip.vectorstore.weaviate} + + + + + integration-test + verify + + + + + + +