Skip to content

Commit

Permalink
Add GradleV3 task to fix invalid demands issue (#15174)
Browse files Browse the repository at this point in the history
Co-authored-by: Anatoly Bolshakov <[email protected]>
  • Loading branch information
DaniilShmelev and Anatoly Bolshakov authored Aug 23, 2021
1 parent 1ab60be commit 9363dd7
Show file tree
Hide file tree
Showing 96 changed files with 11,464 additions and 0 deletions.
79 changes: 79 additions & 0 deletions Tasks/GradleV3/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Build your code using Gradle in Azure Pipelines

### Parameters for Gradle build task are explained below

- **Gradle Wrapper :** This is a Required field. The location in the repository of the gradlew wrapper used for the build. Note that on Windows build agents (including the hosted pool), you must use the `gradlew.bat` wrapper. Xplat build agents use the `gradlew` shell script. To Know more [click here](https://docs.gradle.org/current/userguide/gradle_wrapper.html)

- **Options :** Specify any command line options you want to pass to the Gradle wrapper. To know more [click here](https://docs.gradle.org/current/userguide/gradle_command_line.html)

- **Goal(s) :** The task(s) for Gradle to execute. A list of tasks can be taken from `gradlew tasks` issued from a command prompt. To know more [click here](https://docs.gradle.org/current/userguide/tutorial_using_tasks.html)

#### JUnit Test Results
Use the next three options to manage your JUnit test results in Azure Pipelines

- **Publish to Azure Pipelines :** Select this option to publish JUnit Test results produced by the Gradle build to Azure Pipelines/TFS. Each test result file matching `Test Results Files` will be published as a test run in Azure Pipelines.

- **Test Results Files :** This option will appear if you select the above option. Here, provide Test results files path. Wildcards can be used. For example, `**/TEST-*.xml` for all xml files whose name starts with `TEST-."`

- **Test Run Title :** This option will appear if you select the `Publish to Azure Pipelines/TFS` option. Here provide a name for the Test Run

#### Code Coverage
Use the next options to manage your code coverage options. If your Build file already has Code Coverage enabled, you can ignore this section and use the Publish Code Coverage task to upload results to TFS/Azure Pipelines

- **CodeCoverage Tool :** Select the code coverage tool you want to use. Currently JaCoCo and Cobertura are supported.

- **Class Inclusion/Exclusion Filters :** This option is enabled only when you select one tool in the above option. Provide a
comma separated list of filters to include or exclude classes from collecting code coverage. For example: +:com.*,+:org.*,-:my.app*.*.

#### Advanced
Use the next options to manage your `JAVA_HOME` attribute by JDK Version and Path

- **Working Directory :** Directory on the build agent where the Gradle wrapper will be invoked from. Defaults to the repository root.

- **Set JAVA_HOME by :** Select to set `JAVA_HOME` either by providing a path or let Azure Pipelines set the `JAVA_HOME` based on JDK version choosen. By default it is set to `JDK Version`

- **JDK Version :** Here provide the PATH to `JAVA_HOME` if you want to set it by path or select the appropriate JDK version.

- **JDK Architecture :** Select the approriate JDK Architecture. By default it is set to `x86`

#### Code Analysis

- **Run SonarQube Analysis :** You can choose to run SonarQube analysis after executing the current goals. 'install' or 'package' goals should be executed first. To know more about this option [click here](https://blogs.msdn.com/b/visualstudioalm/archive/2015/10/08/the-maven-build-task-now-simplifies-sonarqube-analysis.aspx)

- **Run Checkstyle :** You can choose to run the Checkstyle static code analysis tool, which checks the compliance of your source code with coding rules. You will receive a code analysis report with the number of violations detected, as well as the original report files if there were any violations.

- **Run PMD :** You can choose to run the PMD static code analysis tool, which examines your source code for possible bugs. You will receive a code analysis report with the number of violations detected, as well as the original report files if there were any violations.

- **Run FindBugs :** You can choose to run the FindBugs static code analysis tool, which examines the bytecode of your program for possible bugs. You will receive a code analysis report with the number of violations detected, as well as the original report files if there were any violations.

### Q&A

#### How do I generate a wrapper from my Gradle project?

The Gradle wrapper allows the build agent to download and configure the exact Gradle environment that is checked into the repository without having any software configuration on the build agent itself other than the JVM.

- **1.** Create the Gradle wrapper by issuing the following command from the root project directory where your build.gradle resides:
`jamal@fabrikam> gradle wrapper`


- **2.** Upload your Gradle wrapper to your remote repository.

There is a binary artifact that is generated by the gradle wrapper (located at `gradle/wrapper/gradle-wrapper.jar`). This binary file is small and doesn't require updating. If you need to change the Gradle configuration run on the build agent, you update the `gradle-wrapper.properties`.

The repository should look something like this:

```ssh
|-- gradle/
`-- wrapper/
`-- gradle-wrapper.jar
`-- gradle-wrapper.properties
|-- src/
|-- .gitignore
|-- build.gradle
|-- gradlew
|-- gradlew.bat
```




89 changes: 89 additions & 0 deletions Tasks/GradleV3/Strings/resources.resjson/de-DE/resources.resjson
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
{
"loc.friendlyName": "Gradle",
"loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613720) or [see the Gradle documentation](https://docs.gradle.org/current/userguide/userguide.html)",
"loc.description": "Mithilfe eines Gradle-Wrapperskripts erstellen",
"loc.instanceNameFormat": "gradlew $(tasks)",
"loc.releaseNotes": "Die Konfiguration der SonarQube-Analyse wurde in die Erweiterungen [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) oder [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) in die Aufgabe zum Vorbereiten der Analysekonfiguration verschoben.",
"loc.group.displayName.junitTestResults": "JUnit-Testergebnisse",
"loc.group.displayName.codeCoverage": "Code Coverage",
"loc.group.displayName.advanced": "Erweitert",
"loc.group.displayName.CodeAnalysis": "Codeanalyse",
"loc.input.label.wrapperScript": "Gradle-Wrapper",
"loc.input.help.wrapperScript": "Der relative Pfad vom Repositorystamm zum Gradle-Wrapperskript.",
"loc.input.label.cwd": "Arbeitsverzeichnis",
"loc.input.help.cwd": "Das Arbeitsverzeichnis, in dem der Gradle-Build ausgeführt werden soll. Wenn kein Angabe erfolgt, wird das Stammverzeichnis des Repositorys als Standardwert verwendet.",
"loc.input.label.options": "Optionen",
"loc.input.label.tasks": "Aufgaben",
"loc.input.label.publishJUnitResults": "In Azure Pipelines veröffentlichen",
"loc.input.help.publishJUnitResults": "Wählen Sie diese Option aus, um vom Gradle-Build generierte JUnit-Testergebnisse in Azure Pipelines zu veröffentlichen. Jede Testergebnisdatei, die mit \"Testergebnisdateien\" übereinstimmt, wird als Testlauf in Azure Pipelines veröffentlicht.",
"loc.input.label.testResultsFiles": "Testergebnisdateien",
"loc.input.help.testResultsFiles": "Pfad der Testergebnisdateien. Platzhalter können verwendet werden ([weitere Informationen](https://go.microsoft.com/fwlink/?linkid=856077)). Beispiel: \"**/TEST-*.xml\" für alle XML-Dateien, deren Name mit \"TEST-\" beginnt.",
"loc.input.label.testRunTitle": "Testlauftitel",
"loc.input.help.testRunTitle": "Geben Sie einen Namen für den Testlauf an.",
"loc.input.label.codeCoverageTool": "Code Coverage-Tool",
"loc.input.help.codeCoverageTool": "Wählen Sie das Code Coverage-Tool aus.",
"loc.input.label.classFilesDirectories": "Klassendateiverzeichnisse",
"loc.input.help.classFilesDirectories": "Eine durch Kommas getrennte Liste der Verzeichnisse, die Klassendateien und Archivdateien (JAR-, WAR-Dateien usw.) enthalten. Code Coverage wird für Klassendateien in diesen Verzeichnissen gemeldet. Normalerweise werden Klassen unter unter \"build/main/classes\" durchsucht. Dies ist das Standardklassenverzeichnis für Gradle-Builds.",
"loc.input.label.classFilter": "Filter für den Klasseneinschluss/-ausschluss",
"loc.input.help.classFilter": "Eine durch Kommas getrennte Liste der Filter, um Klassen in die Erfassung von Code Coverage ein- oder von dieser auszuschließen, z. B. \"+:com.*\", \"+:org.*\", \"-:my.app*.*\".",
"loc.input.label.failIfCoverageEmpty": "Fehler, wenn die Code Coverage-Ergebnisse fehlen",
"loc.input.help.failIfCoverageEmpty": "Buildfehler, wenn Code Coverage keine zu veröffentlichenden Ergebnisse ergeben hat.",
"loc.input.label.javaHomeSelection": "JAVA_HOME festlegen durch",
"loc.input.help.javaHomeSelection": "Legt JAVA_HOME durch Auswählen einer JDK-Version fest, die während der Erstellung von Builds oder durch manuelles Eingeben eines JDK-Pfads ermittelt wird.",
"loc.input.label.jdkVersion": "JDK-Version",
"loc.input.help.jdkVersion": "Versucht, den Pfad zur ausgewählten JDK-Version zu ermitteln und JAVA_HOME entsprechend festzulegen.",
"loc.input.label.jdkUserInputPath": "JDK-Pfad",
"loc.input.help.jdkUserInputPath": "Legt JAVA_HOME auf den angegebenen Pfad fest.",
"loc.input.label.jdkArchitecture": "JDK-Architektur",
"loc.input.help.jdkArchitecture": "Geben Sie optional die JDK-Architektur an (x86, x64).",
"loc.input.label.gradleOpts": "GRADLE_OPTS festlegen",
"loc.input.help.gradleOpts": "Legt die Umgebungsvariable GRADLE_OPTS fest, die zum Senden von Befehlszeilenargumenten zum Starten von JVM verwendet wird. Das Kennzeichen \"xmx\" gibt den maximalen Arbeitsspeicher an, der für JVM verfügbar ist.",
"loc.input.label.sqAnalysisEnabled": "SonarQube- oder SonarCloud-Analyse ausführen",
"loc.input.help.sqAnalysisEnabled": "Diese Option wurde im Vergleich zu Version 1 der Aufgabe **Gradle** dahingehend geändert, dass jetzt die Marketplace-Erweiterungen [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) und [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) verwendet werden. Aktivieren Sie diese Option, um eine [SonarQube- oder SonarCloud-Analyse](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) durchzuführen, nachdem Sie die Aufgaben im Feld **Aufgaben** ausgeführt haben. Sie müssen der Buildpipeline vor dieser Gradle-Aufgabe außerdem eine Aufgabe **Analysekonfiguration vorbereiten** aus einer der Erweiterungen hinzufügen.",
"loc.input.label.sqGradlePluginVersionChoice": "SonarQube Scanner for Gradle-Version",
"loc.input.help.sqGradlePluginVersionChoice": "Die Version des SonarQube-Gradle-Plug-Ins, die verwendet werden soll. Sie können die Version in Ihrer Gradle-Konfigurationsdatei deklarieren oder hier eine Version angeben.",
"loc.input.label.sqGradlePluginVersion": "Version des SonarQube Scanner for Gradle-Plug-Ins",
"loc.input.help.sqGradlePluginVersion": "Informationen zu allen verfügbaren Versionen finden Sie unter https://plugins.gradle.org/plugin/org.sonarqube.",
"loc.input.label.checkstyleAnalysisEnabled": "Checkstyle ausführen",
"loc.input.help.checkstyleAnalysisEnabled": "Führen Sie das Tool Checkstyle mit den Sun-Standardüberprüfungen aus. Die Ergebnisse werden als Buildartefakte hochgeladen.",
"loc.input.label.findbugsAnalysisEnabled": "FindBugs ausführen",
"loc.input.help.findbugsAnalysisEnabled": "Verwenden Sie das statische FindBugs-Analysetool, um Fehler im Code zu ermitteln. Ergebnisse werden als Buildartefakte hochgeladen.",
"loc.input.label.pmdAnalysisEnabled": "PMD ausführen",
"loc.input.help.pmdAnalysisEnabled": "Verwenden Sie die statischen PMD-Analysetools von Java zum Suchen nach Fehlern im Code. Die Ergebnisse werden als Buildartefakte hochgeladen.",
"loc.messages.sqCommon_CreateTaskReport_MissingField": "Fehler beim Erstellen des TaskReport-Objekts. Fehlendes Feld: %s",
"loc.messages.sqCommon_WaitingForAnalysis": "Auf den SonarQube-Server wird gewartet, um den Build zu analysieren.",
"loc.messages.sqCommon_NotWaitingForAnalysis": "Der Build ist nicht für das Warten auf die SonarQube-Analyse konfiguriert. Der ausführliche Quality Gate-Status ist nicht verfügbar.",
"loc.messages.sqCommon_QualityGateStatusUnknown": "Der Quality Gate-Status wurde nicht erkannt, oder es wurde ein neuer Status eingeführt.",
"loc.messages.sqCommon_InvalidResponseFromServer": "Der Server hat mit einem ungültigen oder unerwarteten Antwortformat geantwortet.",
"loc.messages.codeAnalysis_ToolIsEnabled": "Die %s-Analyse ist aktiviert.",
"loc.messages.codeAnalysis_ToolFailed": "Fehler bei der %s-Analyse.",
"loc.messages.sqAnalysis_IncrementalMode": "Ein PR-Build wurde erkannt. Die SonarQube-Analyse wird im inkrementellen Modus ausgeführt.",
"loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube-Analysebericht",
"loc.messages.sqAnalysis_TaskReportInvalid": "Ungültiger oder fehlender Vorgangsbericht. Überprüfen Sie, ob SonarQube erfolgreich abgeschlossen wurde.",
"loc.messages.sqAnalysis_BuildSummary_LinkText": "Ausführlicher SonarQube-Bericht",
"loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "Authentifizierung beim SonarQube-Server nicht möglich. Überprüfen Sie die gespeicherten Dienstverbindungsdetails und den Status des Servers.",
"loc.messages.sqAnalysis_AnalysisTimeout": "Die Analyse wurde nicht in der vorgesehenen Zeit von %d Sekunden abgeschlossen.",
"loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Pull Request-Build: Eine ausführliche SonarQube-Buildzusammenfassung ist nicht verfügbar.",
"loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Pull Request-Build: Der Build wird bei einem Quality Gate-Fehler nicht beeinträchtigt.",
"loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "Fehler des diesem Build zugeordneten SonarQube Quality Gates.",
"loc.messages.sqAnalysis_QualityGatePassed": "Das diesem Build zugeordnete SonarQube Quality Gate wurde bestanden (Status %s).",
"loc.messages.sqAnalysis_UnknownComparatorString": "Problem bei der SonarQube-Buildzusammenfassung: unbekannter Vergleichsoperator \"%s\"",
"loc.messages.sqAnalysis_NoUnitsFound": "Die Liste der SonarQube-Maßeinheiten konnte nicht vom Server abgerufen werden.",
"loc.messages.sqAnalysis_NoReportTask": "\"report-task.txt\" wurde nicht gefunden. Mögliche Ursache: Die SonarQube-Analyse wurde nicht erfolgreich abgeschlossen.",
"loc.messages.sqAnalysis_MultipleReportTasks": "Es wurden mehrere Dateien \"report-task.txt\" gefunden, und nur die erste wird ausgewählt. Die Buildzusammenfassung und der Build Breaker sind möglicherweise nicht genau. Mögliche Ursache: mehrere SonarQube-Analysen im selben Build, dies wird nicht unterstützt.",
"loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s hat %d Verstöße in %d Dateien gefunden.",
"loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s hat %d Verstöße in einer Datei gefunden.",
"loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s hat einen Verstoß in einer Datei gefunden.",
"loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s hat keine Verstöße gefunden.",
"loc.messages.codeAnalysisBuildSummaryTitle": "Codeanalysebericht",
"loc.messages.codeAnalysisArtifactSummaryTitle": "Codeanalyseergebnisse",
"loc.messages.codeAnalysisDisabled": "Die Codeanalyse ist außerhalb der Buildumgebung deaktiviert. Es konnte kein Wert gefunden werden für: %s",
"loc.messages.LocateJVMBasedOnVersionAndArch": "JAVA_HOME für Java %s %s finden",
"loc.messages.UnsupportedJdkWarning": "JDK 9 und JDK 10 werden nicht unterstützt. Wechseln Sie in Ihrem Projekt und Ihrer Pipeline zu einer neueren Version. Es wird versucht, die Erstellung mit JDK 11 durchzuführen...",
"loc.messages.FailedToLocateSpecifiedJVM": "Die angegebene JDK-Version wurde nicht gefunden. Stellen Sie sicher, dass die angegebene JDK-Version auf dem Agent installiert und die Umgebungsvariable \"%s\" vorhanden und auf den Speicherort eines entsprechenden JDK festgelegt ist. Sie können auch die Aufgabe [Installer für Java-Tools](https://go.microsoft.com/fwlink/?linkid=875287) verwenden, um das gewünschte JDK zu installieren.",
"loc.messages.NoCodeCoverage": "Keine Code Coverage-Ergebnisse zum Veröffentlichen gefunden.",
"loc.messages.InvalidBuildFile": "Ungültige oder nicht unterstützte Builddatei",
"loc.messages.FileNotFound": "Datei oder Ordner nicht vorhanden: %s",
"loc.messages.FailedToAppendCC": "Codedeckungsdaten können nicht angefügt werden: %s",
"loc.messages.NoTestResults": "Es wurden keine Testergebnisdateien gefunden, die mit %s übereinstimmen. Das Veröffentlichen von JUnit-Testergebnissen wird daher übersprungen."
}
Loading

0 comments on commit 9363dd7

Please sign in to comment.