Skip to content

Commit

Permalink
Fix commitUUID resolve (#42)
Browse files Browse the repository at this point in the history
* Fix resolving the commitUUID

* Add commitUUID as an optional parameter when running codacy-coverage-reporter
  • Loading branch information
machadoit authored and rtfpessoa committed Dec 28, 2016
1 parent 224777f commit 1fa09b9
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 16 deletions.
31 changes: 28 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,29 @@ Then set it in your terminal, replacing %Project_Token% with your own token:
export CODACY_PROJECT_TOKEN=%Project_Token%
```

**Enterprise**
### CommitUUID Detection

To send coverage in the enterprise version you should:
Codacy automatically detects the CommitUUID from several sources:

**Environment Variables**

* CI_COMMIT
* TRAVIS_PULL_REQUEST_SHA
* TRAVIS_COMMIT
* DRONE_COMMIT
* CIRCLE_SHA1
* CI_COMMIT_ID
* WERCKER_GIT_COMMIT

**Git directory**

* If it finds a git directory it will get current commit.

**Force CommitUUID**

* You may want to enforce a specific commitUUID with:
```
export CODACY_API_BASE_URL=<Codacy_instance_URL>:16006
codacy-coverage-reporter -l Java --commitUUID "mycommituuid" -r coverage.xml
```

**Upload coverage**
Expand All @@ -54,6 +72,13 @@ codacy-coverage-reporter -l Java -r coverage.xml

> Note: You should keep your API token well **protected**, as it grants owner permissions to your projects.
###Enterprise

To send coverage in the enterprise version you should:
```
export CODACY_API_BASE_URL=<Codacy_instance_URL>:16006
```

## Java 6

Due to a limitation in Java 6, the plugin is unable to establish a connection to codacy.com.
Expand Down
35 changes: 22 additions & 13 deletions src/main/scala/com/codacy/CodacyCoverageReporter.scala
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ object CodacyCoverageReporter {
coverageReport: File = new File("coverage.xml"),
codacyApiBaseUrl: String = getApiBaseUrl,
prefix: String = "",
debug: Boolean = false)
debug: Boolean = false,
commitUUID: Option[String] = commitUUIDOpt)

implicit def languageRead: Read[Language.Value] = Read.reads { (s: String) =>
Language.withName(s)
Expand All @@ -44,6 +45,17 @@ object CodacyCoverageReporter {
sys.env.getOrElse("CODACY_PROJECT_TOKEN", "")
}

lazy val commitUUIDOpt: Option[String] = {
getNonEmptyEnv("CI_COMMIT") orElse
getNonEmptyEnv("TRAVIS_PULL_REQUEST_SHA") orElse
getNonEmptyEnv("TRAVIS_COMMIT") orElse
getNonEmptyEnv("DRONE_COMMIT") orElse
getNonEmptyEnv("CIRCLE_SHA1") orElse
getNonEmptyEnv("CI_COMMIT_ID") orElse
getNonEmptyEnv("WERCKER_GIT_COMMIT")
.filter(_.trim.nonEmpty)
}

private def validUrl(baseUrl: String) = {
Try(new URL(baseUrl)).toOption.isDefined
}
Expand All @@ -55,7 +67,7 @@ object CodacyCoverageReporter {
parser.parse(args, Config()) match {
case Some(config) if !validUrl(config.codacyApiBaseUrl) =>
logger.error(s"Error: Invalid CODACY_API_BASE_URL: ${config.codacyApiBaseUrl}")
if(!config.codacyApiBaseUrl.startsWith("http")) {
if (!config.codacyApiBaseUrl.startsWith("http")) {
logger.error("Maybe you forgot the http:// or https:// ?")
}

Expand Down Expand Up @@ -90,6 +102,9 @@ object CodacyCoverageReporter {
}.text("the base URL for the Codacy API")
opt[String]("prefix").optional().action { (x, c) =>
c.copy(prefix = x)
}.text("your commitUUID")
opt[String]("commitUUID").optional().action { (x, c) =>
c.copy(commitUUID = Some(x))
}.text("the project path prefix")
opt[Unit]("debug").optional().hidden().action { (_, c) =>
c.copy(debug = true)
Expand All @@ -99,17 +114,7 @@ object CodacyCoverageReporter {
}

def coverageWithTokenAndCommit(config: Config): Either[String, String] = {
val commitUUID =
sys.env.get("CI_COMMIT") orElse
sys.env.get("TRAVIS_PULL_REQUEST_SHA") orElse
sys.env.get("TRAVIS_COMMIT") orElse
sys.env.get("DRONE_COMMIT") orElse
sys.env.get("CIRCLE_SHA1") orElse
sys.env.get("CI_COMMIT_ID") orElse
sys.env.get("WERCKER_GIT_COMMIT")
.filter(_.trim.nonEmpty)

FileHelper.withTokenAndCommit(Some(config.projectToken), commitUUID) {
FileHelper.withTokenAndCommit(Some(config.projectToken), config.commitUUID) {
case (projectToken, commitUUID) =>

logger.debug(s"Project token: $projectToken")
Expand Down Expand Up @@ -152,6 +157,10 @@ object CodacyCoverageReporter {
}
}

private def getNonEmptyEnv(key: String): Option[String] = {
sys.env.get(key).filter(_.trim.nonEmpty)
}

private def transform[A](report: CoverageReport)(config: Config)(f: CoverageReport => A): A = {
val transformations = Set(new PathPrefixer(config.prefix))
val transformedReport = transformations.foldLeft(report) {
Expand Down

0 comments on commit 1fa09b9

Please sign in to comment.