- Pipelines are better than freestyle jobs, you can write a lot of complex tasks using pipelines when compared to Freestyle jobs.
- You can see how long each stage takes time to execute so you have more control compared to freestyle.
- Pipeline is groovy based script that have set of plug-ins integrated for automating the builds, deployment and test execution.
- Pipeline defines your entire build process, which typically includes stages for building an application, testing it and then delivering it.
- You can use snippet generator to generate pipeline code for the stages you don't know how to write groovy code.
- Pipelines are two types - Scripted pipeline and Declarative pipeline. Click here to know the difference between them.
Pre-requisites:
Install plug-ins 1. Install Pipeline stage view, Deploy to container, Slack, Jacoco, Nexus Artifact Uploader and SonarQube, pipeline stage view plug-ins (if already installed, you can skip it) Steps to Create Scripted Pipeline in Jenkins
1. Login to Jenkins
2. Create a New item
3. Give name as MyfirstPipelineJob and choose pipeline
4. Click ok. Pipeline is created now
5. Under build triggers, click on poll SCM, schedule as
H/02 * * * *
6. Go to Pipeline definition section, click on Pipeline syntax link. under sample step drop down, choose checkout: Checkout from version control. enter bitbucket or GitHub Repository URL, and enter right credentials. Click here to learn to use PAT if you are using GitHub. scroll down, click on Generate Pipeline script. Copy the code.
7. Now copy the below pipeline code highlighted section into Pipeline section in the pipeline. Please copy stage by stage
8. Change Maven3, SonarQube variables and also Slack channel name as highlighted above in red as per your settings.
9. For Nexus Upload stage, You need to change the Nexus URL and credentials ID for Nexus (which you can grab from Credentials tab after login)
10. For Dev Deploy stage, you can copy credentials ID used for connecting to Tomcat.
Pipeline Code:
node {
def mvnHome = tool 'Maven3'
stage ("checkout") { copy code here which you generated from step #6
}
stage ('build') {
sh "${mvnHome}/bin/mvn clean install -f MyWebApp/pom.xml"
}
stage ('Slack notification') {
slackSend(channel:'channel-name', message: "Job is successful, here is the info - Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
stage ('DEV Approve') { echo "Taking approval from DEV Manager for QA Deployment" timeout(time: 7, unit: 'DAYS') { input message: 'Do you approve QA Deployment?', submitter: 'admin' } }
stage ('QA notify') { slackSend(channel:'channel-name', message: "QA Deployment was successful, here is the info - Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") }
stage ('QA Approve') {
echo "Taking approval from QA manager"
timeout(time: 7, unit: 'DAYS') {
input message: 'Do you want to proceed to PROD Deploy?', submitter: 'admin,manager_userid'
}
Terraform is an infrastructure orchestration tool for creating web services in AWS automatically. You can use Terraform for provisioning S3 bucket in AWS.
Please
find the Ansible Playbook for provisioning a new EC2 instance. Please
follow the below steps in the machine where you installed Ansible. Steps to create EC2
instance using Ansible:
1. Login to AWS console, click on username and go to My
security credentials. 2.
Continue on security credentials, click on access keys 3.
Create a new access key if you dont have one. Make sure you download the keys. 4.
Login to EC2 instance using Git bash or ITerm where you installed Ansible.
execute
the below command
sudo vi ~/.boto
add
below three lines in the above file, replace the ?? with access key and secret
key values.
[Credentials]
aws_access_key_id = ??
aws_secret_access_key = ??
5. Edit Ansible hosts or inventory file sudo vi /etc/ansible/hosts Add the below
two lines in the end of the file: [localhost] local
6. cd ~ 7. mkdir playbooks
8. cd playbooks
Create Ansible playbook
9. sudo vi create_jenkins_ec2.yml (copy the below content in green
color)
edit the create_jenkins_ec2.yml to make sure you update the key which is
red marked below:
---
- name:provisioning EC2 Lab Exercises using Ansible