From 52a77d639c739b43239a37037559d238094cb71a Mon Sep 17 00:00:00 2001 From: Alexander Couzens Date: Thu, 30 Jun 2016 20:39:39 +0200 Subject: [PATCH] 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 Change-Id: I2e592b1c52138bd4623ad2acd05c744224a8e50b --- jenkins_jobs/modules/builders.py | 36 ++++++++++++++++++- tests/builders/fixtures/docker-builder002.xml | 25 +++++++++++++ .../builders/fixtures/docker-builder002.yaml | 19 ++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 tests/builders/fixtures/docker-builder002.xml create mode 100644 tests/builders/fixtures/docker-builder002.yaml diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py index d0649663a..93905f54a 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 000000000..3506fa2a6 --- /dev/null +++ b/tests/builders/fixtures/docker-builder002.xml @@ -0,0 +1,25 @@ + + + + + test + test-tag + true + false + false + false + false + false + /tmp/ + /tmp/ + + docker-server + unix:///var/run/docker.sock + + + registry-docker + https://registry.example.org + + + + diff --git a/tests/builders/fixtures/docker-builder002.yaml b/tests/builders/fixtures/docker-builder002.yaml new file mode 100644 index 000000000..76e86355b --- /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' +