Goal:
Status: Completed
This project aims to develop a Job Plugin which can interact with Bitbucket Server, Bitbucket Cloud, and Github whenever a pull request is created or updated. Users should be able to configure job type using YAML file which will be placed in root directory of the Git repository being the subject of the PR.
Detect the presence of certain types of the report based on a conventional location, and automatically publish them. If the reports are not in a conventional location, users could specify the location using the YML file.
This plugin will be developed on the top of the MultiBranch Pipeline plugin.
clone target repo
checkout to target branch
fetch the source branch
merge source-branch
call user call user script to build the repo.
push to target branch [if specified by user in YAML]
harvest results and reports and post to PR
Plugin will start above steps if and only if the pull request is will be mergeable to avoid merge conflicts while merging the source branch to target branch. The pull request is mergebale or not can also be decided by the webhook also.
Internally, it converts the user written YAML file into Declarative Pipeline DSL code which is then executed by the declarative engine.
Use a Jenkinsfile.yaml for build.
Git Push step (Users do not call git push explicitly)
Build and tests performed by user defined script called from Jenkinsfile.yaml
Agent configuration in “Jenkinsfile.yaml” harvest results and reports.
junit()
findbugs()
archiveArtifacts section
Basic interface to parse and get build specifications from YAML file.
Phase 1 Blog Post(June 15, 2018) Phase 1 Presentation video(June 14, 2018) Phase 1 Presentation Slides(June 14, 2018)
Step Configurator (Based on JCasC plugin)
Limitations:
Difficulty with Enums (Resolved now by JCasC plugin developers)
Difficulty with “JiraTestDataPublisher.class” and may be other classes
A format for “Jenkinsfile.yaml”. (All details present in Phase 2 Blog Post)
Tools property in agent section of Jenkinsfile.yaml.
Some tests for the plugin.
Documentation for yaml examples written
Phase 2 Blog Post(July 17, 2018) Phase 2 Presentation video(July 12, 2018) Phase 2 Presentation Slides(July 12, 2018)
Declarative pipeline code generator detach to extensions.
Unit tests were written for extensions.
Documentation improved.
Phase 3 Blog Post Phase 3 Presentation video(August 13, 2018) Phase 3 Presentation Slides(August 13, 2018)
Test the integration with various platforms Bitbucket, Gitlab, Github.
Support for webhooks
Check if trusted people have approved a pull request and start build accordingly
Automatic Workspace Cleanup when PR is closed
Support the “when” Declarative Pipeline directive
Nice2have: Support hierarchical report types
Acceptance Test Harness tests
Every Wednesday 5 PM to 6 PM UTC. Click here to see it in your local time.
link:https://app.gitter.im/#/room/#jenkinsci_simple-pull-request-job-Gitter chat