Please find steps below for configuring Declarative Jenkins pipeline using Jenkinsfile.
Pre-requisites:
1. Java Project setup in Bitbucket/GitHub/GitLab
2. Jenkins and Tomcat (web container) set up.
3. Maven installed in Jenkins
4. Sonarqube setup and integrated with Jenkins
5. Nexus configured and integrated with Jenkins
6. Slack channel configured an integrated with Jenkins
Pre-requisites:
1. Java Project setup in Bitbucket/GitHub/GitLab
2. Jenkins and Tomcat (web container) set up.
3. Maven installed in Jenkins
4. Sonarqube setup and integrated with Jenkins
5. Nexus configured and integrated with Jenkins
6. Slack channel configured an integrated with Jenkins
7. Install Pipeline Stage View Plugin
Create Jenkinsfile (pipeline code) to your MyWebApp
Step 1
Go to GitHub and choose the Repo where you setup MyWebApp in Lab exercise # 2
Step 2
Click on create new file.
Step 3 - Enter Jenkinsfile as a file name
Step 4
Copy and paste the below code and make sure what ever is highlighted in red color needs to be changed per your settings.
That's it. Pipeline as a code - Jenkinsfile is setup in GitHub.
pipeline {
agent any
tools {
maven 'Maven3'
}
stages {
stage ('Build') {
steps {
sh 'mvn clean install -f MyWebApp/pom.xml'
}
}
stage ('Code Quality') {
steps {
withSonarQubeEnv('SonarQube') {
sh 'mvn -f MyWebApp/pom.xml sonar:sonar'
}
}
}
stage ('JaCoCo') {
steps {
jacoco()
}
}
stage ('Nexus Upload') {
steps {
nexusArtifactUploader(
nexusVersion: 'nexus3',
protocol: 'http',
nexusUrl: 'nexus_url:8081',
groupId: 'myGroupId',
version: '1.0-SNAPSHOT',
repository: 'maven-snapshots',
credentialsId: 'fc0f1694-3036-41fe-b3e3-4c5d96fcfd26',
artifacts: [
[artifactId: 'MyWebApp',
classifier: '',
file: 'MyWebApp/target/MyWebApp.war',
type: 'war']
])
}
}
stage ('DEV Deploy') {
steps {
echo "deploying to DEV Env "
deploy adapters: [tomcat9(credentialsId: '268c42f6-f2f5-488f-b2aa-f2374d229b2e', path: '', url: 'http://your_public_dns:8080')], contextPath: null, war: '**/*.war'
}
}
stage ('Slack Notification') {
steps {
echo "deployed to DEV Env successfully"
slackSend(channel:'your slack channel_name', message: "Job is successful, here is the info - Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
stage ('DEV Approve') {
steps {
echo "Taking approval from DEV Manager for QA Deployment"
timeout(time: 7, unit: 'DAYS') {
input message: 'Do you want to deploy?', submitter: 'admin'
}
}
}
stage ('QA Deploy') {
steps {
echo "deploying to QA Env "
deploy adapters: [tomcat9(credentialsId: '268c42f6-f2f5-488f-b2aa-f2374d229b2e', path: '', url: 'http://your_dns_name:8080')], contextPath: null, war: '**/*.war'
}
}
stage ('QA Approve') {
steps {
echo "Taking approval from QA manager"
timeout(time: 7, unit: 'DAYS') {
input message: 'Do you want to proceed to PROD?', submitter: 'admin,manager_userid'
}
}
}
stage ('Slack Notification for QA Deploy') {
steps {
echo "deployed to QA Env successfully"
slackSend(channel:'your slack channel_name', message: "Job is successful, here is the info - Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
}
Create Jenkinsfile (pipeline code) to your MyWebApp
Step 1
Go to GitHub and choose the Repo where you setup MyWebApp in Lab exercise # 2
Step 2
Click on create new file.
Step 3 - Enter Jenkinsfile as a file name
Step 4
Copy and paste the below code and make sure what ever is highlighted in red color needs to be changed per your settings.
That's it. Pipeline as a code - Jenkinsfile is setup in GitHub.
pipeline {
agent any
tools {
maven 'Maven3'
}
stages {
stage ('Build') {
steps {
sh 'mvn clean install -f MyWebApp/pom.xml'
}
}
stage ('Code Quality') {
steps {
withSonarQubeEnv('SonarQube') {
sh 'mvn -f MyWebApp/pom.xml sonar:sonar'
}
}
}
stage ('JaCoCo') {
steps {
jacoco()
}
}
stage ('Nexus Upload') {
steps {
nexusArtifactUploader(
nexusVersion: 'nexus3',
protocol: 'http',
nexusUrl: 'nexus_url:8081',
groupId: 'myGroupId',
version: '1.0-SNAPSHOT',
repository: 'maven-snapshots',
credentialsId: 'fc0f1694-3036-41fe-b3e3-4c5d96fcfd26',
artifacts: [
[artifactId: 'MyWebApp',
classifier: '',
file: 'MyWebApp/target/MyWebApp.war',
type: 'war']
])
}
}
stage ('DEV Deploy') {
steps {
echo "deploying to DEV Env "
deploy adapters: [tomcat9(credentialsId: '268c42f6-f2f5-488f-b2aa-f2374d229b2e', path: '', url: 'http://your_public_dns:8080')], contextPath: null, war: '**/*.war'
}
}
stage ('Slack Notification') {
steps {
echo "deployed to DEV Env successfully"
slackSend(channel:'your slack channel_name', message: "Job is successful, here is the info - Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
stage ('DEV Approve') {
steps {
echo "Taking approval from DEV Manager for QA Deployment"
timeout(time: 7, unit: 'DAYS') {
input message: 'Do you want to deploy?', submitter: 'admin'
}
}
}
stage ('QA Deploy') {
steps {
echo "deploying to QA Env "
deploy adapters: [tomcat9(credentialsId: '268c42f6-f2f5-488f-b2aa-f2374d229b2e', path: '', url: 'http://your_dns_name:8080')], contextPath: null, war: '**/*.war'
}
}
stage ('QA Approve') {
steps {
echo "Taking approval from QA manager"
timeout(time: 7, unit: 'DAYS') {
input message: 'Do you want to proceed to PROD?', submitter: 'admin,manager_userid'
}
}
}
stage ('Slack Notification for QA Deploy') {
steps {
echo "deployed to QA Env successfully"
slackSend(channel:'your slack channel_name', message: "Job is successful, here is the info - Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
}
post {
always {
// Clean up workspace
cleanWs()
}
success {
// Notify success (you can add email or Slack notifications here)
echo "Build and deployment successful."
}
failure {
// Notify failure
echo "Build or deployment failed."
}
}
}Step 5
That's it. Pipeline as a code - Jenkinsfile is setup in GitHub.
Click on commit to save into GitHub.
Create Pipeline and Run pipeline from Jenkinsfile
1. Login to Jenkins
2. Click on New item, give some name and choose Pipeline and say OK
3. Under build triggers, choose Poll SCM,
Enter H/02 * * * *
4. Under Pipeline section. click on choose pipeline script from SCM
5. Under SCM, choose Git
6. Enter HTTPS URL of repo and choose credentials - enter user name/password of GitHub.
Script path as Jenkinsfile
7. Click on Apply and Save
8. Click on Build now.
You should see pipeline running and application is deployed to Tomcat.
Declarative Jenkins Pipeline YouTube Video is below:
Can we deploy python web app to tomcat server?
ReplyDeletewhat is the best way to copy code from Bitbucket server to Deployment server via jenkins ??
ReplyDelete