How to use Jenkinsfile in a Pipeline(Pipeline As Code)/Convert your Scripted Pipeline into Jenkinsfile
Prerequisite: Please make sure you have completed Exercise on :https://violetstreamstechnology.blogspot.com/2020/09/understanding-pipelines-how-to-create.html
What is a JenkinsFile?
Jenkins pipelines can be defined using a text file called JenkinsFile. You can implement pipeline as code using JenkinsFile, and this can be defined by using a domain specific language (DSL). With JenkinsFile, you can write the steps needed for running a Jenkins pipeline.
The benefits of using JenkinsFile are:
- You can create pipelines automatically for all branches and execute pull requests with just one JenkinsFile.
- You can review your code on the pipeline
- You can audit your Jenkins pipeline
- This is the singular source for your pipeline and can be modified by multiple users.
IF you remember how our last pipeline looked like from https://violetstreamstechnology.blogspot.com/2020/09/understanding-pipelines-how-to-create.html
This pipeline was defined by the groovy code that was placed in the pipeline section of the Job.
You would notice something, Anyone that has access to this job can modify the pipeline as they wish. This can cause lots of problems especially when you have large teams. Developers can manipulate their builds to always pass, No accountability and integrity of process, Zero maintainability, and lots more
To remediate all this issues Jenkins gives us the ability to use Jenkinsfile so that the code we store in Jenkins can be placed in a Repo and can be version controlled.
How to convert your existing Jenkins Pipeline to Jenkinsfile
Step 1:
Go to your Project in your computer and open git bash.
step3: Create a New File in Vscode and name it Jenkinsfile(note: this file has no extensions)
step 4 Go to your Existing Jenkins Pipeline and copy the pipeline code and paste into the Jenkinsfile
node {
stage ('Checkout') {
build job: 'CheckOut'
}
stage ('Build') {
build job: 'Build'
}
stage ('Code Quality scan') {
build job: 'Code_Quality'
}
stage('Archive Artifacts') {
build job: 'Archive_Artifacts'
}
stage('Publish to Artifactory') {
build job: 'Publish_To_Artifactory'
}
stage ('DEV Approve')
{
echo "Taking approval from DEV"
timeout(time: 7, unit: 'DAYS') {
input message: 'Do you want to deploy?', submitter: 'admin'
}
}
stage ('DEV Deploy')
{
build job: 'Deploy_To_Container'
}
stage ('Slack notification') {
build job: 'Slack_Notification'
}
}
Step 5: Save and push your changes to your repo( You can do this with Vscode also, but I will use git bash)
Step 6: Go to jenkins and create a new Pipeline Job: Pipeline_From_JenkinsFile
Select Pipeline From SCM
Enter credentials for Bitbucket, Specify the Branch, Make sure script path is Jenkinsfile
Step 7: Save and Run
No comments:
Post a Comment