Skip to content

Test event name

Test event name #5

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: Print type
run: |
echo "Type ${{ github.event_name }}"
- 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