Change job name #4
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Fast CI/CD build | |
| on: | |
| push: | |
| branches: | |
| - 'main' | |
| - '[0-9].[0-9].x' | |
| - 'workflows-rework-main' | |
| jobs: | |
| build-all: | |
| name: Build all modules | |
| runs-on: ubuntu-latest | |
| if: ${{ github.repository_owner == 'spring-projects' }} | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| cache: 'maven' | |
| - name: Setup Maven Build-Cache (~/.m2/build-cache) | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.m2/build-cache | |
| key: build-cache-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} | |
| restore-keys: | | |
| build-cache-${{ runner.os }}- | |
| - name: Build all modules with unit tests | |
| run: | | |
| ./mvnw --batch-mode -ntp --update-snapshots -T1C clean install | |
| - name: Upload Spring-AI Built Artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-artifacts | |
| path: ~/.m2/repository/org/springframework/ai | |
| retention-days: 1 # Intent is to share only with downstream jobs in this workflow | |
| - name: Purge Spring AI Built Artifacts # We don't want the setup-java m2 cache to capture our products, only our deps | |
| run: | | |
| rm -fr ~/.m2/repository/org/springframework/ai | |
| test-ollama: | |
| name: Test Ollama | |
| runs-on: ubuntu-latest | |
| needs: build-all | |
| if: ${{ github.repository_owner == 'spring-projects' }} | |
| services: | |
| ollama: | |
| image: ollama/ollama:latest | |
| ports: | |
| - 11434:11434 | |
| env: | |
| OLLAMA_WITH_REUSE: true | |
| OLLAMA_AUTOCONF_TESTS_ENABLED: "true" | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| cache: 'maven' | |
| - name: Setup Maven Build-Cache (~/.m2/build-cache) | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.m2/build-cache | |
| key: build-cache-${{ runner.os }}-ollama-${{ hashFiles('**/pom.xml') }} | |
| restore-keys: | | |
| build-cache-${{ runner.os }}- | |
| - name: Download Spring-AI Built Artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: build-artifacts | |
| path: ~/.m2/repository/org/springframework/ai | |
| - name: Configure Testcontainers | |
| run: | | |
| echo "testcontainers.reuse.enable=true" > $HOME/.testcontainers.properties | |
| - name: Test Ollama modules | |
| env: | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| SPRING_AI_OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| run: | | |
| ./mvnw --batch-mode -ntp --no-snapshot-updates \ | |
| -pl models/spring-ai-ollama,auto-configurations/models/spring-ai-autoconfigure-model-ollama \ | |
| -Pci-fast-integration-tests \ | |
| -Dfailsafe.rerunFailingTestsCount=3 \ | |
| verify | |
| test-openai: | |
| name: Test OpenAI | |
| runs-on: ubuntu-latest | |
| needs: build-all | |
| if: ${{ github.repository_owner == 'spring-projects' }} | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| cache: 'maven' | |
| - name: Setup Maven Build-Cache (~/.m2/build-cache) | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.m2/build-cache | |
| key: build-cache-${{ runner.os }}-openai-${{ hashFiles('**/pom.xml') }} | |
| restore-keys: | | |
| build-cache-${{ runner.os }}- | |
| - name: Download Spring-AI Built Artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: build-artifacts | |
| path: ~/.m2/repository/org/springframework/ai | |
| - name: Configure Testcontainers | |
| run: | | |
| echo "testcontainers.reuse.enable=true" > $HOME/.testcontainers.properties | |
| - name: Test OpenAI modules | |
| env: | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| SPRING_AI_OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| run: | | |
| ./mvnw --batch-mode -ntp --no-snapshot-updates \ | |
| -pl models/spring-ai-openai,auto-configurations/models/spring-ai-autoconfigure-model-openai \ | |
| -Pci-fast-integration-tests \ | |
| -Dfailsafe.rerunFailingTestsCount=3 \ | |
| verify | |
| test-remaining: | |
| name: Test Remaining (MCP, Google GenAI, Chroma, PgVector) | |
| runs-on: ubuntu-latest | |
| needs: build-all | |
| if: ${{ github.repository_owner == 'spring-projects' }} | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| cache: 'maven' | |
| - name: Setup Maven Build-Cache (~/.m2/build-cache) | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.m2/build-cache | |
| key: build-cache-${{ runner.os }}-other-${{ hashFiles('**/pom.xml') }} | |
| restore-keys: | | |
| build-cache-${{ runner.os }}- | |
| - name: Download Spring-AI Built Artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: build-artifacts | |
| path: ~/.m2/repository/org/springframework/ai | |
| - name: Configure Testcontainers | |
| run: | | |
| echo "testcontainers.reuse.enable=true" > $HOME/.testcontainers.properties | |
| - name: Test remaining modules | |
| env: | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| SPRING_AI_OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| run: | | |
| ./mvnw --batch-mode -ntp --no-snapshot-updates \ | |
| -pl models/spring-ai-google-genai,auto-configurations/models/spring-ai-autoconfigure-model-google-genai,mcp/common,mcp/mcp-annotations-spring,auto-configurations/mcp/spring-ai-autoconfigure-mcp-client-common,auto-configurations/mcp/spring-ai-autoconfigure-mcp-client-httpclient,auto-configurations/mcp/spring-ai-autoconfigure-mcp-client-webflux,auto-configurations/mcp/spring-ai-autoconfigure-mcp-server-common,auto-configurations/mcp/spring-ai-autoconfigure-mcp-server-webmvc,auto-configurations/mcp/spring-ai-autoconfigure-mcp-server-webflux,vector-stores/spring-ai-chroma-store,vector-stores/spring-ai-pgvector-store,spring-ai-integration-tests \ | |
| -Pci-fast-integration-tests \ | |
| -Dfailsafe.rerunFailingTestsCount=3 \ | |
| verify | |
| generate-artifacts: | |
| name: Generate and upload javadocs | |
| runs-on: ubuntu-latest | |
| needs: [build-all, test-ollama, test-openai, test-remaining] | |
| if: ${{ github.repository_owner == 'spring-projects' }} | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| cache: 'maven' | |
| - name: Setup Maven Build-Cache (~/.m2/build-cache) | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.m2/build-cache | |
| key: build-cache-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} | |
| restore-keys: | | |
| build-cache-${{ runner.os }}- | |
| - name: Generate Java docs | |
| run: ./mvnw --batch-mode -ntp javadoc:aggregate | |
| - name: Capture project version | |
| run: echo PROJECT_VERSION=$(./mvnw help:evaluate -Dexpression=project.version --quiet -DforceStdout) >> $GITHUB_ENV | |
| - name: Setup SSH key | |
| env: | |
| DOCS_SSH_KEY: ${{ secrets.DOCS_SSH_KEY }} | |
| DOCS_SSH_HOST_KEY: ${{ secrets.DOCS_SSH_HOST_KEY }} | |
| run: | | |
| mkdir "$HOME/.ssh" | |
| echo "$DOCS_SSH_KEY" > "$HOME/.ssh/key" | |
| chmod 600 "$HOME/.ssh/key" | |
| echo "$DOCS_SSH_HOST_KEY" > "$HOME/.ssh/known_hosts" | |
| - name: Deploy docs | |
| env: | |
| DOCS_HOST: ${{ secrets.DOCS_HOST }} | |
| DOCS_PATH: ${{ secrets.DOCS_PATH }} | |
| DOCS_USERNAME: ${{ secrets.DOCS_USERNAME }} | |
| working-directory: target/site/apidocs | |
| run: | | |
| 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 | |
| deploy-artifactory: | |
| name: Deploy to Artifactory | |
| runs-on: ubuntu-latest | |
| needs: [build-all, test-ollama, test-openai, test-remaining] | |
| if: ${{ github.repository_owner == 'spring-projects' }} | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| cache: 'maven' | |
| - name: Setup Maven Build-Cache (~/.m2/build-cache) | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.m2/build-cache | |
| key: build-cache-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} | |
| restore-keys: | | |
| build-cache-${{ runner.os }}- | |
| - name: Deploy to Artifactory | |
| env: | |
| ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} | |
| ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} | |
| run: | | |
| ./mvnw -s settings.xml --batch-mode -ntp -Dmaven.test.skip deploy |