diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py index 9cf9bdf22..5c81a9c4d 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 `. + + :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 000000000..d0e99bd12 --- /dev/null +++ b/tests/builders/fixtures/build-publish-docker-image-full.xml @@ -0,0 +1,19 @@ + + + + + + Docker registry URL + + + Image string + + Directory for Dockerfile + true + 71e4f29c-162b-40d0-85d9-3ddfba2911a0 + true + true + cloud + + + 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 000000000..2469d11ef --- /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 000000000..3e6161133 --- /dev/null +++ b/tests/builders/fixtures/build-publish-docker-image-minimal.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + false + + false + false + + + + 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 000000000..4497d40ec --- /dev/null +++ b/tests/builders/fixtures/build-publish-docker-image-minimal.yaml @@ -0,0 +1,2 @@ +builders: + - build-publish-docker-image