releasing with gradle (gradle summit 2014)
Post on 27-Aug-2014
765 Views
Preview:
DESCRIPTION
TRANSCRIPT
Releasing with
Gradlesnippets, puzzles, (best) practices
René GröschkePrincipal Engineer, GradlewareGradle Exchange 2014
Motivation
#gradlesummit 3/27
When doing a Release
#gradlesummit
update your project versiondeal with your vcs (tagging, branching)publish/deploy the released distributioninteract with your issue trackerdouble check your dependenciesrollback if build failed...
·
·
·
·
·
·
·
4/27
releasing manually?
#gradlesummit 5/27
!
#gradlesummit 6/27
demo app
#gradlesummit 7/27
project versioning
declaring a project version
#gradlesummit
// not optimal version = "1.1-SNAPSHOT"
// better version = file("version.txt").text ...
BUILD.GRADLE
8/27
project versioning (2)
put some semantics in your project version!
#gradlesummit
version = MyVersion.load(file("version.properties"))
class MyVersion { int major, minor, bugfix, build
String toString(){ "${major}.${minor}.${bugfix}.${build}" } ... }
BUILD.GRADLE
9/27
puzzle #1a (major|minor|bugfix) release
#gradlesummit 10/27
source versioning
interacting with your vcs (option 1)
#gradlesummit
buildscript { repositories { jcenter() } dependencies { classpath 'org.ajoberstar:gradle-git:0.8.0' } }
import org.ajoberstar.grgit.* ext.repo = Grgit.open(file('.'))
task tagRelease << { repo.tag.add {
name = version
message = "Release of ${version}"
}
}
BUILD.GRADLE
11/27
source versioning (2)
interacting with your vcs (option 2)
#gradlesummit
task tagGitWorkspace(type:Exec){ commandLine 'git', 'tag', project.version.toString() }
BUILD.GRADLE
12/27
source versioning (3)
sidenote: reading branch/commit via file io
#gradlesummit
def branch = file(".git/HEAD").text - "ref: refs/heads/" def commitId = file(".git/refs/heads/$branch").text
BUILD.GRADLE
13/27
puzzle #2a clean working copy
#gradlesummit 14/27
connect your issue tracker
worth the effort
#gradlesummit
keep version stati in syncdocument tackled issuescheck project status...
·
·
·
·
15/27
#gradlesummit 16/27
connect your issue tracker (2)
getting started
#gradlesummit
explore the api of your tool of choice!jira, youtrack, trello, githubREST is your friendREST is easy with gradle & groovy...
·
·
·
·
·
17/27
#gradlesummit
"but we have a custom tool!?"
GET RID OF IT!
18/27
puzzle #3connect your issue tracker
#gradlesummit 19/27
publishing
depends on your product
#gradlesummit
maven repository, bintray, maven-central out of the boxs3, ftp, ssh via custom gradle tasksfeed proprietary tools (e.g. liverebel)...
·
·
·
·
20/27
when something went wrong...
option 1
#gradlesummit 21/27
when something went wrong...
option 2: react on your build result
#gradlesummit
... gradle.addBuildListener(new BuildAdapter(){ void buildFinished(def result){ result.failure ? gitReset() : gitPush() } }) ...
BUILD.GRADLE
22/27
links and pointers
#gradlesummit
gradle.orggradleware.comsemantic version libraryGradle-Git Plugin (more than just a git plugin)Gradle SVN Kit pluginliverebelmy demo app
·
·
·
·
·
·
·
23/27
Q&A
#gradlesummit 24/27
Thanks for listening!
twitter @breskeby
www www.gradleware.com
github github.com/breskeby
references
#gradlesummit
http://devopsreactions.tumblr.com/post/70883605526/final-straight-on-a-projecthttp://www.youtube.com/watch?v=UyLUCnTdu7ohttp://devopsreactions.tumblr.com/post/49078186169/go-live-day
·
·
·
26/27
top related