# Spring Boot App Failing to Start in Azure DevOps CD Pipeline – Need Insights!

**URL:** <https://community.jenkins.io/t/spring-boot-app-failing-to-start-in-azure-devops-cd-pipeline-need-insights/26569>\
**Category:** Using Jenkins\
**Tags:** question, java, pipeline\
**Created:** [February 4, 2025, 5:41pm UTC](https://community.jenkins.io/t/spring-boot-app-failing-to-start-in-azure-devops-cd-pipeline-need-insights/26569 "2025-02-04T17:41:38Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![pratul233](https://avatars.discourse-cdn.com/v4/letter/p/d78d45/32.png) [@pratul233](https://community.jenkins.io/u/pratul233)\
**Post date:** [February 4, 2025, 5:41pm UTC](https://community.jenkins.io/t/spring-boot-app-failing-to-start-in-azure-devops-cd-pipeline-need-insights/26569/1 "2025-02-04T17:41:38Z")

</div>

Spring Boot App Failing to Start in Azure DevOps CD Pipeline – Need Insights!

Hey Tech Community!

I’m working on a CI/CD pipeline in Azure DevOps by using Jenkins as my build pipeline to deploy a Spring Boot application on an Azure LinuxVM. The Build Pipeline with Jenkins (using service hook) & deployment to Azure Linux VM was successful initially, but I faced an issue accessing the app via the browser.

Here’s my BUILD Repository which I picked from Online:

> **[GitHub - prak233/springBoot233: contains Spring Boot Files](https://github.com/prak233/springBoot233)**
>
> contains Spring Boot Files

After tweaking the script, the pipeline now **fails at the application start up stage** , throwing the error:

🔴 “Spring Boot application failed to start.”  
🔴 “JAR file not found!” (even though the file is present in `/home/pratul/deploy/`)

### **🛠 Debugging Steps Tried So Far:**

✅ Verified Java is installed(`openjdk version "17.0.13"`)  
✅ Checked if **the JAR file exists** (`ls -l` confirms it’s there)  
✅ Tried manually startingthe app: `java -jar spring-boot-initial-0.0.1-SNAPSHOT.jar`  
✅ Used `netstat -tulnp | grep 8080` to check if the port is in use  
✅ Killed existing processes on port **8080** before restart  
getting this error even though correct path is given with correct permission as -rw in user level

### **📌 YAML Deployment Script (Relevant Snippet)**

`yaml Script`

- task: AzureCLI@2  
displayName: ‘Install Java & Start Spring Boot Application’  
inputs:  
azureSubscription: ‘Pay-As-You-Go’  
scriptType: ‘bash’  
scriptLocation: ‘inlineScript’  
inlineScript: |  
VM\_IP=‘52.229.163.139’  
USERNAME=‘pratul’  
SSH\_KEY\_PATH=‘/azagent/revisit-linuxVM\_key.pem’  
ssh -i $SSH\_KEY\_PATH -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $USERNAME@$VM\_IP \<\< ‘EOF’

set -ex  
DEPLOY\_DIR=“/home/$USERNAME/deploy”  
JAR\_FILE=“spring-boot-initial-0.0.1-SNAPSHOT.jar”

# Kill existing process on port 8080

sudo fuser -k 8080/tcp || true

# Start the application

nohup java -Xmx512m -Xms256m -jar $DEPLOY\_DIR/$JAR\_FILE \> $DEPLOY\_DIR/app.log 2\>&1 &  
sleep 5

# Verify if the process is running

if pgrep -f “$JAR\_FILE”; then

echo “✅Spring Boot application started successfully!”

else  
echo “❌ERROR: Spring Boot application failed to start.”  
echo “📄App Log:”  
cat $DEPLOY\_DIR/app.log  
exit 1  
fi  
EOF

````auto

Files present in “/home/pratul/deploy”

###Possible Causes?

- File permission issues? (`chmod +x` didn't help)
- Java process starting but failing silently?
- Any missing dependencies?

Has anyone encountered this issue before? What could be causing the failure despite the JAR file being present?
Any insights or debugging tips would be greatly appreciated! 🚀
#AzureDevOps #SpringBoot #CI_CD #DevOps #Azure #Linux #TechHelp #CloudComputing

```For reference here’s the full script:```
trigger:
- none
pool:

vmImage: windows-latest

stages:
- stage: BuildStage

displayName: BuildStage
jobs:

- job: CIJob
displayName: "Jenkins Build JOB"
steps:
- task: JenkinsQueueJob@2
displayName: "Queue Task"
inputs:
serverEndpoint: 'Jenkins-SRC'
jobName: 'revisit-CICD'
isMultibranchJob: true
multibranchPipelineBranch: 'feature/test'
captureConsole: true
capturePipeline: true
isParameterizedJob: false
- task: JenkinsDownloadArtifacts@2
displayName: "Download Artifact Task"
inputs:
jenkinsServerConnection: 'Jenkins-SRC'
jobName: 'revisit-CICD'
saveTo: '$(Build.StagingDirectory)'
jenkinsBuild: 'LastSuccessfulBuild'
- task: PublishBuildArtifacts@1
displayName: "Publish Artifact Task"
inputs:
PathtoPublish: '$(Build.StagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
- stage: DeployStage
dependsOn: BuildStage
displayName: DeployStage
jobs:

- deployment: deploytoVM
displayName: 'deploytoVM'
environment:
name: 'MyEnv'
resourceType: VirtualMachine
tags: 'linux'
strategy:
runOnce:
deploy:
steps:
- task: DownloadPipelineArtifact@2
displayName: "Download Pipeline Build Artifact"
inputs:
artifactName: drop
targetPath: '$(pipeline.artifact)'
- task: AzureCLI@2
displayName: 'Copy Files to Linux VM'
inputs:
azureSubscription: 'Pay-As-You-Go(52ebb814-d1d8-427b-badb-92e9e2108392)'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
# Define variables
ARTIFACT_PATH="/azagent/_work/1/drop/initial/target/spring-boot-initial-0.0.1-SNAPSHOT.jar"
VM_IP='52.229.163.139'
USERNAME='pratul'
SSH_KEY_PATH='/azagent/revisit-linuxVM_key.pem'
ls -l $SSH_KEY_PATH
ls -l $ARTIFACT_PATH
mkdir -p /home/$USERNAME/deploy/
# chmod 664 /home/$USERNAME/deploy/
# Copy JAR file to the Linux VM
scp -i $SSH_KEY_PATH -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $ARTIFACT_PATH $USERNAME@$VM_IP:/home/$USERNAME/deploy/
- task: AzureCLI@2
displayName: 'Install Java & Start Spring Boot Application'
inputs:
azureSubscription: 'Pay-As-You-Go(52ebb814-d1d8-427b-badb-92e9e2108392)'
scriptType: 'bash'

scriptLocation: 'inlineScript'
inlineScript: |
VM_IP='52.229.163.139'
USERNAME='pratul'
SSH_KEY_PATH='/azagent/revisit-linuxVM_key.pem'
ssh -i _KEY_PATH -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $USERNAME@$VM_IP << 'EOF'
set -ex
DEPLOY_DIR="/home/$USERNAME/deploy"
JAR_FILE="spring-boot-initial-0.0.1-SNAPSHOT.jar"
# Kill any existing process on port 8080

sudo fuser -k 8080/tcp || true
# Start the application and log output
nohup java -Xmx512m -Xms256m -jar \$DEPLOY_DIR/\$JAR_FILE > \$DEPLOY_DIR/app.log 2>&1 &
sleep 5
# Check if the process started

if pgrep -f "\$JAR_FILE"; then
echo "✅ Spring Boot application started successfully!"
else

echo "❌ ERROR Spring Boot application failed to start."
echo "📄 App Log:"

cat \$DEPLOY_DIR/app.log

exit 1
fi
EOF

````

SCREENSHOTS FOR REFERENCE

 ![Picture1](https://europe1.discourse-cdn.com/flex013/uploads/jenkins/original/2X/3/3eb58a55f6852b5325b67ff0c904ba9b6ff879c9.png)  
 ![Picture2](https://europe1.discourse-cdn.com/flex013/uploads/jenkins/original/2X/4/4322fd466e1e151f8b2417ed5cee359e4f17d8e0.png)  
 ![Picture3](https://europe1.discourse-cdn.com/flex013/uploads/jenkins/original/2X/1/195dec0aa5fade57a59a3cd2fdb0edbc32988230.png)  
 ![Picture4](https://europe1.discourse-cdn.com/flex013/uploads/jenkins/original/2X/b/be3cfa34e29bbbf28605fc209cffe79997b07f02.png)
