Skip to content
This repository has been archived by the owner on Feb 11, 2022. It is now read-only.

Release v0.3.1 #22

Merged
merged 3 commits into from
Feb 8, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,6 @@ local.properties

# Generated files
gen/

# Properties files
secrets.properties
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👀

11 changes: 8 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
Change Log
==========

Version 0.3 *(27/01/2017)*
[Version 0.3.1](https://github.com/novoda/gradle-static-analysis-plugin/releases/tag/v0.3.1)
--------------------------

- Honour exclude filters in Findbugs tasks ([PR#20](https://github.com/novoda/gradle-static-analysis-plugin/pull/20))

[Version 0.3](https://github.com/novoda/gradle-static-analysis-plugin/releases/tag/v0.3)
--------------------------

- Honour project variants when creating tasks for Checkstyle and PMD ([PR#16](https://github.com/novoda/gradle-static-analysis-plugin/pull/16))

Version 0.2 *(14/11/2016)*
[Version 0.2](https://github.com/novoda/gradle-static-analysis-plugin/releases/tag/v0.2)
--------------------------

- Improved `exclude` rules support ([PR#8](https://github.com/novoda/gradle-static-analysis-plugin/pull/8))
- Enforced default effort and report level for Findbugs ([PR#6](https://github.com/novoda/gradle-static-analysis-plugin/pull/6))

Version 0.1 *(09/11/2016)*
[Version 0.1](https://github.com/novoda/gradle-static-analysis-plugin/releases/tag/v0.1)
--------------------------

- Initial release.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.novoda:gradle-static-analysis-plugin:0.3'
classpath 'com.novoda:gradle-static-analysis-plugin:0.3.1'
}
}
```
Expand Down
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ subprojects {
}
dependencies {
classpath 'com.novoda:bintray-release:0.4.0'
classpath 'com.novoda:gradle-build-properties-plugin:0.2'
classpath 'org.ajoberstar:gradle-git:1.6.0'
}
}

Expand Down
95 changes: 94 additions & 1 deletion gradle/publish.gradle
Original file line number Diff line number Diff line change
@@ -1,9 +1,102 @@
version = '0.3.1'
String tag = "v$project.version"
groovydoc.docTitle = 'Static Analysis Plugin'

apply plugin: 'com.novoda.bintray-release'
publish {
userOrg = 'novoda'
groupId = 'com.novoda'
artifactId = 'gradle-static-analysis-plugin'
publishVersion = '0.3'
publishVersion = project.version
website = 'https://github.com/novoda/gradle-static-analysis-plugin'
}

apply plugin: 'com.novoda.build-properties'
buildProperties {
secrets {
file(rootProject.file('secrets.properties'), '''
This file should contain:
- git.username: the username used to push to the repo
- git.password: the password used to push to the repo
''')
}
}

apply plugin: 'org.ajoberstar.grgit'
apply plugin: 'org.ajoberstar.github-pages'

githubPages {
commitMessage = "Deploy groovydoc for release $tag"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

pages {
from groovydoc.destinationDir
into "docs/${project.version}"
}
}

task prepareGhCredentials {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i'd stick to Github (clearer and consistent)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it was to align with the naming used by one of the gradle plugin we are using to use the git/github API

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 just mentioned it 'cause there's a githubPages just above

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, that extension (and the incosistent naming) is coming from the aforementioned plugin 👼

description = 'Prepare GitHub credentials'
group = 'release'
doLast {
System.properties['org.ajoberstar.grgit.auth.username'] = buildProperties.secrets['git.username'].string
System.properties['org.ajoberstar.grgit.auth.password'] = buildProperties.secrets['git.password'].string
}
}

prepareGhPages.dependsOn groovydoc
publishGhPages.dependsOn prepareGhCredentials

task prepareRelease {
description = 'Prepare changelog and tag for release'
group = 'release'
dependsOn prepareGhPages, prepareGhCredentials
doLast {
String changelog = extractChangelog()
grgit.tag.add {
name = tag
message = "Release $tag\n\n$changelog"
}
}
}

String extractChangelog() {
String fullChangelog = rootProject.file('CHANGELOG.md').text
def latestChangelog = (fullChangelog =~ /Version ${project.version}.*\n-*([\s\S]*?)Version.*\n-*/)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gotta thanks the god of regex 😄

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is there a format to follow? As in, a guide on how to adhere to the required format

Copy link
Contributor Author

@mr-archano mr-archano Feb 8, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@florianmski The struggle was real! But you probably remember ;)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ataulm yes, this is assuming the changelog is written always following a specific structure. The script here is a first draft, something I hacked together a while ago that I feel should not be just a stashed snippet. Soon a follow-up PR will enhance this script adding the missing piece of functionality (the creation of a release entry in GitHub) and the documentation on how to release (including the format of the changelog).

if (latestChangelog.size() > 0) {
return latestChangelog[0][1].trim()
}

def firstChangelog = (fullChangelog =~ /Version ${project.version}.*\n-*([\s\S]*)/)
if (firstChangelog.size() > 0) {
return firstChangelog[0][1].trim()
}
throw new GradleException("No changelog found for version $project.version")
}

task publishArtifact {
description = "Publish artifact for plugin version: $tag"
group = 'release'
project.afterEvaluate { dependsOn bintrayUpload }
mustRunAfter prepareRelease
}

task publishGroovydoc {
description = "Deploy groovydoc for plugin version: $tag"
group = 'release'
dependsOn publishGhPages
mustRunAfter publishArtifact
}

task publishRelease {
description = "Publish release for plugin version: $tag"
group = 'release'
if (project.hasProperty('dryRun') && project['dryRun'] == 'false') {
dependsOn prepareRelease, publishArtifact, publishGroovydoc
doLast {
grgit.push {
tags = true
}
}
} else {
dependsOn publishArtifact
}
}