diff options
author | tanhengyeow <E0032242@u.nus.edu> | 2018-09-10 23:31:15 +0800 |
---|---|---|
committer | Anil Belur <askb23@gmail.com> | 2018-09-24 20:16:21 +0530 |
commit | 039c860dc226a9ee64451f530e98791d3a9e810e (patch) | |
tree | 19c4ecaa39ed0d4f4c1c57c270daa1e8371e5f69 | |
parent | 4d5397c496abc1097d7214dafee5f16d7f49e066 (diff) | |
download | python-jenkins-job-builder-039c860dc226a9ee64451f530e98791d3a9e810e.tar.gz python-jenkins-job-builder-039c860dc226a9ee64451f530e98791d3a9e810e.tar.xz python-jenkins-job-builder-039c860dc226a9ee64451f530e98791d3a9e810e.zip |
Add support for "Build / Publish Docker Image"
Change-Id: Iac9ffcdcb4312818d53e1da9be92ecdbb84c8cc1
Co-Authored-By: Anil Belur <askb23@gmail.com>
Signed-off-by: Tan Heng Yeow <E0032242@u.nus.edu>
Signed-off-by: Anil Belur <askb23@gmail.com>
5 files changed, 110 insertions, 0 deletions
diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py index 9cf9bdf2..5c81a9c4 100644 --- a/jenkins_jobs/modules/builders.py +++ b/jenkins_jobs/modules/builders.py @@ -3923,6 +3923,66 @@ def description_setter(registry, xml_parent, data): descriptionsetter, data, mapping, fail_required=True) +def build_publish_docker_image(registry, xml_parent, data): + """yaml: build-publish-docker-image + Requires the Jenkins :jenkins-wiki:`CloudBees Docker Build and + Publish plugin <CloudBees+Docker+Build+and+Publish+plugin>`. + + :arg str docker-registry-url: URL to the Docker registry you are + using (default '') + :arg str image: Repository name to be applied to the resulting image + in case of success (default '') + :arg str docker-file-directory: Build step that sends a Dockerfile for + building to docker host that used for this build run (default '') + :arg bool push-on-success: Resulting docker image will be pushed to + the registry (or registries) specified within the + "Image" field (default false) + :arg str push-credentials-id: Credentials to push to a private + registry (default '') + :arg bool clean-images: Option to clean local images (default false) + :arg bool jenkins-job-delete: Attempt to remove images when jenkins + deletes the run (default false) + :arg str cloud: Cloud to use to build image (default '') + + Minimal example: + + .. literalinclude:: + /../../tests/builders/fixtures/build-publish-docker-image-minimal.yaml + + Full example: + + .. literalinclude:: + /../../tests/builders/fixtures/build-publish-docker-image-full.yaml + """ + dbp = XML.SubElement(xml_parent, + 'com.nirima.jenkins.plugins.docker.builder' + '.DockerBuilderPublisher') + dbp.set('plugin', 'docker-plugin') + + from_registry = XML.SubElement(dbp, 'fromRegistry') + from_registry.set('plugin', 'docker-commons') + from_registry_mapping = [ + ('docker-registry-url', 'url', ''), + ] + helpers.convert_mapping_to_xml( + from_registry, data, from_registry_mapping, + fail_required=False) + + tags = XML.SubElement(dbp, 'tags') + XML.SubElement(tags, 'string').text = data.get('image', '') + + mapping = [ + ('docker-file-directory', 'dockerFileDirectory', ''), + ('push-on-success', 'pushOnSuccess', False), + ('push-credentials-id', 'pushCredentialsId', ''), + ('clean-images', 'cleanImages', False), + ('jenkins-job-delete', 'cleanupWithJenkinsJobDelete', False), + ('cloud', 'cloud', ''), + ] + helpers.convert_mapping_to_xml( + dbp, data, mapping, fail_required=False) + + def docker_build_publish(parse, xml_parent, data): """yaml: docker-build-publish Requires the Jenkins :jenkins-wiki:`Docker build publish Plugin diff --git a/tests/builders/fixtures/build-publish-docker-image-full.xml b/tests/builders/fixtures/build-publish-docker-image-full.xml new file mode 100644 index 00000000..d0e99bd1 --- /dev/null +++ b/tests/builders/fixtures/build-publish-docker-image-full.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<project> + <builders> + <com.nirima.jenkins.plugins.docker.builder.DockerBuilderPublisher plugin="docker-plugin"> + <fromRegistry plugin="docker-commons"> + <url>Docker registry URL</url> + </fromRegistry> + <tags> + <string>Image string</string> + </tags> + <dockerFileDirectory>Directory for Dockerfile</dockerFileDirectory> + <pushOnSuccess>true</pushOnSuccess> + <pushCredentialsId>71e4f29c-162b-40d0-85d9-3ddfba2911a0</pushCredentialsId> + <cleanImages>true</cleanImages> + <cleanupWithJenkinsJobDelete>true</cleanupWithJenkinsJobDelete> + <cloud>cloud</cloud> + </com.nirima.jenkins.plugins.docker.builder.DockerBuilderPublisher> + </builders> +</project> diff --git a/tests/builders/fixtures/build-publish-docker-image-full.yaml b/tests/builders/fixtures/build-publish-docker-image-full.yaml new file mode 100644 index 00000000..2469d11e --- /dev/null +++ b/tests/builders/fixtures/build-publish-docker-image-full.yaml @@ -0,0 +1,10 @@ +builders: + - build-publish-docker-image: + docker-registry-url: Docker registry URL + image: Image string + docker-file-directory: Directory for Dockerfile + push-on-success: true + push-credentials-id: 71e4f29c-162b-40d0-85d9-3ddfba2911a0 + clean-images: true + jenkins-job-delete: true + cloud: cloud diff --git a/tests/builders/fixtures/build-publish-docker-image-minimal.xml b/tests/builders/fixtures/build-publish-docker-image-minimal.xml new file mode 100644 index 00000000..3e616113 --- /dev/null +++ b/tests/builders/fixtures/build-publish-docker-image-minimal.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<project> + <builders> + <com.nirima.jenkins.plugins.docker.builder.DockerBuilderPublisher plugin="docker-plugin"> + <fromRegistry plugin="docker-commons"> + <url/> + </fromRegistry> + <tags> + <string/> + </tags> + <dockerFileDirectory/> + <pushOnSuccess>false</pushOnSuccess> + <pushCredentialsId/> + <cleanImages>false</cleanImages> + <cleanupWithJenkinsJobDelete>false</cleanupWithJenkinsJobDelete> + <cloud/> + </com.nirima.jenkins.plugins.docker.builder.DockerBuilderPublisher> + </builders> +</project> diff --git a/tests/builders/fixtures/build-publish-docker-image-minimal.yaml b/tests/builders/fixtures/build-publish-docker-image-minimal.yaml new file mode 100644 index 00000000..4497d40e --- /dev/null +++ b/tests/builders/fixtures/build-publish-docker-image-minimal.yaml @@ -0,0 +1,2 @@ +builders: + - build-publish-docker-image |