SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
©	2016	CloudBees,	Inc.		All	Rights	Reserved
©	2016	CloudBees,	Inc.		All	Rights	Reserved
©	2016	CloudBees,	Inc.		All	Rights	Reserved
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Continuous Delivery as Code
Pipeline and Jenkins 2
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Continuous Delivery
Continuous delivery (CD) is a software engineering approach in
which teams produce software in short cycles, ensuring that
the software can be reliably released at any time. It aims at
building, testing, and releasing software faster and more
frequently. The approach helps reduce the cost, time, and risk
of delivering changes by allowing for more incremental
updates to applications in production. A straightforward and
repeatable deployment process is important for continuous
delivery.
https://en.wikipedia.org/wiki/Continuous_delivery
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Meet Jenkins 2
jenkins.io/2.0
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Jenkins 2 Themes
Pipeline as code: front and center
Improved “out of the box” user
experience
User interface improvements
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Jenkins 2 Themes
Pipeline as code: front and center
Improved “out of the box” user
experience
User interface improvements
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Pipeline as code
• Introduce “Pipeline” as a new type in Jenkins
• Codify an implicit series of stages into an explicit
pipeline definition (Jenkinsfile) in source control
• Resumability/durability of pipeline state
• Extend the DSL to meet organizational needs
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Creating a Pipeline
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Creating a Pipeline
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Creating a Pipeline
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Creating a Pipeline
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Jenkinsfile
node('java8')	{	
stage('Checkout')	{	
checkout	scm	
}	
stage('Build')	{	
sh	'mvn	clean	install'	
}	
stage('Test')	{	
sh	'mvn	test'	
}	
archiveArtifacts	artifacts:	'target/**/*.jar',	fingerprint:	true	
}
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Pipeline Documentation
jenkins.io/doc
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Pipeline Documentation
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Snippet Generator localhost:8080/job/niagara/pipeline-syntax
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Snippet Generator localhost:8080/job/niagara/pipeline-syntax
©	2016	CloudBees,	Inc.		All	Rights	Reserved
DSL Reference localhost:8080/job/niagara/pipeline-syntax/html
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Pipeline Plugins
Extending Pipeline
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Pipeline Stage View plugin
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Pipeline Multibranch plugin
• Represent pipelines for multiple branches in one "Folder"
• Automatically scan a repository for each branch which contains a
Jenkinsfile
©	2016	CloudBees,	Inc.		All	Rights	Reserved
GitHub Organization Folder plugin
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Blue Ocean jenkins.io/projects/blueocean
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Docker Pipeline plugin
def	imageName	=	'jenkinsciinfra/bind'



node('docker')	{

	 checkout	scm

//	Compute	a	unique	image	tag

	 def	imageTag	=	"build-${env.BUILD_NUMBER}"

//	The	`docker`	variable	introduced	by	the	plugin

	 stage('Build')	{

	 	 def	whale	=	docker.build("${imageName}:${imageTag}")	
}

//	Publish	this	image	to	Docker	Hub

	 stage('Deploy')	{

	 	 whale.push()	
}	
}
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Docker Pipeline plugin
node('docker')	{	
//	The	`docker`	variable	introduced	by	the	plugin.	
//	
//	Invoking	our	Gradle	build	inside	a	freshly	spun	up	
//	Docker	container	with	JDK8	
docker.image('openjdk:8-jdk').inside	{	
	 checkout	scm	
	 sh	'./gradlew	--info'	
	 archiveArtifacts	artifacts:	'build/libs/**/*.jar',	fingerprint:	true	
}	
}
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Integration with existing plugins
Pipeline + ??? = Profit.
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Plugins that support Pipeline
• A few plugins which provide custom steps for Pipeline scripts:
– Tooling: Credentials binding, SSH Agent, Parallel Test
– Reporters: JUnit, Brakeman, HTML Publisher, Cucumber Test Result
– Notifiers: Slack, HipChat, email-ext
– Wrappers: Timestamper
• Plugins work within Pipelines
– SCM: Git, SVN, Mercurial, P4, CVS
– Wrappers: Ansi Color, NodeJS
– Build steps: Ant, etc
• More defined in COMPATIBILITY.md
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Steps added by plugins
node	{	
	 /*	other	work	happened	up	here	*/	
	 timestamps	{	
	 	 sh	'mvn	clean	package'	
	 	 junit	'**/target/surefire-reports/*.xml'	
	 }	
if	(env.BRANCH_NAME	==	'master')	{	
sshagent(credentials:	['my-credential-id'])	{	
	 sh	'./run-ssh-deploy-script'	
	 	 }	
	 }	
}
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Build Steps
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Build Wrappers
github.com/jenkinsci/pipeline-examples
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Abstracting Pipeline
Sharing code, best practices and templates for success
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Pipeline Shared Libraries
//	The	call()	method	in	any	file	in	pipeline-library.git/vars	is	exposed	as	a

//	method	with	the	same	name	as	the	file.

def	call(def	mavenOptions)	{	
docker.image('maven').inside	{	
	 timestamps	{	
	 sh	"mvn	clean	install	-Dmaven.test.failure.ignore=true	$
{mavenOptions}"	
}	
junit	'**/target/surefire-reports/**/*.xml'	
}

}
runMaven.groovy
github.com/jenkinsci/pipeline-examples
©	2016	CloudBees,	Inc.		All	Rights	Reserved
node	{	
	 checkout	scm	
	 stage('Build')	{	
//	Loads	runMaven	step	from	the	Shared	Library	and	invokes	it.	
	 	 runMaven	
	 }	
	 stage('Acceptance	Tests')	{	
	 	 git	'git://git.example.com/selenium-tests.git'	
	 	 sh	'./run-selenium.sh'	
	 }	
	 stage('Deploy')	{	
	 	 sh	'./deploy.sh'	
	 }	
}
Pipeline Shared Libraries
Jenkinsfile
github.com/jenkinsci/pipeline-examples
©	2016	CloudBees,	Inc.		All	Rights	Reserved
load step
//	Methods	in	this	file	will	end	up	as	
object	methods	on	the	object	that	load	
returns.

def	lookAtThis(String	whoAreYou)	{

				echo	"Look	at	this,	${whoAreYou}!	You	
loaded	something	from	another	file!"

}	
externalMethod.groovy
github.com/jenkinsci/pipeline-examples
//	If	there's	a	call	method,	you	can	just	
load	the	file,	say,	as	"foo",	and	then	
invoke	that	call	method	with	foo(...)	

def	call(String	whoAreYou)	{

				echo	"${whoAreYou},	say	thanks	to	the	
call(...)	method."

}	
externalCall.groovy
node	{	
		//	Load	the	file	from	the	current	
directory,	
		//	into	a	variable	called	"externalMethod"	
		def	externalMethod	=	
load("externalMethod.groovy")



		//	Call	the	method	we	defined

		externalMethod.lookAtThis("Steve")



		//	Now	load	'externalCall.groovy'.

		def	externalCall	=	
load("externalCall.groovy")



		//	We	can	just	run	it	with	
`externalCall()`

		externalCall("Steve")

}	
Jenkinsfile
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Continuous Delivery as Code
Final Thoughts
©	2016	CloudBees,	Inc.		All	Rights	Reserved
• A new pipeline “type” has been introduced
• Previously implicit pipelines, chained jobs, can now be
made explicit and committed to SCM
• Pipelines have state associated with them and can be
resumed
• It’s code. It can be modified and extended
Final Thoughts
©	2016	CloudBees,	Inc.		All	Rights	Reserved
©	2016	CloudBees,	Inc.		All	Rights	Reserved
Questions/Answers
jenkins.io/2.0
jenkins.io/doc
@jenkinsci

Contenu connexe

Tendances

Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
CloudBees
 

Tendances (20)

Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons KrangaNext-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
 
Continuous Delivery Pipeline with Docker and Jenkins
Continuous Delivery Pipeline with Docker and JenkinsContinuous Delivery Pipeline with Docker and Jenkins
Continuous Delivery Pipeline with Docker and Jenkins
 
Jenkins, pipeline and docker
Jenkins, pipeline and docker Jenkins, pipeline and docker
Jenkins, pipeline and docker
 
Peering Inside the Black Box: A Case for Observability
Peering Inside the Black Box: A Case for ObservabilityPeering Inside the Black Box: A Case for Observability
Peering Inside the Black Box: A Case for Observability
 
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
 
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 PipelineDelivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
 
Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
 
Deployment Automation with Docker
Deployment Automation with DockerDeployment Automation with Docker
Deployment Automation with Docker
 
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-CodeSD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
 
Introduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyIntroduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of Technology
 
Mihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate EverythingMihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate Everything
 
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
 
Demystifying Docker
Demystifying DockerDemystifying Docker
Demystifying Docker
 
JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...
JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...
JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservices
 
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 
Dockerfile Tutorial with Example | Creating your First Dockerfile | Docker Tr...
Dockerfile Tutorial with Example | Creating your First Dockerfile | Docker Tr...Dockerfile Tutorial with Example | Creating your First Dockerfile | Docker Tr...
Dockerfile Tutorial with Example | Creating your First Dockerfile | Docker Tr...
 

Similaire à 7 Habits of Highly Effective Jenkins Users

Similaire à 7 Habits of Highly Effective Jenkins Users (20)

CI/CD Development in Kubernetes - Skaffold
CI/CD Development in Kubernetes -  SkaffoldCI/CD Development in Kubernetes -  Skaffold
CI/CD Development in Kubernetes - Skaffold
 
How to Dockerize Web Application using Docker Compose
How to Dockerize Web Application using Docker ComposeHow to Dockerize Web Application using Docker Compose
How to Dockerize Web Application using Docker Compose
 
Code Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherCode Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et Rancher
 
Cicd.pdf
Cicd.pdfCicd.pdf
Cicd.pdf
 
Docker In Brief
Docker In BriefDocker In Brief
Docker In Brief
 
Continous delivery at docker age
Continous delivery at docker ageContinous delivery at docker age
Continous delivery at docker age
 
Demystifying Docker101
Demystifying Docker101Demystifying Docker101
Demystifying Docker101
 
Cloud native buildpacks-cncf
Cloud native buildpacks-cncfCloud native buildpacks-cncf
Cloud native buildpacks-cncf
 
Code Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherCode Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et Rancher
 
[Devopsdays2021] Roll Your Product with Kaizen Culture
[Devopsdays2021] Roll Your Product with Kaizen Culture[Devopsdays2021] Roll Your Product with Kaizen Culture
[Devopsdays2021] Roll Your Product with Kaizen Culture
 
Locally it worked! virtualizing docker
Locally it worked! virtualizing dockerLocally it worked! virtualizing docker
Locally it worked! virtualizing docker
 
Azure DevOps in Action
Azure DevOps in ActionAzure DevOps in Action
Azure DevOps in Action
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
 
Serverless Container with Source2Image
Serverless Container with Source2ImageServerless Container with Source2Image
Serverless Container with Source2Image
 
Serverless containers … with source-to-image
Serverless containers  … with source-to-imageServerless containers  … with source-to-image
Serverless containers … with source-to-image
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
 
Development workflow guide for building docker apps
Development workflow guide for building docker appsDevelopment workflow guide for building docker apps
Development workflow guide for building docker apps
 
Development workflow guide for building docker apps
Development workflow guide for building docker appsDevelopment workflow guide for building docker apps
Development workflow guide for building docker apps
 
Docker and Jenkins [as code]
Docker and Jenkins [as code]Docker and Jenkins [as code]
Docker and Jenkins [as code]
 

Plus de Jules Pierre-Louis

Plus de Jules Pierre-Louis (18)

The Coming Earthquake in IIS and SQL Configuration Management
The Coming Earthquake  in IIS and SQL Configuration ManagementThe Coming Earthquake  in IIS and SQL Configuration Management
The Coming Earthquake in IIS and SQL Configuration Management
 
Diving Deeper into DevOps Deployments
Diving Deeper into DevOps DeploymentsDiving Deeper into DevOps Deployments
Diving Deeper into DevOps Deployments
 
Microservice Monitoring and Quality Management for Modern Apps and Infrastruc...
Microservice Monitoring and Quality Management for Modern Apps and Infrastruc...Microservice Monitoring and Quality Management for Modern Apps and Infrastruc...
Microservice Monitoring and Quality Management for Modern Apps and Infrastruc...
 
The Human Side of DevSecOps
The Human Side of DevSecOpsThe Human Side of DevSecOps
The Human Side of DevSecOps
 
Sandstorm or Significant: The evolving role of context in Incident Management
Sandstorm or Significant: The evolving role of context in Incident ManagementSandstorm or Significant: The evolving role of context in Incident Management
Sandstorm or Significant: The evolving role of context in Incident Management
 
Cloud bees and forester open source is not enough
Cloud bees and forester open source is not enough  Cloud bees and forester open source is not enough
Cloud bees and forester open source is not enough
 
From Monolith to Microservices – and Beyond!
From Monolith to Microservices – and Beyond!From Monolith to Microservices – and Beyond!
From Monolith to Microservices – and Beyond!
 
Efficient Performance Test Automation - Opitmizing the Jenkins Pipeline
Efficient Performance Test Automation - Opitmizing the Jenkins PipelineEfficient Performance Test Automation - Opitmizing the Jenkins Pipeline
Efficient Performance Test Automation - Opitmizing the Jenkins Pipeline
 
How to Build the Right Automation
How to Build the Right AutomationHow to Build the Right Automation
How to Build the Right Automation
 
Starting and Scaling Devops
Starting and Scaling Devops Starting and Scaling Devops
Starting and Scaling Devops
 
Starting and Scaling DevOps
Starting and Scaling DevOpsStarting and Scaling DevOps
Starting and Scaling DevOps
 
Containers: DevOp Enablers of Technical Solutions
Containers: DevOp Enablers of Technical SolutionsContainers: DevOp Enablers of Technical Solutions
Containers: DevOp Enablers of Technical Solutions
 
Adopting DevOps @ Scale: Lessons learned at Hertz, Kaiser Permanente and lBM
Adopting DevOps @ Scale: Lessons learned at Hertz, Kaiser Permanente and lBMAdopting DevOps @ Scale: Lessons learned at Hertz, Kaiser Permanente and lBM
Adopting DevOps @ Scale: Lessons learned at Hertz, Kaiser Permanente and lBM
 
Managing Quality of Service for Containerized Microservice Applications
Managing Quality of Service for Containerized Microservice ApplicationsManaging Quality of Service for Containerized Microservice Applications
Managing Quality of Service for Containerized Microservice Applications
 
The Evolution of Application Release Automation
The Evolution of Application Release AutomationThe Evolution of Application Release Automation
The Evolution of Application Release Automation
 
DevOPs Transformation Workshop
DevOPs Transformation WorkshopDevOPs Transformation Workshop
DevOPs Transformation Workshop
 
Pipeline: Continuous Delivery as Code in Jenkins 2.0
Pipeline: Continuous Delivery as Code in Jenkins 2.0Pipeline: Continuous Delivery as Code in Jenkins 2.0
Pipeline: Continuous Delivery as Code in Jenkins 2.0
 
Webinar: A Roadmap for DevOps Success
Webinar: A Roadmap for DevOps SuccessWebinar: A Roadmap for DevOps Success
Webinar: A Roadmap for DevOps Success
 

Dernier

%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

Dernier (20)

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 

7 Habits of Highly Effective Jenkins Users