Merge "Adds credentials-binding plugin support to wrappers"
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
25
tests/wrappers/fixtures/credentials_binding.xml
Normal file
25
tests/wrappers/fixtures/credentials_binding.xml
Normal 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>
|
||||
14
tests/wrappers/fixtures/credentials_binding.yaml
Normal file
14
tests/wrappers/fixtures/credentials_binding.yaml
Normal 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
|
||||
Reference in New Issue
Block a user