Add support for stash-pullrequest-builder plugin
Stash Pull Request Builder Plugin: https://wiki.jenkins-ci.org/display/JENKINS/Stash+pullrequest+builder+plugin Change-Id: Id6e4cd8bb7c72402e21b8afa6fd10120447b5596 Signed-off-by: Thanh Ha <thanh.ha@linuxfoundation.org>
This commit is contained in:
parent
09f979a97f
commit
95667c5925
@ -1858,6 +1858,77 @@ def jira_comment_trigger(registry, xml_parent, data):
|
|||||||
parent, parameter, parameter_mappings, fail_required=True)
|
parent, parameter, parameter_mappings, fail_required=True)
|
||||||
|
|
||||||
|
|
||||||
|
def stash_pull_request(registry, xml_parent, data):
|
||||||
|
"""yaml: stash-pull-request
|
||||||
|
Trigger builds via Stash/Bitbucket Server Pull Requests.
|
||||||
|
Requires the Jenkins :jenkins-wiki:`Stash Pull Request Builder Plugin
|
||||||
|
<Stash+pullrequest+builder+plugin>`.
|
||||||
|
|
||||||
|
:arg str cron: cron syntax of when to run (required)
|
||||||
|
:arg str stash-host: The HTTP or HTTPS URL of the Stash host (NOT ssh).
|
||||||
|
e.g.: https://example.com (required)
|
||||||
|
:arg str credentials-id: Jenkins credential set to use. (required)
|
||||||
|
:arg str project: Abbreviated project code. e.g.: PRJ or ~user (required)
|
||||||
|
:arg str repository: Stash Repository Name. e.g.: Repo (required)
|
||||||
|
:arg str ci-skip-phrases: CI Skip Phrases. (default 'NO TEST')
|
||||||
|
:arg str ci-build-phrases: CI Build Phrases. (default 'test this please')
|
||||||
|
:arg str target-branches: Target branches to filter. (default '')
|
||||||
|
:arg bool ignore-ssl: Ignore SSL certificates for Stash host.
|
||||||
|
(default false)
|
||||||
|
:arg bool check-destination-commit: Rebuild if destination branch
|
||||||
|
changes. (default false)
|
||||||
|
:arg bool check-mergable: Build only if PR is mergeable. (default false)
|
||||||
|
:arg bool merge-on-success: Merge PR if build is successful.
|
||||||
|
(default false)
|
||||||
|
:arg bool check-not-conflicted: Build only if Stash reports no conflicts.
|
||||||
|
(default false)
|
||||||
|
:arg bool only-build-on-comment: Only build when asked (with test
|
||||||
|
phrase). (default false)
|
||||||
|
:arg bool delete-previous-build-finish-comments: Keep PR comment only for
|
||||||
|
most recent Build. (default false)
|
||||||
|
:arg bool cancel-outdated-jobs: Cancel outdated jobs. (default false)
|
||||||
|
|
||||||
|
Minimal Example:
|
||||||
|
|
||||||
|
.. literalinclude::
|
||||||
|
/../../tests/triggers/fixtures/stash-pull-request-minimal.yaml
|
||||||
|
:language: yaml
|
||||||
|
|
||||||
|
Full Example:
|
||||||
|
|
||||||
|
.. literalinclude::
|
||||||
|
/../../tests/triggers/fixtures/stash-pull-request-full.yaml
|
||||||
|
:language: yaml
|
||||||
|
"""
|
||||||
|
|
||||||
|
pr_trigger = XML.SubElement(
|
||||||
|
xml_parent,
|
||||||
|
'stashpullrequestbuilder.stashpullrequestbuilder.StashBuildTrigger')
|
||||||
|
pr_trigger.set('plugin', 'stash-pullrequest-builder')
|
||||||
|
|
||||||
|
mappings = [
|
||||||
|
('cron', 'spec', None), # Spec needs to be set to the same as cron
|
||||||
|
('cron', 'cron', None),
|
||||||
|
('stash-host', 'stashHost', None),
|
||||||
|
('credentials-id', 'credentialsId', None),
|
||||||
|
('project', 'projectCode', None),
|
||||||
|
('repository', 'repositoryName', None),
|
||||||
|
('ci-skip-phrases', 'ciSkipPhrases', 'NO TEST'),
|
||||||
|
('ci-build-phrases', 'ciBuildPhrases', 'test this please'),
|
||||||
|
('target-branches', 'targetBranchesToBuild', ''),
|
||||||
|
('ignore-ssl', 'ignoreSsl', False),
|
||||||
|
('check-destination-commit', 'checkDestinationCommit', False),
|
||||||
|
('check-mergable', 'checkMergeable', False),
|
||||||
|
('merge-on-success', 'mergeOnSuccess', False),
|
||||||
|
('check-not-conflicted', 'checkNotConflicted', True),
|
||||||
|
('only-build-on-comment', 'onlyBuildOnComment', False),
|
||||||
|
('delete-previous-build-finish-comments',
|
||||||
|
'deletePreviousBuildFinishComments', False),
|
||||||
|
('cancel-outdated-jobs', 'cancelOutdatedJobsEnabled', False),
|
||||||
|
]
|
||||||
|
convert_mapping_to_xml(pr_trigger, data, mappings, fail_required=True)
|
||||||
|
|
||||||
|
|
||||||
class Triggers(jenkins_jobs.modules.base.Base):
|
class Triggers(jenkins_jobs.modules.base.Base):
|
||||||
sequence = 50
|
sequence = 50
|
||||||
|
|
||||||
|
24
tests/triggers/fixtures/stash-pull-request-full.xml
Normal file
24
tests/triggers/fixtures/stash-pull-request-full.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<triggers class="vector">
|
||||||
|
<stashpullrequestbuilder.stashpullrequestbuilder.StashBuildTrigger plugin="stash-pullrequest-builder">
|
||||||
|
<spec>H 1 2 3 4</spec>
|
||||||
|
<cron>H 1 2 3 4</cron>
|
||||||
|
<stashHost>https://stash-host.com</stashHost>
|
||||||
|
<credentialsId>default-stash-credentials</credentialsId>
|
||||||
|
<projectCode>stash-project</projectCode>
|
||||||
|
<repositoryName>stash-repo</repositoryName>
|
||||||
|
<ciSkipPhrases>test skip phrase</ciSkipPhrases>
|
||||||
|
<ciBuildPhrases>test build phrase</ciBuildPhrases>
|
||||||
|
<targetBranchesToBuild>master</targetBranchesToBuild>
|
||||||
|
<ignoreSsl>true</ignoreSsl>
|
||||||
|
<checkDestinationCommit>true</checkDestinationCommit>
|
||||||
|
<checkMergeable>true</checkMergeable>
|
||||||
|
<mergeOnSuccess>true</mergeOnSuccess>
|
||||||
|
<checkNotConflicted>false</checkNotConflicted>
|
||||||
|
<onlyBuildOnComment>true</onlyBuildOnComment>
|
||||||
|
<deletePreviousBuildFinishComments>true</deletePreviousBuildFinishComments>
|
||||||
|
<cancelOutdatedJobsEnabled>true</cancelOutdatedJobsEnabled>
|
||||||
|
</stashpullrequestbuilder.stashpullrequestbuilder.StashBuildTrigger>
|
||||||
|
</triggers>
|
||||||
|
</project>
|
18
tests/triggers/fixtures/stash-pull-request-full.yaml
Normal file
18
tests/triggers/fixtures/stash-pull-request-full.yaml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
triggers:
|
||||||
|
- stash-pull-request:
|
||||||
|
cron: "H 1 2 3 4"
|
||||||
|
stash-host: "https://stash-host.com"
|
||||||
|
credentials-id: default-stash-credentials
|
||||||
|
project: stash-project
|
||||||
|
repository: stash-repo
|
||||||
|
ci-skip-phrases: "test skip phrase"
|
||||||
|
ci-build-phrases: "test build phrase"
|
||||||
|
target-branches: "master"
|
||||||
|
ignore-ssl: true
|
||||||
|
check-destination-commit: true
|
||||||
|
check-mergable: true
|
||||||
|
merge-on-success: true
|
||||||
|
check-not-conflicted: false
|
||||||
|
only-build-on-comment: true
|
||||||
|
delete-previous-build-finish-comments: true
|
||||||
|
cancel-outdated-jobs: true
|
24
tests/triggers/fixtures/stash-pull-request-minimal.xml
Normal file
24
tests/triggers/fixtures/stash-pull-request-minimal.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<triggers class="vector">
|
||||||
|
<stashpullrequestbuilder.stashpullrequestbuilder.StashBuildTrigger plugin="stash-pullrequest-builder">
|
||||||
|
<spec>* * * * *</spec>
|
||||||
|
<cron>* * * * *</cron>
|
||||||
|
<stashHost>https://stash-host.com</stashHost>
|
||||||
|
<credentialsId>default-stash-credentials</credentialsId>
|
||||||
|
<projectCode>stash-project</projectCode>
|
||||||
|
<repositoryName>stash-repo</repositoryName>
|
||||||
|
<ciSkipPhrases>NO TEST</ciSkipPhrases>
|
||||||
|
<ciBuildPhrases>test this please</ciBuildPhrases>
|
||||||
|
<targetBranchesToBuild/>
|
||||||
|
<ignoreSsl>false</ignoreSsl>
|
||||||
|
<checkDestinationCommit>false</checkDestinationCommit>
|
||||||
|
<checkMergeable>false</checkMergeable>
|
||||||
|
<mergeOnSuccess>false</mergeOnSuccess>
|
||||||
|
<checkNotConflicted>true</checkNotConflicted>
|
||||||
|
<onlyBuildOnComment>false</onlyBuildOnComment>
|
||||||
|
<deletePreviousBuildFinishComments>false</deletePreviousBuildFinishComments>
|
||||||
|
<cancelOutdatedJobsEnabled>false</cancelOutdatedJobsEnabled>
|
||||||
|
</stashpullrequestbuilder.stashpullrequestbuilder.StashBuildTrigger>
|
||||||
|
</triggers>
|
||||||
|
</project>
|
7
tests/triggers/fixtures/stash-pull-request-minimal.yaml
Normal file
7
tests/triggers/fixtures/stash-pull-request-minimal.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
triggers:
|
||||||
|
- stash-pull-request:
|
||||||
|
cron: "* * * * *"
|
||||||
|
stash-host: "https://stash-host.com"
|
||||||
|
credentials-id: default-stash-credentials
|
||||||
|
project: stash-project
|
||||||
|
repository: stash-repo
|
Loading…
Reference in New Issue
Block a user