Difference between revisions of "GitHub Pull Requests"

From Lingoport Wiki
Jump to: navigation, search
(Pull Request Analysis Configuration)
(Pull Request Analysis Configuration)
Line 29: Line 29:
 
<li><b>Create a Pull Request Jenkins Job</b></li>
 
<li><b>Create a Pull Request Jenkins Job</b></li>
   
Create a new Jenkins job named <b><YourRepo>-PullRequest</b> by copying the existing RepoName-PullRequest job.<br>
+
Create a new Jenkins job named <b><YourRepoName>-PullRequest</b> by copying the existing RepoName-PullRequest job.<br>
 
You do not need to configure this new job.
 
You do not need to configure this new job.
   
Line 39: Line 39:
 
* The Web hook should follow this pattern:
 
* The Web hook should follow this pattern:
   
Payload URL: http(s)://JENKINS_URL/jenkins/buildByToken/buildWithParameters/build?job=RepoName-PullRequest&token=HOOK
+
Payload URL: http(s)://JENKINS_URL/jenkins/buildByToken/buildWithParameters/build?job=YourRepoName-PullRequest&token=HOOK
   
 
Content type: application/x-www-form-urlencoded
 
Content type: application/x-www-form-urlencoded

Revision as of 17:03, 27 November 2019

GitHub

GitHub is a Web-based Git repository hosting service. It offers all of the distributed revision control and source code management (SCM) functionality of Git as well as adding its own features.

Git Pull Requests

Files can be committed in a Git branch or directly in Master. When committing files in a branch, pull requests let you know what changes you've made to a repository before they are committed to the repository's master branch. Once a pull request is sent, interested parties can review the set of changes, discuss potential modifications, and even push follow-up commits if necessary.

You can configure Globalyzer to scan the files that changed between the two branches of the pull request, and post a Globalyzer Analysis Summary on the pull request in Github.

Example of a Pull Request Analyzed with Globalyzer

PrSummaryAnalysis.png

This is pull request #44. The change to the code in the pull request was to add multiple embedded strings and a locale-sensitive method to the files ExampleMain.java & ExamplePanel.java. This pull request is reporting 25 different issues, however since the sonar-project.properties attribute is set to sonar.github.disableInlineComments=true, the top ten issues (sorted by severity, by component, then by line) are put into a summary analysis as a pull request comment.

Globalyzer analysis flagged these lines as critical issues. Clicking on the link next to the issue number will send the user to the line of code in that respective file.

Before merging the code back to master, the developer would typically externalize these strings, fix the locale-sensitive method issue, and re-submit the changed code / resource files for further analysis.


Pull Request Analysis Configuration

  1. Configure github.properties
  2. You must create the file /var/lib/jenkins/Lingoport_Data/Dashboard/github.properties with the following contents:

      github.login=<your github login>
      github.oauth=<your github token>
    

    Note: To create a token for yourself on Github, navigate to https://github.com, select Settings from login dropdown, select Developer Settings on left, select Personal access tokens, click Generate new token.

  3. Create a Pull Request Jenkins Job
  4. Create a new Jenkins job named <YourRepoName>-PullRequest by copying the existing RepoName-PullRequest job.
    You do not need to configure this new job.

  5. Create a Web Hook for your Github Repository
  6. The Pull Request on GitHub needs to trigger a Web hook back to Lingoport's Jenkins instance. To do so:

    • Navigate to the GitHub repository as an Admin account
    • In Settings tab for the GitHub repository (available if the account has Admin permissions), add a Webhook
    • The Web hook should follow this pattern:
      Payload URL: http(s)://JENKINS_URL/jenkins/buildByToken/buildWithParameters/build?job=YourRepoName-PullRequest&token=HOOK
    
      Content type: application/x-www-form-urlencoded
    
      Pull Request event selected
    
      Active
    

    For example:

    GitHubWebhook.png

    • Test the Web hook and especially check for firewall issues going back to the Jenkins system