SlideShare a Scribd company logo
1 of 36
Download to read offline
Continuous	Delivery	for	Open	Source	projects
Marcin	Zajączkowski
About	me
Areas	of	expertise
Automatic	Testing	/	TDD
Software	Craftsmanship	/	Code	Quality
Concurrency	/	Parallel	Computing	/	Reactive	Systems
Deployment	Automation	/	Continuous	Delivery
FOSS	projects	author	and	contributor,	blogger,	trainer
CTO	of	small	software	house	-	Codearte
targeted	at	clients	who	care	about	the	quality
2	interesting	companies
Agenda
issues	with	manual	releasing
prerequisites
vision
implementation	steps
available	solutions
CDeliveryBoy
best	practices
Presentation	goal
Continuous	Delivery	in	FOSS	projects
is	not	science	fiction
Manual	releasing	-	issues
local	workstation	configuration
magical	incantations,	necessarily	in	correct	order
not	repeatable	and	not	reliable
longer	feedback	loop
(developer's)	time	consuming
boring...
Continuous	Delivery	(in	general)
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.
Based	on	Wikipedia
Continuous	Delivery	(in	general	-	points)
every	build	is	a	release	candidate
can	be	possibly	deployed	to	production
faster	and	more	often	releases
shorter	time	to	market	(TTM)
reduced	risk	of	delivering	changes
omnipresent	automation
repeatable	builds	&	deployments
high	confidence	in	automatic	tests
unit,	integration,	acceptance,	...
Continuous	Delivery	(in	FOSS	project)
usually	library/framework/tool
much	simpler	release	pipeline
no	deployment	to	different	environments
no	database	migration
no	...
indirect	deployment	to	production
end	applications	should	be	tested	independently
Prerequisites	for	CD
automatized	builds
on	CI	server
high	code	quality	with	strong	set	of	automatic	tests
no	manual	testing	before	release
preferably	with	integration/acceptance	tests
Prerequisites	for	CD
automatized	builds
on	CI	server
high	code	quality	with	strong	set	of	automatic	tests
no	manual	testing	before	release
preferably	with	integration/acceptance	tests	
when	fulfilled
"only"	infrastructure	release	part	remains	to	add
(My)	Vision
everything	after	commit	done	automatically	on	(public)	CI	server
artifacts	immediately	available	in	Maven	Central
all	release	logic	hidden	in	build	tool	plugin
shell	scripting	reduced	to	minimum
convention	over	configuration
works	by	default	in	most	cases
on	demand	releasing
triggered	by	command	in	commit	message
CD	-	steps	-	bird's-eye	view
bump	version	number	in	local	Git	repository
build,	sign	and	upload	artifacts	to	artifacts	repository	(Nexus)
push	changes	to	GitHub
promote/release	uploaded	artifacts	to	Maven	Central
post-publish	operations
CD	-	bump	version	number
increase	project	version	number	locally
make	release	commit
create	version	tag	on	release	commit
CD	-	bump	version	number
increase	project	version	number	locally
make	release	commit
create	version	tag	on	release	commit
Git	tags	-	ultimate	information	about	current	version
CD	-	build	&	upload	artifacts
build	artifacts
sign	artifacts
upload	artifacts	to	artifacts	repository	(Nexus)
CD	-	push	changes	in	Git
push	release	commit
push	release	tag
CD	-	promote	artifacts
promote	artifacts	to	Maven	Central
via	Nexus	REST	API
CD	-	promote	artifacts
promote	artifacts	to	Maven	Central
via	Nexus	REST	API
artifacts	available	for	everyone	in	a	few	minutes
CD	-	post-publish	operations
generate	release	notes
close/create	milestone
send	notifications
...
Self	motivation
maintainer	of	a	bunch	of	FOSS	projects
non	trivial	release	configuration
versioning,	tagging,	artifacts	promotion,	...
even	for	manual	releasing
hard	to	maintain	across	projects
no	suitable	CD	solution	on	the	market
every	committer	should	be	able	to	perform	release
big	fan	of	automation
especially	of	regularly	performed	operations
C(ontinuous)DeliveryBoy
comprehensive	mechanism	for	CD	in	FOSS	projects
with	clearly	defined	workflow/conventions
Gradle	plugin	with	sensible	defaults
GitHub,	Travis	and	Maven	Central	supported	out-of-box
JVM	language	agnostic	(Java,	Gradle,	Scala,	Kotlin,	...)
specialized	tools	used	internally	for	specific	activities
Axion	plugin,	Nexus	plugin,	Nexus	Staging	plugin
best	to	setup	new	project
can	be	also	applied	on	existing	Gradle	projects
inspired	by	CD	mechanism	in	Mockito	by	Szczepan	Faber
CDeliveryBoy	-	sample	configuration
cDeliveryBoy	{
				ciType	=	"travis"
				git	{
								releaseBranch	=	"release"
								user	=	"Heniek	CI"
								email	=	"heniek-ci@coolfoss.io"
				}
				trigger	{
								releaseOnDemand	=	true
								onDemandReleaseTriggerCommand	=	"GOGOGO!"
				}
				nexus	{
								autoPromote	=	true
								packageGroup	=	"io.coolfoss"
				}
				tasks	{
								buildProject	=	["fancyBuild"]
				}
}
CDeliveryBoy	-	triggering	release
by	default	new	snapshot	version	is	produced
"magic"	command	in	commit	message	to	make	a	release
git	commit	-m	"Trigger	release"	-m	"[#DO_RELEASE]"	--allow-empty
CDeliveryBoy	-	triggering	release
by	default	new	snapshot	version	is	produced
"magic"	command	in	commit	message	to	make	a	release
git	commit	-m	"Trigger	release"	-m	"[#DO_RELEASE]"	--allow-empty
can	be	also	added	from	GitHub	UI	when	merging	PR
new	release	possible	using	mobile	phone
useful	when	on	holidays	:)
CDeliveryBoy	in	action
Let's	release	something
Project	status	(as	of	X	2016)
basic	scenarios	work
self-released
under	heavy	development
things	may	change	-	use	with	caution	:)
https://github.com/szpak/CDeliveryBoy
Limitations/drawbacks	(as	of	X	2016)
still	a	few	manual	steps	at	the	beginning
especially	for	the	first	project
some	errors	during	release	has	to	be	resolved/reverted	manually
Axion	plugin	doesn't	support	setting	custom	Git	refspec
direct	Git	execution	as	temporary	workaround
no	automatic	acceptance	tests	in	Travis-like	environment
Possible	enhancements	(as	of	X	2016)
next	version	number	defined	in	commit	message
rollback	steps
whenever	possible
more	flexible	list	of	steps	definition
automatic	release	notes	generation
based	on	closed	issues/pull	requests
new	preconfigured	project	bootstrapping
with	Lazybones?
Alternatives
Alternatives	-	homemade	scripts
with	Gradle	-	(almost)	the	sky	is	the	limit	:)
a	lot	of	plugins	available	to	glue	together
Axion	plugin,	gradle-git	plugin,	Nexus	plugin,	Nexus	Staging	plugin,	...
can	learn	much	about	Gradle,	Git	and	releasing	:)
Alternatives	-	Bintray
take	care	of	artifacts	upload
Bintray/JCenter	by	default
can	optionally	sync	to	Maven	Central
still	have	to	handle	versioning	and	Git	operations	manually
micro-common-release	can	be	used	to	glue	everything	together
yet,	it	is	rather	a	set	of	scripts	than	reusable	component
Best	practices	(for	FOSS	projects)
new	version	release	only	when	appropriate
releasing	every	single	commit	can	be	too	often
e.g.	Mockito	2.0	lesson	learned	-	100+	beta	versions
effective	integration/acceptance	tests	to	prevent	regressions
Summary
fast	feedback	loop
not	released	feature	is	not	very	useful
code	quality	&	strong	test	harness	matter
in	general
CD	in	your	FOSS	project	might	be
doable/feasible
effortless	(when	implemented	:)	)
beneficial
Thank	you!
(and	remember	about	feedback)
Marcin	Zajączkowski
http://blog.solidsoft.info/	
@SolidSoftBlog	
m.zajaczkowski@gmail.com
Questions?
(and	remember	about	feedback)
Marcin	Zajączkowski
http://blog.solidsoft.info/	
@SolidSoftBlog	
m.zajaczkowski@gmail.com

More Related Content

What's hot

Extreme programming
Extreme programmingExtreme programming
Extreme programming
aaina_katyal
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming
Fatemeh Karimi
 
Xp exterme-programming-model
Xp exterme-programming-modelXp exterme-programming-model
Xp exterme-programming-model
Ali MasudianPour
 
Jun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINAL
Jun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINALJun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINAL
Jun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINAL
Alex Tarra
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
Mr SMAK
 

What's hot (20)

INTRODUCTION TO SOFTWARE ENGINEERING
INTRODUCTION TO SOFTWARE ENGINEERINGINTRODUCTION TO SOFTWARE ENGINEERING
INTRODUCTION TO SOFTWARE ENGINEERING
 
Xp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentationXp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentation
 
Agile Practices - eXtreme Programming
Agile Practices - eXtreme ProgrammingAgile Practices - eXtreme Programming
Agile Practices - eXtreme Programming
 
07 fse implementation
07 fse implementation07 fse implementation
07 fse implementation
 
SE chapter 5
SE chapter 5SE chapter 5
SE chapter 5
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming
 
Improving software economics
Improving software economicsImproving software economics
Improving software economics
 
Chapter 14
Chapter 14Chapter 14
Chapter 14
 
extreme programming
extreme programmingextreme programming
extreme programming
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
The Extreme Programming (XP) Model
The Extreme Programming (XP) ModelThe Extreme Programming (XP) Model
The Extreme Programming (XP) Model
 
Xp exterme-programming-model
Xp exterme-programming-modelXp exterme-programming-model
Xp exterme-programming-model
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Improving software economics - Top 10 principles of achieving agility at scale
Improving software economics - Top 10 principles of achieving agility at scaleImproving software economics - Top 10 principles of achieving agility at scale
Improving software economics - Top 10 principles of achieving agility at scale
 
Jun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINAL
Jun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINALJun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINAL
Jun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINAL
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
extreme Programming
extreme Programmingextreme Programming
extreme Programming
 
Dev ops
Dev opsDev ops
Dev ops
 
eXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OvervieweXtreme programming (XP) - An Overview
eXtreme programming (XP) - An Overview
 

Similar to JDD 2016 - Marcin Zajaczkowski - Cd for open source

Continuous integration for se group meeting
Continuous integration for se group meetingContinuous integration for se group meeting
Continuous integration for se group meeting
Sergii Shmarkatiuk
 

Similar to JDD 2016 - Marcin Zajaczkowski - Cd for open source (20)

Boast the Potential of DevOps with CI CD
Boast the Potential of DevOps with CI CDBoast the Potential of DevOps with CI CD
Boast the Potential of DevOps with CI CD
 
continous integration and delivery
continous integration and deliverycontinous integration and delivery
continous integration and delivery
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
 
Continuous, continuous, continuous
Continuous, continuous, continuousContinuous, continuous, continuous
Continuous, continuous, continuous
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project success
 
Pete Marshall - casmadrid2015 - Continuous Delivery in Legacy Environments
Pete Marshall - casmadrid2015 - Continuous Delivery in Legacy EnvironmentsPete Marshall - casmadrid2015 - Continuous Delivery in Legacy Environments
Pete Marshall - casmadrid2015 - Continuous Delivery in Legacy Environments
 
Webinar - Design Thinking for Platform Engineering
Webinar - Design Thinking for Platform EngineeringWebinar - Design Thinking for Platform Engineering
Webinar - Design Thinking for Platform Engineering
 
Conventional and Object Oriented Software Engineering
Conventional and Object Oriented Software EngineeringConventional and Object Oriented Software Engineering
Conventional and Object Oriented Software Engineering
 
Dev ops culture and practices
Dev ops culture  and  practicesDev ops culture  and  practices
Dev ops culture and practices
 
How DevOps Services Can Accelerate the Software Development Process
How DevOps Services Can Accelerate the Software Development ProcessHow DevOps Services Can Accelerate the Software Development Process
How DevOps Services Can Accelerate the Software Development Process
 
DevOps Overview
DevOps OverviewDevOps Overview
DevOps Overview
 
How to build successful blocks of DevOps
How to build successful blocks of DevOpsHow to build successful blocks of DevOps
How to build successful blocks of DevOps
 
How to build successful blocks of DevOps
How to build successful blocks of DevOpsHow to build successful blocks of DevOps
How to build successful blocks of DevOps
 
Agile And Open Development
Agile And Open DevelopmentAgile And Open Development
Agile And Open Development
 
Continuous integration for se group meeting
Continuous integration for se group meetingContinuous integration for se group meeting
Continuous integration for se group meeting
 
Continues delivery - Introduction
Continues delivery - IntroductionContinues delivery - Introduction
Continues delivery - Introduction
 
Lecture1422914635
Lecture1422914635Lecture1422914635
Lecture1422914635
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
DevOps
DevOps DevOps
DevOps
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 

JDD 2016 - Marcin Zajaczkowski - Cd for open source