From d99cf09270e57bcd0225eafbe3a3f2083a593ef0 Mon Sep 17 00:00:00 2001 From: Steven Cooney Date: Fri, 21 Jun 2019 09:29:03 +0100 Subject: [PATCH] Improve README and Add Licence Summary: Improve the README giving an overview of the project and why it was needed. Also add the MIT licence since we are going to open source the plugin and credit the orginal author the Harbormaster files we are using. Also updated the TeamCity build definition to include build number in the plugin output file. Test Plan: Packaged locally to verify the version number is included in the plugin zip. Other changes were text in the README and LICENCE Reviewers: #dev, rob.marshall Reviewed By: #dev, rob.marshall Subscribers: rob.marshall Differential Revision: https://phab.xlab.uk/D2704 --- LICENSE.txt | 22 ++++ README.md | 94 +++++++++++++----- Teamcity-Phabricator-Plugin/build/pom.xml | 2 +- .../teamcity-plugin.xml | 3 - docs/Build_Feature.png | Bin 0 -> 10302 bytes docs/Build_Feature_Properties.png | Bin 0 -> 16167 bytes docs/Harbormaster_Build_Step.png | Bin 0 -> 28414 bytes 7 files changed, 90 insertions(+), 31 deletions(-) create mode 100644 LICENSE.txt create mode 100644 docs/Build_Feature.png create mode 100644 docs/Build_Feature_Properties.png create mode 100644 docs/Harbormaster_Build_Step.png diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..a90677d --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Matthew J Oliver +Copyright (c) 2019 X-Lab Ltd + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 229d7ce..3f1f787 100644 --- a/README.md +++ b/README.md @@ -1,52 +1,92 @@ -# Splint -_X-Lab's Linting Spine_ +# Teamcity-Phabricator-Plugin +Connecting Phabricator and TeamCity to run builds with changes from code reviews and report the results. -## Things -This repository holds the plugins created to link together our internal systems. The original premise to link Phabricator, TeamCity and SonarQube to enable linting on differential reviews. +## Plugins -Below are the plugins: -* Harbormaster-Teamcity-Plugin -* Teamcity-Phabricator-Plugin -* SonarQube-Phabricator-Plugin +There are two plugins that work hand-in-hand to enable TeamCity builds with changes from a Phabricator code review. If you are unfamiliar to [Phabricator](https://www.phacility.com/phabricator/) and their terminologies see the **Background** section below for an overview. -### Harbomaster-Teamcity-Plugin +**Harbormaster-Teamcity-Plugin:** +An extension to Phabricator to enable triggering of builds within TeamCity using Harbormaster. + +**Teamcity-Phabricator-Plugin:** +A TeamCity plugin that patches in changes from a Phabricator code review and reports the build status back to Phabricator. + +## Background - Phabricator Workflow & Terminology +The Phabricator Software Development Suite has the ability for code review, CI & CD along side numerous other development tools. + +Phabricator code reviews are called [_Differential Revisions_](https://www.phacility.com/phabricator/differential/). Phabricator differs to other code review workflows because they are pre-commit reviews and therefore the changes that are getting peer reviewed are not in version control. This gives Phabricator a _write_, _review_, then _merge_ workflow, which is different than most pull-request methodologies such as GitHub. In this workflow our code changes are managed by Phabricator and are not in version control during the code review process for us to build with CI. + +To trigger a _Differential Revision_ (code review) a command line tool called [_Arcanist_](https://www.phacility.com/phabricator/arcanist/) is used. This tool handles the interaction with Phabricator to request, update and merge code reviews. An example of putting code up for review would be running _Arcanist_ like: `arc diff`. This would essentially mimic pushing a feature branch and creating a PR. If another developer wanted to pull down a copy of the changes to review in-depth they would also use _Arcanist_ to patch in the changes: `arc patch `. + +When a _Differential Revision_ is created, Phabricator has the ability to to trigger CI "builds" with the changes, this feature is called _Harbormaster_. These _Harbormaster_ builds usually trigger other build systems which report back the results, one of the in-built triggers is for Jenkins. There is **no** inbuilt trigger for TeamCity. + +## Why TeamCity Phabricator Plugins + +As outlined above, Phabricator does not have a default trigger for TeamCity. To add a TeamCity trigger we have extended Harbormaster with `Harbormaster-Teamcity-Plugin` which adds the relevant files to communicate with TeamCity to run build configurations. The plugin also sends additional information to TeamCity for the partner plugin to use when reporting the result back to Phabricator. + +Since code review changes are not in version control we cannot rely on TeamCity to patch in the changes using Git. We needed to create a plugin that listened and identified builds triggered by `Harbormaster-Teamcity-Plugin` and then utilise _Arcanist_ to patch in the exact changes that need to be built before reporting the result back to Phabricator. + +## Installation + +### Harbormaster-Teamcity-Plugin The harbormaster plugin allows us to trigger a build configuration within TeamCity as part of a harbormaster build plan. -The plugin requires: -1. TeamCity URI -2. Build Configuration to trigger a build for -3. TeamCity access token to authenticate with the server +To deploy simply copy the contents of the `Harbormaster-Teamcity-Plugin` folder in to `src/extensions/` on the Phabricator instance and then restart the application. Currently there are only three files that need to be transfered: `HarbormasterTeamCityBuildStepImplementation.php`, `PassphraseTokenKey.php` & `TeamCityXmlBuildBuilder.php`. -To deploy simply drag the contents of the folder to `src/extensions/` on the Phabricator instance and then restart the application. +The Harbormaster build trigger requires: +1. TeamCity URI: The URL to your TeamCity instance +2. TeamCity Build Configuration ID for the build differential revision changes should be applied +3. TeamCity Credentials: A TeamCity REST API token to authenticate with the server stored within Phabricator's _PassPhrase_ feature. + +![Harbormaster Build Step Configuration](./docs/Harbormaster_Build_Step.png) ### Teamcity-Phabricator-Plugin -The teamcity plugin comprises of server and agent plugins for teamcity. +The TeamCity plugin comprises of server and agent plugins for TeamCity. Together they collate the information sent from `Harbormaster-Teamcity-Plugin` and run _Arcanist_ to pull in the changes from the associated _Differential Revision_. -#### Server -The server plugin monitors builds with the phabricator feature enabled waiting for builds to finish and notify phabricator. +To deploy, upload the `Teamcity-Phabricator-Plugin-.zip` on TeamCity's plugin administration page. -Once build is triggered from phabricator using **Harbomaster-Teamcity-Plugin** and the phabricator build feature is configured on the build configuration then the server plugin will wait and listen for the build to finish before reporting the result back to harbormaster to be displayed in phabricator. +This will install the **Phabricator Plugin** build feature that can be enabled per build configuration used for _Differential Revisions_. -## Getting Started +![Phabricator Build Feature](./docs/Build_Feature.png) -**Harbormaster-Teamcity-Plugin** -No building is needed for for the harbormaster plugin just dev away and copy the files into the `src/extensions` folder with your phabricator instance +The plugin requires `Harbormaster-Teamcity-Plugin` to be installed on Phabricator and the following to be configured in the TeamCity build feature: -**Teamcity-Phabricator-Plugin** +1. Phabricator URL: The URL to your Phabricator instance +2. Conduit Token: A Phabricator API token related to a user (should be a Bot user to follow best practices) +3. Path to Arcanist on the build agents. (In future we will remove the hard-coded path and look on the path for `arc`) + +![Build Feature Properties](./docs/Build_Feature_Properties.png) + +## Development + +### Harbormaster-Teamcity-Plugin +No building is needed for the harbormaster plugin just dev away and copy the files into the `src/extensions` folder with your Phabricator instance. + +### Teamcity-Phabricator-Plugin You will need to move in to the `Teamcity-Phabricator-Plugin/` folder: -* To build the plugins (server and agent) just run: `mvn package` +* To build the plugins (server and agent) just run: `mvn clean compile package` -By default the teamcity plugin is equipped with teamcity-sdk-maven-plugin which allows for a local instance of teamcity with debugging capabilities. See their documentation for how to use: https://github.com/JetBrains/teamcity-sdk-maven-plugin +By default the TeamCity plugin is equipped with `teamcity-sdk-maven-plugin` which allows for developing against a local instance of TeamCity with debugging capabilities. See their documentation for how to use: https://github.com/JetBrains/teamcity-sdk-maven-plugin -## Useful Links +## Future Development: +* Look for _Arcanist_ on the path rather than hard-coding it. +* Report back unit tests + +## Credits + +The inspiration for the plugin is from https://github.com/halfmatthalfcat/TeamCity-Phabricator-Plugin which is no longer maintained. We have reused the Harbormaster files from the original authors repository. + +## Some Useful Links + +A collection of useful links that help when diving into TeamCity plugin development: * https://confluence.jetbrains.com/display/TCD10/Web+UI+Extensions -* http://javadoc.jetbrains.net/teamcity/openapi/current/jetbrains/buildServer/serverSide/BuildServerAdapter.html +* http://javadoc.jetbrains.net/teamcity/openapi/current/allclasses-noframe.html * https://github.com/JetBrains/teamcity-sdk-maven-plugin/wiki/Developing-TeamCity-plugin * https://www.quali.com/blog/teamcity-plugin-development-journey/ * https://plugins.jetbrains.com/docs/teamcity/plugin-development-faq.html -* https://plugins.jetbrains.com/docs/teamcity/getting-started-with-plugin-development.html \ No newline at end of file +* https://plugins.jetbrains.com/docs/teamcity/getting-started-with-plugin-development.html diff --git a/Teamcity-Phabricator-Plugin/build/pom.xml b/Teamcity-Phabricator-Plugin/build/pom.xml index 2e11c19..cba4407 100644 --- a/Teamcity-Phabricator-Plugin/build/pom.xml +++ b/Teamcity-Phabricator-Plugin/build/pom.xml @@ -89,7 +89,7 @@ single - phabricator-plugin + Teamcity-Phabricator-Plugin-${teamcity.phabricator-plugin.plugin.version} ${project.parent.build.directory} false diff --git a/Teamcity-Phabricator-Plugin/teamcity-plugin.xml b/Teamcity-Phabricator-Plugin/teamcity-plugin.xml index c3d366a..ae1556b 100644 --- a/Teamcity-Phabricator-Plugin/teamcity-plugin.xml +++ b/Teamcity-Phabricator-Plugin/teamcity-plugin.xml @@ -5,12 +5,9 @@ Phabricator Reporter @Version@ Reports the status of Harbormaster trigged builds - Plugin download URL - Plugin author e-mail @VendorName@ @VendorURL@ - Plugin vendor logo URL diff --git a/docs/Build_Feature.png b/docs/Build_Feature.png new file mode 100644 index 0000000000000000000000000000000000000000..3c123103c7a54a5a5a08d0ffbbe86d58f1eba783 GIT binary patch literal 10302 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 F{tNomU{C-6 literal 0 HcmV?d00001 diff --git a/docs/Build_Feature_Properties.png b/docs/Build_Feature_Properties.png new file mode 100644 index 0000000000000000000000000000000000000000..880060b97e06b5d9fd197e1554879a1b2fd1761a GIT binary patch literal 16167 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 VTe8lhRzn{CfvWazrOHoV|1XDYILrV5 literal 0 HcmV?d00001