Merge "Adds credentials-binding plugin support to wrappers"

This commit is contained in:
Jenkins
2014-10-06 17:59:01 +00:00
committed by Gerrit Code Review
4 changed files with 95 additions and 0 deletions

View File

@@ -1086,6 +1086,61 @@ def ssh_agent_credentials(parser, xml_parent, data):
raise JenkinsJobsException("Missing 'user' for ssh-agent-credentials")
def credentials_binding(parser, xml_parent, data):
"""yaml: credentials-binding
Binds credentials to environment variables using the credentials binding
plugin for jenkins.
Requires the Jenkins `Credentials Binding Plugin
<https://wiki.jenkins-ci.org/display/JENKINS/Credentials+Binding+Plugin>`_
version 1.1 or greater.
:arg list binding-type: List of each bindings to create. Bindings may be\
of type `zip-file`, `file`, `username-password`,\
or `text`
:Parameters: * **credential-id** (`str`) UUID of the credential being\
referenced
* **variable** (`str`) Environment variable where the\
credential will be stored
Example:
.. literalinclude::
/../../tests/wrappers/fixtures/credentials_binding.yaml
:language: yaml
"""
entry_xml = XML.SubElement(
xml_parent,
'org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper')
bindings_xml = XML.SubElement(entry_xml, 'bindings')
binding_types = {
'zip-file': 'org.jenkinsci.plugins.credentialsbinding.impl.'
'ZipFileBinding',
'file': 'org.jenkinsci.plugins.credentialsbinding.impl.FileBinding',
'username-password': 'org.jenkinsci.plugins.credentialsbinding.impl.'
'UsernamePasswordBinding',
'text': 'org.jenkinsci.plugins.credentialsbinding.impl.StringBinding'
}
if not data:
raise JenkinsJobsException('At least one binding-type must be '
'specified for the credentials-binding '
'element')
for binding in data:
for binding_type, params in binding.items():
if binding_type not in binding_types.keys():
raise JenkinsJobsException('binding-type must be one of %r' %
binding_types.keys())
binding_xml = XML.SubElement(bindings_xml,
binding_types[binding_type])
variable_xml = XML.SubElement(binding_xml, 'variable')
variable_xml.text = params.get('variable')
credential_xml = XML.SubElement(binding_xml, 'credentialsId')
credential_xml.text = params.get('credential-id')
class Wrappers(jenkins_jobs.modules.base.Base):
sequence = 80

View File

@@ -191,6 +191,7 @@ jenkins_jobs.wrappers =
build-user-vars=jenkins_jobs.modules.wrappers:build_user_vars
ci-skip=jenkins_jobs.modules.wrappers:ci_skip
copy-to-slave=jenkins_jobs.modules.wrappers:copy_to_slave
credentials-binding=jenkins_jobs.modules.wrappers:credentials_binding
delivery-pipeline=jenkins_jobs.modules.wrappers:delivery_pipeline
env-file=jenkins_jobs.modules.wrappers:env_file
env-script=jenkins_jobs.modules.wrappers:env_script

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<project>
<buildWrappers>
<org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper>
<bindings>
<org.jenkinsci.plugins.credentialsbinding.impl.ZipFileBinding>
<variable>CONFIG_ZIP</variable>
<credentialsId>b3e6f337-5d44-4f57-921c-1632d796caa6</credentialsId>
</org.jenkinsci.plugins.credentialsbinding.impl.ZipFileBinding>
<org.jenkinsci.plugins.credentialsbinding.impl.FileBinding>
<variable>config_file</variable>
<credentialsId>b3e6f337-5d44-4f57-921c-1632d796caab</credentialsId>
</org.jenkinsci.plugins.credentialsbinding.impl.FileBinding>
<org.jenkinsci.plugins.credentialsbinding.impl.UsernamePasswordBinding>
<variable>config_username_password</variable>
<credentialsId>b3e6f337-5d44-4f57-921c-1632d796caac</credentialsId>
</org.jenkinsci.plugins.credentialsbinding.impl.UsernamePasswordBinding>
<org.jenkinsci.plugins.credentialsbinding.impl.StringBinding>
<variable>config_text</variable>
<credentialsId>b3e6f337-5d44-4f57-921c-1632d796caad</credentialsId>
</org.jenkinsci.plugins.credentialsbinding.impl.StringBinding>
</bindings>
</org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper>
</buildWrappers>
</project>

View File

@@ -0,0 +1,14 @@
wrappers:
- credentials-binding:
- zip-file:
credential-id: b3e6f337-5d44-4f57-921c-1632d796caa6
variable: CONFIG_ZIP
- file:
credential-id: b3e6f337-5d44-4f57-921c-1632d796caab
variable: config_file
- username-password:
credential-id: b3e6f337-5d44-4f57-921c-1632d796caac
variable: config_username_password
- text:
credential-id: b3e6f337-5d44-4f57-921c-1632d796caad
variable: config_text