From 0c1c1dfbb7b110e1774a0d2380720ddd4b7ce7de Mon Sep 17 00:00:00 2001 From: asilenkov Date: Mon, 30 May 2016 09:08:30 +0300 Subject: [PATCH] CloudBees Docker Build and Publish plugin added * docker-build-publish plugin allows to build Docker images from artifacts and publish to Registry. Registry could be private or public. Change-Id: I5161b32149649d6963694e99b88f9e18a07d068d --- .../Jenkins/package/Classes/Jenkins.yaml | 9 +++++ .../Resources/InstallDockerPlugin.template | 17 ++++++++ .../Resources/scripts/docker_plugin.pp | 40 +++++++++++++++++++ .../scripts/install_docker_plugin.sh | 3 ++ murano-apps/Jenkins/package/UI/ui.yaml | 8 ++++ 5 files changed, 77 insertions(+) create mode 100644 murano-apps/Jenkins/package/Resources/InstallDockerPlugin.template create mode 100644 murano-apps/Jenkins/package/Resources/scripts/docker_plugin.pp create mode 100644 murano-apps/Jenkins/package/Resources/scripts/install_docker_plugin.sh diff --git a/murano-apps/Jenkins/package/Classes/Jenkins.yaml b/murano-apps/Jenkins/package/Classes/Jenkins.yaml index ce2226f..272ee74 100644 --- a/murano-apps/Jenkins/package/Classes/Jenkins.yaml +++ b/murano-apps/Jenkins/package/Classes/Jenkins.yaml @@ -23,6 +23,9 @@ Properties: cfplugin: Contract: $.bool() Default: false + dockerplugin: + Contract: $.bool() + Default: false gitUser: Contract: $.string() gitEmail: @@ -70,6 +73,12 @@ Methods: - $template: $resources.yaml('InstallCFPlugin.template') - $.instance.agent.call($template, $resources) + - If: $.dockerplugin + Then: + - $._environment.reporter.report($this, 'Installing Docker Build and Publish plugin...') + - $template: $resources.yaml('InstallDockerPlugin.template') + - $.instance.agent.call($template, $resources) + - If: $.gitUser != null and $.gitEmail != null Then: - $.configureGitPlugin($.gitUser, $.gitEmail) diff --git a/murano-apps/Jenkins/package/Resources/InstallDockerPlugin.template b/murano-apps/Jenkins/package/Resources/InstallDockerPlugin.template new file mode 100644 index 0000000..335e7d9 --- /dev/null +++ b/murano-apps/Jenkins/package/Resources/InstallDockerPlugin.template @@ -0,0 +1,17 @@ +FormatVersion: 2.1.0 +Version: 1.0.0 +Name: Deploy Jenkins + + +Body: | + return install_plugin().stdout + +Scripts: + install_plugin: + Type: Application + Version: 1.0.0 + EntryPoint: install_docker_plugin.sh + Files: ['docker_plugin.pp'] + Options: + captureStdout: true + captureStderr: true \ No newline at end of file diff --git a/murano-apps/Jenkins/package/Resources/scripts/docker_plugin.pp b/murano-apps/Jenkins/package/Resources/scripts/docker_plugin.pp new file mode 100644 index 0000000..642a870 --- /dev/null +++ b/murano-apps/Jenkins/package/Resources/scripts/docker_plugin.pp @@ -0,0 +1,40 @@ +node default { + service { 'jenkins': + ensure => running, + enable => true, + } + + jenkins::plugin { 'credentials': + notify => Service['jenkins'] + } + + jenkins::plugin { 'icon-shim': + notify => Service['jenkins'] + } + + jenkins::plugin { 'token-macro': + notify => Service['jenkins'] + } + + jenkins::plugin { 'authentication-tokens': + notify => Service['jenkins'], + require => Jenkins::Plugin['credentials'] + } + + jenkins::plugin { 'docker-commons': + notify => Service['jenkins'], + require => [ + Jenkins::Plugin['authentication-tokens'], + Jenkins::Plugin['icon-shim'], + Jenkins::Plugin['credentials'] + ] + } + + jenkins::plugin { 'docker-build-publish': + notify => Service['jenkins'], + require => [ + Jenkins::Plugin['token-macro'], + Jenkins::Plugin['docker-commons'] + ] + } +} diff --git a/murano-apps/Jenkins/package/Resources/scripts/install_docker_plugin.sh b/murano-apps/Jenkins/package/Resources/scripts/install_docker_plugin.sh new file mode 100644 index 0000000..17ca4a8 --- /dev/null +++ b/murano-apps/Jenkins/package/Resources/scripts/install_docker_plugin.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +puppet apply docker_plugin.pp \ No newline at end of file diff --git a/murano-apps/Jenkins/package/UI/ui.yaml b/murano-apps/Jenkins/package/UI/ui.yaml index bf33057..97da0c9 100644 --- a/murano-apps/Jenkins/package/UI/ui.yaml +++ b/murano-apps/Jenkins/package/UI/ui.yaml @@ -7,6 +7,7 @@ Application: ldap: $.appConfiguration.OpenLDAP gerrit: $.appConfiguration.Gerrit cfplugin: $.appConfiguration.cfplugin + dockerplugin: $.appConfiguration.dockerplugin gitUser: $.appConfiguration.gitUser gitEmail: $.appConfiguration.gitEmail instance: @@ -36,6 +37,13 @@ Forms: Select to true to install CF Plugin automatically initial: false required: false + - name: dockerplugin + type: boolean + label: CloudBees Docker Build and Publish plugin + description: >- + Select to true to install Docker Build and Publish plugin automatically + initial: false + required: false - name: assignFloatingIP type: boolean label: Assign Floating IP