diff options
author | Alexander Couzens <lynxis@fe80.eu> | 2016-06-30 20:39:39 +0200 |
---|---|---|
committer | Darragh Bailey <daragh.bailey@gmail.com> | 2017-03-28 17:36:16 +0000 |
commit | 52a77d639c739b43239a37037559d238094cb71a (patch) | |
tree | 9b59a9a291d6c776d3dca360afc10aa0d2d224dc | |
parent | 0bdd8199697546bd022b09630d59500bf2e05fc9 (diff) | |
download | python-jenkins-job-builder-52a77d639c739b43239a37037559d238094cb71a.tar.gz python-jenkins-job-builder-52a77d639c739b43239a37037559d238094cb71a.tar.xz python-jenkins-job-builder-52a77d639c739b43239a37037559d238094cb71a.zip |
docker-build-publish: add registry + server support
registry: where to push images,
server: where to run the docker file onto
e.g.
registry:
url: https://registry.example.com/
credentials-id: foobar
Co-Authored-By: Linus Wallgren <linus.wallgren@scypho.com>
Change-Id: I2e592b1c52138bd4623ad2acd05c744224a8e50b
-rw-r--r-- | jenkins_jobs/modules/builders.py | 36 | ||||
-rw-r--r-- | tests/builders/fixtures/docker-builder002.xml | 25 | ||||
-rw-r--r-- | tests/builders/fixtures/docker-builder002.yaml | 19 |
3 files changed, 79 insertions, 1 deletions
diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py index d0649663..93905f54 100644 --- a/jenkins_jobs/modules/builders.py +++ b/jenkins_jobs/modules/builders.py @@ -3543,6 +3543,14 @@ def docker_build_publish(parse, xml_parent, data): :arg str repo-name: Name of repository to push to. :arg str repo-tag: Tag for image. (default '') + :arg dict server: The docker daemon (optional) + * **uri** (str): Define the docker server to use. (optional) + * **credentials-id** (str): ID of credentials to use to connect + (optional) + :arg dict registry: Registry to push to + * **url** (str) repository url to use (optional) + * **credentials-id** (str): ID of credentials to use to connect + (optional) :arg bool no-cache: If build should be cached. (default false) :arg bool no-force-pull: Don't update the source image before building when it exists locally. (default false) @@ -3554,9 +3562,13 @@ def docker_build_publish(parse, xml_parent, data): :arg str build-context: Project root path for the build, defaults to the workspace if not specified. (default '') - Example: + Minimal example: .. literalinclude:: /../../tests/builders/fixtures/docker-builder001.yaml + + Full example: + + .. literalinclude:: /../../tests/builders/fixtures/docker-builder002.yaml """ db = XML.SubElement(xml_parent, 'com.cloudbees.dockerpublish.DockerBuilder') @@ -3576,6 +3588,28 @@ def docker_build_publish(parse, xml_parent, data): ] convert_mapping_to_xml(db, data, mapping, fail_required=True) + if 'server' in data: + server = XML.SubElement(db, 'server') + server.set('plugin', 'docker-commons') + server_data = data['server'] + if 'credentials-id' in server_data: + XML.SubElement(server, 'credentialsId').text = str( + server_data['credentials-id']) + if 'uri' in server_data: + XML.SubElement(server, 'uri').text = str( + server_data['uri']) + + if 'registry' in data: + registry = XML.SubElement(db, 'registry') + registry.set('plugin', 'docker-commons') + registry_data = data['registry'] + if 'credentials-id' in registry_data: + XML.SubElement(registry, 'credentialsId').text = str( + registry_data['credentials-id']) + if 'url' in registry_data: + XML.SubElement(registry, 'url').text = str( + registry_data['url']) + def build_name_setter(registry, xml_parent, data): """yaml: build-name-setter diff --git a/tests/builders/fixtures/docker-builder002.xml b/tests/builders/fixtures/docker-builder002.xml new file mode 100644 index 00000000..3506fa2a --- /dev/null +++ b/tests/builders/fixtures/docker-builder002.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<project> + <builders> + <com.cloudbees.dockerpublish.DockerBuilder plugin="docker-build-publish"> + <repoName>test</repoName> + <repoTag>test-tag</repoTag> + <noCache>true</noCache> + <noForcePull>false</noForcePull> + <skipBuild>false</skipBuild> + <skipDecorate>false</skipDecorate> + <skipTagLatest>false</skipTagLatest> + <skipPush>false</skipPush> + <dockerfilePath>/tmp/</dockerfilePath> + <buildContext>/tmp/</buildContext> + <server plugin="docker-commons"> + <credentialsId>docker-server</credentialsId> + <uri>unix:///var/run/docker.sock</uri> + </server> + <registry plugin="docker-commons"> + <credentialsId>registry-docker</credentialsId> + <url>https://registry.example.org</url> + </registry> + </com.cloudbees.dockerpublish.DockerBuilder> + </builders> +</project> diff --git a/tests/builders/fixtures/docker-builder002.yaml b/tests/builders/fixtures/docker-builder002.yaml new file mode 100644 index 00000000..76e86355 --- /dev/null +++ b/tests/builders/fixtures/docker-builder002.yaml @@ -0,0 +1,19 @@ +builders: + - docker-build-publish: + repo-name: 'test' + repo-tag: 'test-tag' + no-cache: true + no-force-pull: false + skip-build: false + skip-decorate: false + skip-latest: false + skip-tag: false + file-path: '/tmp/' + build-context: '/tmp/' + registry: + url: 'https://registry.example.org' + credentials-id: 'registry-docker' + server: + uri: 'unix:///var/run/docker.sock' + credentials-id: 'docker-server' + |