pipeline { agent { node { label 'Wrangler1' } } environment { DOCKER_HOST = 'unix:///var/run/docker.sock' OPENAI_TOKEN = credentials('OpenAI-Token') OLLAMA = 'ollama/ollama' OPENWEBUI = 'ghcr.io/open-webui/open-webui:latest' TIKA = 'apache/tika:latest' CHROMADB = 'chromadb/chroma:latest' CHROMAUI = 'ghcr.io/logspace-ai/chroma-ui:latest' } stages { stage('Check NVIDIA Driver Version') { steps { script { catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE') { sh 'nvidia-smi --query-gpu=driver_version --format=csv,noheader' } } } } stage('Check Ollama and Open-WebUI Versions (Before Deploy)') { steps { script { catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE') { echo 'Checking Ollama version before deploy:' sh 'docker exec -i ollama ollama -v || echo "Ollama check failed"' echo 'Checking Open-WebUI version before deploy:' sh 'docker exec -i openwebui jq -r .version /app/package.json || echo "Open-WebUI check failed"' } } } } stage('Deploy with Docker Compose') { steps { script { withCredentials([usernamePassword(credentialsId: 'gitea-oauth-open-webui-client-id-secret', passwordVariable: 'CLIENT_SECRET', usernameVariable: 'CLIENT_ID'), string(credentialsId: 'OpenAI-API-Token', variable: 'OPEN_AI_TOKEN'), usernamePassword(credentialsId: 'ldap-bind-auth-user', passwordVariable: 'AD_BIND_PASSWORD', usernameVariable: 'AD_BIND_USER')]) { sh """ COMPOSE_PROJECT_NAME=openwebui CHROMAUI=${CHROMAUI} CHROMADB=${CHROMADB} TIKA=${TIKA} OLLAMA=${OLLAMA} OPENWEBUI=${OPENWEBUI} docker compose pull COMPOSE_PROJECT_NAME=openwebui CHROMADB=${CHROMADB} CHROMAUI=$CHROMAUI} TIKA=${TIKA} OLLAMA=${OLLAMA} OPENWEBUI=${OPENWEBUI} docker compose up -d --force-recreate """ } } } } stage('Check Ollama and Open-WebUI Versions (After Deploy)') { steps { script { catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE') { echo 'Checking Ollama version after deploy:' sh 'docker exec -i ollama ollama -v || echo "Ollama check failed"' echo 'Checking Open-WebUI version after deploy:' sh 'docker exec -i openwebui jq -r .version /app/package.json || echo "Open-WebUI check failed"' } } } } } post { always { echo 'Pipeline finished.' } } }