Difference between revisions of "GitHub Pull Requests"
(→How to Configure Pull Request Analysis) |
(→How to Configure Pull Request Analysis) |
||
Line 29: | Line 29: | ||
Create a new Jenkins job named <b><YourRepoName>-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> |
||
+ | Look at the configuration of your new job and verify that <b>Trigger builds remotely</b> is checked and then set the authentication token; the default is HOOK. The token is the only component you need to configure for your new job. |
||
− | You only need to configure the token for this new job. |
||
− | Note |
+ | <b>Note:</b> your Jenkins user must have special permissions to configure the PullRequest job. Please see [[LRM_Jenkins_Configure_System#Configure_Global_Security|here]] for information on Jenkins Global Security Configuration. |
<li><b>Create a Web Hook for your Github Repository</b></li> |
<li><b>Create a Web Hook for your Github Repository</b></li> |
Revision as of 21:41, 2 December 2019
Contents
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 a pull request, and post a Globalyzer Analysis Summary on the pull request in Github.
Example of a Pull Request Analyzed with Globalyzer
This is pull request #8. The change to the code in the pull request was to add a file containing one embedded string, one locale-sensitive method, one general pattern, and one static file reference to illustrate the different sections of the analysis summary. At the top of the analysis, are issue totals. Then the issues are displayed by type, with the top (up to) ten issues displayed.
Clicking on the file#line link will send the user to the line of code in that respective file. If an issue has associated help, as in the case for most locale-sensitive methods, the issue will appear as a link and clicking the issue will display the associated help.
Before merging the code back to master, the developer would typically externalize embedded strings, fix locale-sensitive method issues, general pattern issues, and static file references and re-submit the changed code for further analysis.
How to Configure Pull Request Analysis
- Configure github.properties
- Create a Pull Request Jenkins Job
- Create a Web Hook for your Github Repository
- 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:
- Test the Web hook and especially check for firewall issues going back to the Jenkins system
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.
Create a new Jenkins job named <YourRepoName>-PullRequest by copying the existing RepoName-PullRequest job.
Look at the configuration of your new job and verify that Trigger builds remotely is checked and then set the authentication token; the default is HOOK. The token is the only component you need to configure for your new job.
Note: your Jenkins user must have special permissions to configure the PullRequest job. Please see here for information on Jenkins Global Security Configuration.
The Pull Request on GitHub needs to trigger a Web hook back to Lingoport's Jenkins instance. To do so:
Payload URL: http(s)://JENKINS_URL/jenkins/buildByToken/buildWithParameters/build?job=YourRepoName-PullRequest&token=YourToken
Content type: application/x-www-form-urlencoded
Pull Request event selected
Active
For example: