The document discusses the concept of continuous release using a binary repository. It begins by outlining some of the advantages of continuous delivery for both users and developers. It then discusses some of the challenges that continuous delivery poses for operations teams who are used to more infrequent release cycles. The rest of the document focuses on how a binary repository like Artifactory can help address these challenges by enabling traceability between code and released binaries, flexible release automation through its REST API and support for plugins, and management of access rights and versions for artifacts in development, staging and production environments.
6. What’s So Good About *aaS?
*aaS features Continuous Delivery
6
7. Continuous Delivery FTW
User advantages
> Latest version/features
> No upgrades/maintenance
Developer advantages
> Agile
> Rapid feedback
> Users are the best beta-testers
> No long-term support
Everybody wins?
7
8. Almost, except the IT
Used to quarterly release cycles
“Secure” pace
Minimizing the entropy caused by
developers with ADD
8
10. Continuous Delivery Challenge
Very frequent releases
More than one version in production
Complicated access levels
Root cause analysis
> Tracing from binaries to source
Version tracking
Not everyone is ready for CD
10
11. Continuous Delivery Challenge
Very frequent releases
More than one version in production
Complicated access levels
Root cause analysis
> Tracing from binaries to source
Version tracking
Not everyone is ready for CD
11
12. It’s… Agile!
Agile principles applied for DevOps
We have good tooling for Agile
development
> Version control
> Unit testing and code coverage
> CI servers
> Hot swap tools
What’s up with tooling for agile DevOps?
12
13. Agile Tooling for DevOps Checklist
Versioning
Access control
Traceability
Promotions
Tags and
annotations
Search
13
14. Recursive Slide with Baby Photo
Artifactory is released
with Artifactory
JFrog SaaS offering
> Artifactory Online
› Gradle, Grails, SpringSou
rce, Typesafe, Jenkins, e
tc.
We build, release and
eat our own dog food
> Continuously
14
20. Binaries All the Way
From some point product in your
lifecycle, all you care about is binaries
Lots of things to do after the software is
built
20
27. Quest for Traceability
What should be restored?
> Sources
> Dependencies
> Environment details
> Tags
Where’s the information?
> Version control system
> Build Tool
> Build server
27
28. Rebuilding from Sources
Checkout branch/tag/revision
Build
Done!
Time consuming
Unstable
28
42. Target: Automation
It’s impossible to release frequently with
manual procedures
> While maintaining quality
Use your binaries storage to release
42
43. THE MAGIC OF RELEASE
Put your repository to work
44. Release Candidates
Your next build is a release-candidate
Once successfully built and tested, click
the button
> Automatic versions switch
› From integration to release
> Right place to put your binaries
› Move from Staging to Public
> Automatic VCS tagging
44
45. Releasing with Release Candidates
Process:
1. Produce and build snapshots until satisfied
2. Once satisfied, build a release candidate
3. Stage RC, check and verify
4. Once verified, release
45
46. Releasing With Artifactory Plugin
Changes versions in build script
Allows choosing a target deploy
repository
Creates a VCS tag/branch
46
48. OOTB Release Management
Pros Cons
> Out of the box > Limited
> Supports the “by extensibility
the book” > May not fit your
release cycle requirements
> Supports
majority of the
tools
48
49. Releasing with Release Candidates
Process:
1. Produce and build snapshots until satisfied
2. Once satisfied, build a release candidate
3. Stage RC, check and verify
4. Once checked, release
49
50. Releasing with Release Candidates
Process:
1. Produce and build snapshots until satisfied
3. Stage RC, check and verify
4. Once checked, release
50
52. Releasing with Release Candidates?
Lots of things can go wrong during one
more build
If we won’t build it, we won’t screw it
Revised Process:
1. Produce and build snapshots until satisfied
2. When satisfied, check and verify
3. Once checked, release
52
53. Automation Flexibility
We Know: We Don’t Know Better
YMMV (great deal) Write your own
release logic
Pre and post
build deploy
hooks
53
55. Flexible Release
Code your release strategy
> Versioning scheme
> VCS (tagging, branching, commit comments)
> Promotion hook
(copy/move, comments, status)
Available by REST
55
56. REST == Scriptability == Automation
It’s impossible to release frequently with
manual procedures
> While maintaining quality
Use your scriptable binaries storage to
release
56
57. Example: Promotion of Snapshots
Choose existing build to become a
release
Using REST API without build server
Invoke promotion plugin
> Convert to next version
> Tag, branch, etc.
> Promote (copy/move)
57
59. Pluggable Architecture with DSLs
Artifactory is open for user plugins
Groovy groovy DSL
Your code runs inside the server
Uses Public API (PAPI)
> Search for artifacts
> Search for builds
> Copy/move artifacts
> Manipulate files
› E.g. change versions in descriptors
59
66. Calling REST API With CURL
http://repo-demo:8080/
artifactory/api/plugins/
build/promote/snapshotToRelease/
gradle-multi-example/1?
params=snapExp=d14|
targetRepository=gradle-release-
local
66
67. Calling REST API With CURL
http://repo-demo:8080/ Artifactory server
artifactory/api/plugins/
build/promote/snapshotToRelease/
gradle-multi-example/1?
params=snapExp=d14|
targetRepository=gradle-release-
local
67
68. Calling REST API With CURL
http://repo-demo:8080/ Artifactory server
artifactory/api/plugins/ Plugins API
build/promote/snapshotToRelease/
gradle-multi-example/1?
params=snapExp=d14|
targetRepository=gradle-release-
local
68
69. Calling REST API With CURL
http://repo-demo:8080/ Artifactory server
artifactory/api/plugins/ Plugins API
build/promote/snapshotToRelease/
Plugin name
gradle-multi-example/1?
params=snapExp=d14|
targetRepository=gradle-release-
local
69
70. Calling REST API With CURL
http://repo-demo:8080/ Artifactory server
artifactory/api/plugins/ Plugins API
build/promote/snapshotToRelease/Plugin name
gradle-multi-example/1? Build name and number
params=snapExp=d14|
targetRepository=gradle-release-
local
70
71. Calling REST API With CURL
http://repo-demo:8080/ Artifactory server
artifactory/api/plugins/ Plugins API
build/promote/snapshotToRelease/ Plugin name
gradle-multi-example/1? Build name and number
params=snapExp=d14| versioning scheme
targetRepository=gradle-release-
local
71
72. Calling REST API With CURL
http://repo-demo:8080/ Artifactory server
artifactory/api/plugins/ Plugins API
build/promote/snapshotToRelease/ Plugin name
gradle-multi-example/1? Build name and number
params=snapExp=d14| versioning scheme
targetRepository=gradle-release-
local Target repository for release
72
73. Recap: Promotion of Snapshots
Choose existing build to become a
release
Using the REST API without building
Invoking the promotion plugin
> Convert to next version
> Tag, branch, etc.
> Promote (copy/move)
73
75. 4 Commandments of DevOps
Automate
everything
Version
everything
Trace everything
Report/Log/Feed
back everything
75
76. 4 Commandments of DevOps
Automate
everything
Version
everything
Trace everything
Report/Log/Feed
back everything Designed by Jessica Allen on Dribbble.com
76
Editor's Notes
Attention deficit disorderСиндром дефицита внимания
Mention smart artifact/library manager
Freedom of choice for developers, no lockinopensource
Bill Of Materials
Let’s admitit, maybe I shouted, but we are all scared to death
Choose your deployment repositories - independently of VCS, build tool, etc.