Sync docs from v1.0.0.M7 to gh-pages
This commit is contained in:
@@ -10,9 +10,11 @@ step and describe it in details.</p><div class="section"><div class="titlepage">
|
||||
scripts are reused by both Concourse and Jenkins pipelines.</p><p>In the <code class="literal">concourse</code> folder you can find all the necessary scripts and setup to run Concourse demo.</p><p>In the <code class="literal">docs</code> section you have the whole documentation of the project.</p><p>In the <code class="literal">jenkins</code> folder you can find all the necessary scripts and setup to run Jenkins demo.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_how_to_use_it" href="#_how_to_use_it"></a>1.2 How to use it?</h2></div></div></div><p>This repository can be treated as a template for your pipeline. We provide some opinionated
|
||||
implementation that you can alter to suit your needs. The best approach to use it
|
||||
to build your production projects would be to download the Spring Cloud Pipelines repository as ZIP, then
|
||||
init a Git project there and modify it as you wish.</p><pre class="programlisting">$ curl -LOk https://github.com/spring-cloud/spring-cloud-pipelines/archive/v1.<span class="hl-number">0.0</span>.M6.zip
|
||||
$ unzip v1.<span class="hl-number">0.0</span>.M6.zip
|
||||
$ <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">cd</span> spring-cloud-pipelines-v1.<span class="hl-number">0.0</span>.M6
|
||||
init a Git project there and modify it as you wish.</p><pre class="programlisting">$ <span xmlns:d="http://docbook.org/ns/docbook" class="hl-comment"># pass the branch (e.g. master) or a particular tag (e.g. v1.0.0.RELEASE)</span>
|
||||
$ SC_PIPELINES_RELEASE=...
|
||||
$ curl -LOk https://github.com/spring-cloud/spring-cloud-pipelines/archive/${SC_PIPELINES_RELEASE}.zip
|
||||
$ unzip ${SC_PIPELINES_RELEASE}.zip
|
||||
$ <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">cd</span> spring-cloud-pipelines-${SC_PIPELINES_RELEASE}
|
||||
$ git init
|
||||
$ <span xmlns:d="http://docbook.org/ns/docbook" class="hl-comment"># modify the pipelines to suit your needs</span>
|
||||
$ git add .
|
||||
|
||||
@@ -22,14 +22,14 @@ scripts without changing the whole pipeline.</p></div><div class="section"><div
|
||||
contained them. To fix this, just remove the tags</p><pre class="programlisting">git tag -l | xargs -n <span class="hl-number">1</span> git push --delete origin</pre></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_i_want_to_provide_a_different_jdk_version" href="#_i_want_to_provide_a_different_jdk_version"></a>10.8 I want to provide a different JDK version</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">by default we assume that you have jdk with id <code class="literal">jdk8</code> configured</li><li class="listitem">if you want a different one just override <code class="literal">JDK_VERSION</code> env var and point to the proper one</li></ul></div><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="images/tip.png"></td><th align="left">Tip</th></tr><tr><td align="left" valign="top"><p>The docker image comes in with Java installed at <code class="literal">/usr/lib/jvm/java-8-openjdk-amd64</code>.
|
||||
You can go to <code class="literal">Global Tools</code> and create a JDK with <code class="literal">jdk8</code> id and JAVA_HOME
|
||||
pointing to <code class="literal">/usr/lib/jvm/java-8-openjdk-amd64</code></p></td></tr></table></div><p>To change the default one just follow these steps:</p><p>
|
||||
</p><div class="figure"><a name="d0e5076" href="#d0e5076"></a><p class="title"><b>Figure 10.1. Click 'Manage Jenkins'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/manage_jenkins.png" alt="manage jenkins"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e5087" href="#d0e5087"></a><p class="title"><b>Figure 10.2. Click 'Global Tool'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/global_tool.png" alt="global tool"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e5098" href="#d0e5098"></a><p class="title"><b>Figure 10.3. Click 'JDK Installations'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/jdk_installation.png" alt="jdk installation"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e5109" href="#d0e5109"></a><p class="title"><b>Figure 10.4. Fill out JDK Installation with path to your JDK</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/jdk.png" alt="jdk"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e5040" href="#d0e5040"></a><p class="title"><b>Figure 10.1. Click 'Manage Jenkins'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/manage_jenkins.png" alt="manage jenkins"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e5051" href="#d0e5051"></a><p class="title"><b>Figure 10.2. Click 'Global Tool'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/global_tool.png" alt="global tool"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e5062" href="#d0e5062"></a><p class="title"><b>Figure 10.3. Click 'JDK Installations'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/jdk_installation.png" alt="jdk installation"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e5073" href="#d0e5073"></a><p class="title"><b>Figure 10.4. Fill out JDK Installation with path to your JDK</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/jdk.png" alt="jdk"></div></div></div><br class="figure-break"><p>
|
||||
</p><p>And that’s it!</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="groovy-token-macro" href="#groovy-token-macro"></a>10.9 Enable Groovy Token Macro Processing</h2></div></div></div><p>With scripted that but if you needed to this manually then this is how to do it:</p><p>
|
||||
</p><div class="figure"><a name="d0e5129" href="#d0e5129"></a><p class="title"><b>Figure 10.5. Click 'Manage Jenkins'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/manage_jenkins.png" alt="manage jenkins"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e5140" href="#d0e5140"></a><p class="title"><b>Figure 10.6. Click 'Configure System'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/configure_system.png" alt="configure system"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e5151" href="#d0e5151"></a><p class="title"><b>Figure 10.7. Click 'Allow token macro processing'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/groovy_token.png" alt="groovy token"></div></div></div><br class="figure-break"></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_i_want_deployment_to_stage_and_prod_be_automatic" href="#_i_want_deployment_to_stage_and_prod_be_automatic"></a>10.10 I want deployment to stage and prod be automatic</h2></div></div></div><p>No problem, just set the property / env var to true</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><code class="literal">AUTO_DEPLOY_TO_STAGE</code> to automatically deploy to stage</li><li class="listitem"><code class="literal">AUTO_DEPLOY_TO_PROD</code> to automatically deploy to prod</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_i_don_t_want_to_test_api_compativility" href="#_i_don_t_want_to_test_api_compativility"></a>10.11 I don’t want to test API compativility</h2></div></div></div><p>No problem, just set the <code class="literal">API_COMPATIBILITY_STEP_REQUIRED</code> env variable
|
||||
</p><div class="figure"><a name="d0e5093" href="#d0e5093"></a><p class="title"><b>Figure 10.5. Click 'Manage Jenkins'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/manage_jenkins.png" alt="manage jenkins"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e5104" href="#d0e5104"></a><p class="title"><b>Figure 10.6. Click 'Configure System'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/configure_system.png" alt="configure system"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e5115" href="#d0e5115"></a><p class="title"><b>Figure 10.7. Click 'Allow token macro processing'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/groovy_token.png" alt="groovy token"></div></div></div><br class="figure-break"></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_i_want_deployment_to_stage_and_prod_be_automatic" href="#_i_want_deployment_to_stage_and_prod_be_automatic"></a>10.10 I want deployment to stage and prod be automatic</h2></div></div></div><p>No problem, just set the property / env var to true</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><code class="literal">AUTO_DEPLOY_TO_STAGE</code> to automatically deploy to stage</li><li class="listitem"><code class="literal">AUTO_DEPLOY_TO_PROD</code> to automatically deploy to prod</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_i_don_t_want_to_test_api_compativility" href="#_i_don_t_want_to_test_api_compativility"></a>10.11 I don’t want to test API compativility</h2></div></div></div><p>No problem, just set the <code class="literal">API_COMPATIBILITY_STEP_REQUIRED</code> env variable
|
||||
to <code class="literal">false</code> and rerun the seed (you can pick it from the seed
|
||||
job’s properties too).</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_i_can_t_tag_the_repo" href="#_i_can_t_tag_the_repo"></a>10.12 I can’t tag the repo!</h2></div></div></div><p>When you get sth like this:</p><pre class="programlisting"><span class="hl-number">19</span>:<span class="hl-number">01</span>:<span class="hl-number">44</span> stderr: remote: Invalid username or password.
|
||||
<span class="hl-number">19</span>:<span class="hl-number">01</span>:<span class="hl-number">44</span> fatal: Authentication failed <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">for</span> <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'https://github.com/marcingrzejszczak/github-webhook/'</span>
|
||||
|
||||
@@ -59,15 +59,15 @@ of Java installation and the others to another one.</p></td></tr></table></div><
|
||||
you’d have to go to <code class="literal">Configure</code> of the build step and modify the Git name / email.
|
||||
If you want to set it globally you’ll have to remove the section from the build
|
||||
step and follow these steps to set it globally.</p><p>You can set Git email / user globally like this:</p><p>
|
||||
</p><div class="figure"><a name="d0e2641" href="#d0e2641"></a><p class="title"><b>Figure 7.1. Click 'Manage Jenkins'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/manage_jenkins.png" alt="manage jenkins"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2652" href="#d0e2652"></a><p class="title"><b>Figure 7.2. Click 'Configure System'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/configure_system.png" alt="configure system"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2663" href="#d0e2663"></a><p class="title"><b>Figure 7.3. Fill out Git user information</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/git.png" alt="git"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2605" href="#d0e2605"></a><p class="title"><b>Figure 7.1. Click 'Manage Jenkins'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/manage_jenkins.png" alt="manage jenkins"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2616" href="#d0e2616"></a><p class="title"><b>Figure 7.2. Click 'Configure System'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/configure_system.png" alt="configure system"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2627" href="#d0e2627"></a><p class="title"><b>Figure 7.3. Fill out Git user information</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/git.png" alt="git"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="jenkins-credentials-github" href="#jenkins-credentials-github"></a>Add Jenkins credentials for GitHub</h4></div></div></div><p><a name="jenkins-credentials" href="#jenkins-credentials"></a> The scripts will need to access the credential in order to tag the repo.</p><p>You have to set credentials with id: <code class="literal">git</code>.</p><p>Below you can find instructions on how to set a credential (e.g. for Cloud Foundry <code class="literal">cf-test</code> credential but
|
||||
remember to provide the one with id <code class="literal">git</code>).</p><p>
|
||||
</p><div class="figure"><a name="d0e2695" href="#d0e2695"></a><p class="title"><b>Figure 7.4. Click 'Credentials, System'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/credentials_system.png" alt="credentials system"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2706" href="#d0e2706"></a><p class="title"><b>Figure 7.5. Click 'Global Credentials'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/credentials_global.png" alt="credentials global"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2717" href="#d0e2717"></a><p class="title"><b>Figure 7.6. Click 'Add credentials'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/credentials_add.png" alt="credentials add"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2728" href="#d0e2728"></a><p class="title"><b>Figure 7.7. Fill out the user / password and provide the <code class="literal">git</code> credential ID (in this example <code class="literal">cf-test</code>)</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/credentials_example.png" alt="credentials example"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2659" href="#d0e2659"></a><p class="title"><b>Figure 7.4. Click 'Credentials, System'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/credentials_system.png" alt="credentials system"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2670" href="#d0e2670"></a><p class="title"><b>Figure 7.5. Click 'Global Credentials'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/credentials_global.png" alt="credentials global"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2681" href="#d0e2681"></a><p class="title"><b>Figure 7.6. Click 'Add credentials'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/credentials_add.png" alt="credentials add"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2692" href="#d0e2692"></a><p class="title"><b>Figure 7.7. Fill out the user / password and provide the <code class="literal">git</code> credential ID (in this example <code class="literal">cf-test</code>)</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/credentials_example.png" alt="credentials example"></div></div></div><br class="figure-break"><p>
|
||||
</p></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_testing_jenkins_scripts" href="#_testing_jenkins_scripts"></a>7.3 Testing Jenkins scripts</h2></div></div></div><p><code class="literal">./gradlew clean build</code></p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="images/warning.png"></td><th align="left">Warning</th></tr><tr><td align="left" valign="top"><p>The ran test only checks if your scripts compile.</p></td></tr></table></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_how_to_work_with_jenkins_job_dsl_plugin" href="#_how_to_work_with_jenkins_job_dsl_plugin"></a>7.4 How to work with Jenkins Job DSL plugin</h2></div></div></div><p>Check out the <a class="link" href="https://github.com/jenkinsci/job-dsl-plugin/wiki/Tutorial---Using-the-Jenkins-Job-DSL" target="_top">tutorial</a>.
|
||||
Provide the link to this repository in your Jenkins installation.</p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="images/warning.png"></td><th align="left">Warning</th></tr><tr><td align="left" valign="top"><p>Remember that views can be overridden that’s why the suggestion is to contain in one script all the logic needed to build a view
|
||||
for a single project (check out that <code class="literal">spring_cloud_views.groovy</code> is building all the <code class="literal">spring-cloud</code> views).</p></td></tr></table></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_docker_image" href="#_docker_image"></a>7.5 Docker Image</h2></div></div></div><p>If you would like to run the pre-configured Jenkins image somewhere other than your local machine, we
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>2. Opinionated implementation</title><link rel="stylesheet" type="text/css" href="css/manual-multipage.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="multi_spring-cloud-pipelines.html" title="Spring Cloud Pipelines"><link rel="up" href="multi_spring-cloud-pipelines.html" title="Spring Cloud Pipelines"><link rel="prev" href="multi__introduction.html" title="1. Introduction"><link rel="next" href="multi__project_opinions.html" title="3. Project opinions"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2. Opinionated implementation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="multi__introduction.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="multi__project_opinions.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="_opinionated_implementation" href="#_opinionated_implementation"></a>2. Opinionated implementation</h1></div></div></div><p>For the demo purposes we’re providing Docker Compose setup with Artifactory and Concourse / Jenkins tools.
|
||||
Regardless of the picked CD application for the pipeline to pass one needs either</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><span class="strong"><strong>[CLOUD FOUNDRY]</strong></span> a Cloud Foundry instance (for example <a class="link" href="https://run.pivotal.io/" target="_top">Pivotal Web Services</a> or <a class="link" href="https://pivotal.io/pcf-dev" target="_top">PCF Dev</a>)</li><li class="listitem"><span class="strong"><strong>[KUBERNETES]</strong></span> a Kubernetes cluster (for example <a class="link" href="https://github.com/kubernetes/minikube" target="_top">Minikube</a>)</li><li class="listitem">the infrastructure applications deployed to the JAR hosting application (for the demo we’re providing Artifactory).</li><li class="listitem"><code class="literal">Eureka</code> for Service Discovery</li><li class="listitem"><code class="literal">Stub Runner Boot</code> for running Spring Cloud Contract stubs.</li></ul></div><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="images/tip.png"></td><th align="left">Tip</th></tr><tr><td align="left" valign="top"><p>In the demos we’re showing you how to first build the <code class="literal">github-webhook</code> project. That’s because
|
||||
Regardless of the picked CD application for the pipeline to pass one needs either</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">a Cloud Foundry instance (for example <a class="link" href="https://run.pivotal.io/" target="_top">Pivotal Web Services</a> or <a class="link" href="https://pivotal.io/pcf-dev" target="_top">PCF Dev</a>)</li><li class="listitem">a Kubernetes cluster (for example <a class="link" href="https://github.com/kubernetes/minikube" target="_top">Minikube</a>)</li><li class="listitem">the infrastructure applications deployed to the JAR hosting application (for the demo we’re providing Artifactory).</li><li class="listitem"><code class="literal">Eureka</code> for Service Discovery</li><li class="listitem"><code class="literal">Stub Runner Boot</code> for running Spring Cloud Contract stubs.</li></ul></div><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="images/tip.png"></td><th align="left">Tip</th></tr><tr><td align="left" valign="top"><p>In the demos we’re showing you how to first build the <code class="literal">github-webhook</code> project. That’s because
|
||||
the <code class="literal">github-analytics</code> needs the stubs of <code class="literal">github-webhook</code> to pass the tests. Below you’ll find
|
||||
references to <code class="literal">github-analytics</code> project since it contains more interesting pieces as far as testing
|
||||
is concerned.</p></td></tr></table></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_build" href="#_build"></a>2.1 Build</h2></div></div></div><div class="figure"><a name="d0e491" href="#d0e491"></a><p class="title"><b>Figure 2.1. Build and upload artifacts</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/intro/build.png" alt="build"></div></div></div><br class="figure-break"><p>In this step we’re generating a version of the pipeline, next we’re
|
||||
running unit, integration and contract tests. Finally we’re:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">publishing a fat jar of the application</li><li class="listitem">publishing a Spring Cloud Contract jar containing stubs of the application</li><li class="listitem"><span class="strong"><strong>[KUBERNETES]</strong></span> uploading a Docker image of the application</li></ul></div><p>During this phase we’re executing a <code class="literal">Maven</code> build using Maven Wrapper or a <code class="literal">Gradle</code> build using Gradle Wrapper
|
||||
is concerned.</p></td></tr></table></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_build" href="#_build"></a>2.1 Build</h2></div></div></div><div class="figure"><a name="d0e487" href="#d0e487"></a><p class="title"><b>Figure 2.1. Build and upload artifacts</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/intro/build.png" alt="build"></div></div></div><br class="figure-break"><p>In this step we’re generating a version of the pipeline, next we’re
|
||||
running unit, integration and contract tests. Finally we’re:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">publishing a fat jar of the application</li><li class="listitem">publishing a Spring Cloud Contract jar containing stubs of the application</li><li class="listitem">for Kubernetes - uploading a Docker image of the application</li></ul></div><p>During this phase we’re executing a <code class="literal">Maven</code> build using Maven Wrapper or a <code class="literal">Gradle</code> build using Gradle Wrapper
|
||||
, with unit and integration tests. We’re also <span class="strong"><strong>tagging</strong></span> the repository with <code class="literal">dev/${version}</code> format. That way in each
|
||||
subsequent step of the pipeline we’re able to retrieve the tagged version. Also we know
|
||||
exactly which version of the pipeline corresponds to which Git hash.</p><p>Once the artifact got built we’re running API compatibility check.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">we’re searching for the latest production deployment</li><li class="listitem">we’re retrieving the contracts that were used by that deployment</li><li class="listitem">from the contracts we’re generating API tests to see if the current implementation
|
||||
is fulfilling the HTTP / messaging contracts that the current production deployment
|
||||
has defined (we’re checking backward compatibility of the API)</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_test" href="#_test"></a>2.2 Test</h2></div></div></div><div class="figure"><a name="d0e543" href="#d0e543"></a><p class="title"><b>Figure 2.2. Smoke test and rollback test on test environment</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/intro/test.png" alt="test"></div></div></div><br class="figure-break"><p>Here we’re</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">starting a RabbitMQ service in PaaS</li><li class="listitem">deploying <code class="literal">Eureka</code> infrastructure application to PaaS</li><li class="listitem">downloading the fat jar from Nexus and we’re uploading it to PaaS. We want the application
|
||||
has defined (we’re checking backward compatibility of the API)</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_test" href="#_test"></a>2.2 Test</h2></div></div></div><div class="figure"><a name="d0e537" href="#d0e537"></a><p class="title"><b>Figure 2.2. Smoke test and rollback test on test environment</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/intro/test.png" alt="test"></div></div></div><br class="figure-break"><p>Here we’re</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">starting a RabbitMQ service in PaaS</li><li class="listitem">deploying <code class="literal">Eureka</code> infrastructure application to PaaS</li><li class="listitem">downloading the fat jar from Nexus and we’re uploading it to PaaS. We want the application
|
||||
to run in isolation (be surrounded by stubs).</li></ul></div><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="images/tip.png"></td><th align="left">Tip</th></tr><tr><td align="left" valign="top"><p>Currently due to port constraints in Cloud Foundry
|
||||
we cannot run multiple stubbed HTTP services in the cloud so to fix this issue we’re running
|
||||
the application with <code class="literal">smoke</code> Spring profile on which you can stub out all HTTP calls to return
|
||||
@@ -30,12 +30,12 @@ release (we’re checking out the tag), we’re downloading the appropri
|
||||
or Docker image for Kubernetes) and we’re uploading
|
||||
it to PaaS. <span class="strong"><strong>IMPORTANT</strong></span> the <span class="emphasis"><em>old</em></span> artifact is running against the <span class="strong"><strong>NEW</strong></span> version of the database.</li><li class="listitem">we’re running the <span class="emphasis"><em>old</em></span> <code class="literal">smoke</code> tests against the freshly deployed application surrounded by stubs.
|
||||
If those tests pass then we have a high probability that the application is backwards compatible</li><li class="listitem">the default behaviour is that after all of those steps the user can manually click to deploy the
|
||||
application to a stage environment</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_stage" href="#_stage"></a>2.3 Stage</h2></div></div></div><div class="figure"><a name="d0e640" href="#d0e640"></a><p class="title"><b>Figure 2.3. End to end tests on stage environment</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/intro/stage.png" alt="stage"></div></div></div><br class="figure-break"><p>Here we’re</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">starting a RabbitMQ service in PaaS</li><li class="listitem">deploying <code class="literal">Eureka</code> infrastructure application to PaaS</li><li class="listitem">downloading the artifact (either JAR for Cloud Foundry or Docker image for Kubernetes)
|
||||
application to a stage environment</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_stage" href="#_stage"></a>2.3 Stage</h2></div></div></div><div class="figure"><a name="d0e634" href="#d0e634"></a><p class="title"><b>Figure 2.3. End to end tests on stage environment</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/intro/stage.png" alt="stage"></div></div></div><br class="figure-break"><p>Here we’re</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">starting a RabbitMQ service in PaaS</li><li class="listitem">deploying <code class="literal">Eureka</code> infrastructure application to PaaS</li><li class="listitem">downloading the artifact (either JAR for Cloud Foundry or Docker image for Kubernetes)
|
||||
from and we’re uploading it to PaaS.</li></ul></div><p>Next we have a manual step in which:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">from the checked out code we’re running the tests available under the <code class="literal">e2e</code> profile. In the
|
||||
case of <code class="literal">GitHub Analytics</code> application we’re sending a HTTP message to GitHub Analytic’s endpoint. Then we’re checking if
|
||||
the received message count has increased.</li></ul></div><p>The step is manual by default due to the fact that stage environment is often shared between
|
||||
teams and some preparations on databases / infrastructure have to take place before running the tests.
|
||||
Ideally these step should be fully automatic.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_prod" href="#_prod"></a>2.4 Prod</h2></div></div></div><div class="figure"><a name="d0e681" href="#d0e681"></a><p class="title"><b>Figure 2.4. Deployment to production</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/intro/prod.png" alt="prod"></div></div></div><br class="figure-break"><p>The step to deploy to production is manual but ideally it should be automatic.</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.png"></td><th align="left">Important</th></tr><tr><td align="left" valign="top"><p>This step does deployment to production. On production you would assume
|
||||
Ideally these step should be fully automatic.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_prod" href="#_prod"></a>2.4 Prod</h2></div></div></div><div class="figure"><a name="d0e675" href="#d0e675"></a><p class="title"><b>Figure 2.4. Deployment to production</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/intro/prod.png" alt="prod"></div></div></div><br class="figure-break"><p>The step to deploy to production is manual but ideally it should be automatic.</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.png"></td><th align="left">Important</th></tr><tr><td align="left" valign="top"><p>This step does deployment to production. On production you would assume
|
||||
that you have the infrastructure running. That’s why before you run this step you
|
||||
must execute a script that will provision the services on the production environment.
|
||||
For <code class="literal">Cloud Foundry</code> just call <code class="literal">tools/cf-helper.sh setup-prod-infra</code> and
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>12. The demo setup (Cloud Foundry)</title><link rel="stylesheet" type="text/css" href="css/manual-multipage.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="multi_spring-cloud-pipelines.html" title="Spring Cloud Pipelines"><link rel="up" href="multi_spring-cloud-pipelines.html" title="Spring Cloud Pipelines"><link rel="prev" href="multi__kubernetes_setup.html" title="11. Kubernetes setup"><link rel="next" href="multi__the_demo_setup_kubernetes.html" title="13. The demo setup (Kubernetes)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">12. The demo setup (Cloud Foundry)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="multi__kubernetes_setup.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="multi__the_demo_setup_kubernetes.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="_the_demo_setup_cloud_foundry" href="#_the_demo_setup_cloud_foundry"></a>12. The demo setup (Cloud Foundry)</h1></div></div></div><p>The demo uses 2 applications. <a class="link" href="https://github.com/spring-cloud-samples/github-webhook/" target="_top">Github Webhook</a>
|
||||
and <a class="link" href="https://github.com/spring-cloud-samples/github-analytics/" target="_top">Github analytics code</a>. Below you can
|
||||
see an image of how these application communicate with each other.</p><div class="figure"><a name="d0e5518" href="#d0e5518"></a><p class="title"><b>Figure 12.1. Github Webhook listens to HTTP calls and sends a message to Github Analytics</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/demo/demo.png" alt="demo"></div></div></div><br class="figure-break"><p>
|
||||
see an image of how these application communicate with each other.</p><div class="figure"><a name="d0e5482" href="#d0e5482"></a><p class="title"><b>Figure 12.1. Github Webhook listens to HTTP calls and sends a message to Github Analytics</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/demo/demo.png" alt="demo"></div></div></div><br class="figure-break"><p>
|
||||
</p><p>For the demo scenario we have two applications. <code class="literal">Github Analytics</code> and <code class="literal">Github Webhook</code>.
|
||||
Let’s imagine a case where Github is emitting events via HTTP. <code class="literal">Github Webhook</code> has
|
||||
an API that could register to such hooks and receive those messages. Once this happens
|
||||
<code class="literal">Github Webhook</code> sends a message by RabbitMQ to a channel. <code class="literal">Github Analytics</code> is
|
||||
listening to those messages and stores them in a MySQL database.</p><div class="figure"><a name="d0e5546" href="#d0e5546"></a><p class="title"><b>Figure 12.2. Github Analytics exposes metrics that are polled by Prometheus</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/demo/demo_metrics.png" alt="demo metrics"></div></div></div><br class="figure-break"><p>
|
||||
listening to those messages and stores them in a MySQL database.</p><div class="figure"><a name="d0e5510" href="#d0e5510"></a><p class="title"><b>Figure 12.2. Github Analytics exposes metrics that are polled by Prometheus</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/demo/demo_metrics.png" alt="demo metrics"></div></div></div><br class="figure-break"><p>
|
||||
</p><p><code class="literal">Github Analytics</code> has its KPIs (Key Performance Indicators) monitored. In the case
|
||||
of that application the KPI is number of issues.</p><div class="figure"><a name="d0e5561" href="#d0e5561"></a><p class="title"><b>Figure 12.3. Grafana alerts Slack over Prometheus metrics</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/demo/demo_alerting.png" alt="demo alerting"></div></div></div><br class="figure-break"><p>
|
||||
of that application the KPI is number of issues.</p><div class="figure"><a name="d0e5525" href="#d0e5525"></a><p class="title"><b>Figure 12.3. Grafana alerts Slack over Prometheus metrics</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/demo/demo_alerting.png" alt="demo alerting"></div></div></div><br class="figure-break"><p>
|
||||
</p><p>Let’s assume that if we go below the threshold of X issues then an alert should be
|
||||
sent to Slack.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_deploying_production_applications_to_pcf_dev" href="#_deploying_production_applications_to_pcf_dev"></a>12.1 Deploying production applications to PCF Dev</h2></div></div></div><p>In the real world scenario we wouldn’t want to automatically provision services like
|
||||
RabbitMQ, MySQL or Eureka each time we deploy a new application to production. Typically
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>13. The demo setup (Kubernetes)</title><link rel="stylesheet" type="text/css" href="css/manual-multipage.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="multi_spring-cloud-pipelines.html" title="Spring Cloud Pipelines"><link rel="up" href="multi_spring-cloud-pipelines.html" title="Spring Cloud Pipelines"><link rel="prev" href="multi__the_demo_setup_cloud_foundry.html" title="12. The demo setup (Cloud Foundry)"><link rel="next" href="multi__building_the_project.html" title="14. Building the project"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">13. The demo setup (Kubernetes)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="multi__the_demo_setup_cloud_foundry.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="multi__building_the_project.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="_the_demo_setup_kubernetes" href="#_the_demo_setup_kubernetes"></a>13. The demo setup (Kubernetes)</h1></div></div></div><p>The demo uses 2 applications. <a class="link" href="https://github.com/spring-cloud-samples/github-webhook-kubernetes/" target="_top">Github Webhook</a>
|
||||
and <a class="link" href="https://github.com/spring-cloud-samples/github-analytics-kubernetes/" target="_top">Github analytics code</a>. Below you can
|
||||
see an image of how these application communicate with each other.</p><div class="figure"><a name="d0e5682" href="#d0e5682"></a><p class="title"><b>Figure 13.1. Github Webhook listens to HTTP calls and sends a message to Github Analytics</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/demo/demo.png" alt="demo"></div></div></div><br class="figure-break"><p>
|
||||
see an image of how these application communicate with each other.</p><div class="figure"><a name="d0e5646" href="#d0e5646"></a><p class="title"><b>Figure 13.1. Github Webhook listens to HTTP calls and sends a message to Github Analytics</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/demo/demo.png" alt="demo"></div></div></div><br class="figure-break"><p>
|
||||
</p><p>For the demo scenario we have two applications. <code class="literal">Github Analytics</code> and <code class="literal">Github Webhook</code>.
|
||||
Let’s imagine a case where Github is emitting events via HTTP. <code class="literal">Github Webhook</code> has
|
||||
an API that could register to such hooks and receive those messages. Once this happens
|
||||
<code class="literal">Github Webhook</code> sends a message by RabbitMQ to a channel. <code class="literal">Github Analytics</code> is
|
||||
listening to those messages and stores them in a MySQL database.</p><div class="figure"><a name="d0e5710" href="#d0e5710"></a><p class="title"><b>Figure 13.2. Github Analytics exposes metrics that are polled by Prometheus</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/demo/demo_metrics.png" alt="demo metrics"></div></div></div><br class="figure-break"><p>
|
||||
listening to those messages and stores them in a MySQL database.</p><div class="figure"><a name="d0e5674" href="#d0e5674"></a><p class="title"><b>Figure 13.2. Github Analytics exposes metrics that are polled by Prometheus</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/demo/demo_metrics.png" alt="demo metrics"></div></div></div><br class="figure-break"><p>
|
||||
</p><p><code class="literal">Github Analytics</code> has its KPIs (Key Performance Indicators) monitored. In the case
|
||||
of that application the KPI is number of issues.</p><div class="figure"><a name="d0e5725" href="#d0e5725"></a><p class="title"><b>Figure 13.3. Grafana alerts Slack over Prometheus metrics</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/demo/demo_alerting.png" alt="demo alerting"></div></div></div><br class="figure-break"><p>
|
||||
of that application the KPI is number of issues.</p><div class="figure"><a name="d0e5689" href="#d0e5689"></a><p class="title"><b>Figure 13.3. Grafana alerts Slack over Prometheus metrics</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/demo/demo_alerting.png" alt="demo alerting"></div></div></div><br class="figure-break"><p>
|
||||
</p><p>Let’s assume that if we go below the threshold of X issues then an alert should be
|
||||
sent to Slack.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_deploying_production_applications_to_minikube" href="#_deploying_production_applications_to_minikube"></a>13.1 Deploying production applications to Minikube</h2></div></div></div><p>In the real world scenario we wouldn’t want to automatically provision services like
|
||||
RabbitMQ, MySQL or Eureka each time we deploy a new application to production. Typically
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -34,7 +34,7 @@ Congratulations. You have just deployed JFrog Artifactory Pro!
|
||||
Default credential <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">for</span> Artifactory:
|
||||
user: admin
|
||||
password: password</pre><p>Next, we need to set up the repositories.</p><p>First, access the Artifactory URL and log in with
|
||||
user, <code class="literal">admin</code> and <code class="literal">password</code> password.</p><div class="figure"><a name="d0e2013" href="#d0e2013"></a><p class="title"><b>Figure 5.1. Click on the <code class="literal">Quick Setup</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/artifactory_quick_setup.png" alt="artifactory quick setup"></div></div></div><br class="figure-break"><p>Then, click on the Maven setup and click <code class="literal">Create</code>.</p><div class="figure"><a name="d0e2029" href="#d0e2029"></a><p class="title"><b>Figure 5.2. Create the <code class="literal">Maven</code> Repository</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/artifactory_maven_repo.png" alt="artifactory maven repo"></div></div></div><br class="figure-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="concourse-pipeline-fly-k8s" href="#concourse-pipeline-fly-k8s"></a>5.2.2 Setup the <code class="literal">fly</code> CLI</h3></div></div></div><p><a name="fly" href="#fly"></a> If you go to Concourse website you should see sth like this:</p><p>
|
||||
user, <code class="literal">admin</code> and <code class="literal">password</code> password.</p><div class="figure"><a name="d0e1977" href="#d0e1977"></a><p class="title"><b>Figure 5.1. Click on the <code class="literal">Quick Setup</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/artifactory_quick_setup.png" alt="artifactory quick setup"></div></div></div><br class="figure-break"><p>Then, click on the Maven setup and click <code class="literal">Create</code>.</p><div class="figure"><a name="d0e1993" href="#d0e1993"></a><p class="title"><b>Figure 5.2. Create the <code class="literal">Maven</code> Repository</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/artifactory_maven_repo.png" alt="artifactory maven repo"></div></div></div><br class="figure-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="concourse-pipeline-fly-k8s" href="#concourse-pipeline-fly-k8s"></a>5.2.2 Setup the <code class="literal">fly</code> CLI</h3></div></div></div><p><a name="fly" href="#fly"></a> If you go to Concourse website you should see sth like this:</p><p>
|
||||
</p><div class="informalfigure"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/running_concourse.png" alt="running concourse"></div></div><p>
|
||||
</p><p>You can click one of the icons (depending on your OS) to download <code class="literal">fly</code>, which is the Concourse CLI. Once you’ve downloaded that (and maybe added to your PATH) you can run:</p><pre class="programlisting">fly --version</pre><p>If <code class="literal">fly</code> is properly installed then it should print out the version.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="concourse-pipeline-credentials-k8s" href="#concourse-pipeline-credentials-k8s"></a>5.2.3 Setup your <code class="literal">credentials.yml</code></h3></div></div></div><p>There is a sample credentials file called <code class="literal">credentials-sample-k8s.yml</code>
|
||||
prepared for <code class="literal">k8s</code>. You can use it as a base for your <code class="literal">credentials.yml</code>.</p><p>To allow the Concourse worker’s spawned container to connect to
|
||||
@@ -43,13 +43,13 @@ auth token.</p><p>To get the contents of CA for GCE just execute</p><pre class="
|
||||
$ <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">echo</span> <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"Visit http://127.0.0.1:8080 to use Concourse"</span>
|
||||
$ kubectl port-forward --namespace default $POD_NAME <span class="hl-number">8080</span>:<span class="hl-number">8080</span>
|
||||
Visit http://<span class="hl-number">127.0</span>.<span class="hl-number">0.1</span>:<span class="hl-number">8080</span> to use Concourse</pre><p>Log in (e.g. for Concourse running at <code class="literal">127.0.0.1</code> - if you don’t provide any value then <code class="literal">localhost</code> is assumed). If you execute this script (it assumes that either <code class="literal">fly</code> is on your <code class="literal">PATH</code> or it’s in the same folder as the script is):</p><pre class="programlisting">$ fly -t k8s login -c http://localhost:<span class="hl-number">8080</span> -u concourse -p concourse</pre><p>Next run the command to create the pipeline.</p><pre class="programlisting">$ ./set_pipeline.sh github-webhook k8s credentials-k8s.yml</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="concourse-pipeline-run-k8s" href="#concourse-pipeline-run-k8s"></a>5.2.5 Run the <code class="literal">github-webhook</code> pipeline</h3></div></div></div><p>
|
||||
</p><div class="figure"><a name="d0e2144" href="#d0e2144"></a><p class="title"><b>Figure 5.3. Click <code class="literal">Login</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/concourse_login.png" alt="concourse login"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2157" href="#d0e2157"></a><p class="title"><b>Figure 5.4. Pick <code class="literal">main</code> team</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/concourse_team_main.png" alt="concourse team main"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2171" href="#d0e2171"></a><p class="title"><b>Figure 5.5. Log in with <code class="literal">concourse</code> user and <code class="literal">concourse</code> password</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/concourse_user_pass.png" alt="concourse user pass"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2188" href="#d0e2188"></a><p class="title"><b>Figure 5.6. Your screen should look more or less like this</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/concourse_pipeline.png" alt="concourse pipeline"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2199" href="#d0e2199"></a><p class="title"><b>Figure 5.7. Unpause the pipeline by clicking in the top lefr corner and then clicking the <code class="literal">play</code> button</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/start_pipeline.png" alt="start pipeline"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2213" href="#d0e2213"></a><p class="title"><b>Figure 5.8. Click 'generate-version'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/generate_version.png" alt="generate version"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2224" href="#d0e2224"></a><p class="title"><b>Figure 5.9. Click <code class="literal">+</code> sign to start a new build</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/run_pipeline.png" alt="run pipeline"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2238" href="#d0e2238"></a><p class="title"><b>Figure 5.10. The job is pending</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/concourse_pending.png" alt="concourse pending"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2249" href="#d0e2249"></a><p class="title"><b>Figure 5.11. Job is pending in the main screen</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/job_running.png" alt="job running"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2260" href="#d0e2260"></a><p class="title"><b>Figure 5.12. Job is running in the main screen</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/running_pipeline.png" alt="running pipeline"></div></div></div><br class="figure-break"></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="multi_concourse-pipeline-cf.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="multi_concourse-faq.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4. Concourse Pipeline (Cloud Foundry) </td><td width="20%" align="center"><a accesskey="h" href="multi_spring-cloud-pipelines.html">Home</a></td><td width="40%" align="right" valign="top"> 6. Concourse FAQ</td></tr></table></div></body></html>
|
||||
</p><div class="figure"><a name="d0e2108" href="#d0e2108"></a><p class="title"><b>Figure 5.3. Click <code class="literal">Login</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/concourse_login.png" alt="concourse login"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2121" href="#d0e2121"></a><p class="title"><b>Figure 5.4. Pick <code class="literal">main</code> team</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/concourse_team_main.png" alt="concourse team main"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2135" href="#d0e2135"></a><p class="title"><b>Figure 5.5. Log in with <code class="literal">concourse</code> user and <code class="literal">concourse</code> password</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/concourse_user_pass.png" alt="concourse user pass"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2152" href="#d0e2152"></a><p class="title"><b>Figure 5.6. Your screen should look more or less like this</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/concourse_pipeline.png" alt="concourse pipeline"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2163" href="#d0e2163"></a><p class="title"><b>Figure 5.7. Unpause the pipeline by clicking in the top lefr corner and then clicking the <code class="literal">play</code> button</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/start_pipeline.png" alt="start pipeline"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2177" href="#d0e2177"></a><p class="title"><b>Figure 5.8. Click 'generate-version'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/generate_version.png" alt="generate version"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2188" href="#d0e2188"></a><p class="title"><b>Figure 5.9. Click <code class="literal">+</code> sign to start a new build</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/run_pipeline.png" alt="run pipeline"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2202" href="#d0e2202"></a><p class="title"><b>Figure 5.10. The job is pending</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/concourse_pending.png" alt="concourse pending"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2213" href="#d0e2213"></a><p class="title"><b>Figure 5.11. Job is pending in the main screen</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/job_running.png" alt="job running"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2224" href="#d0e2224"></a><p class="title"><b>Figure 5.12. Job is running in the main screen</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/concourse/running_pipeline.png" alt="running pipeline"></div></div></div><br class="figure-break"></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="multi_concourse-pipeline-cf.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="multi_concourse-faq.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4. Concourse Pipeline (Cloud Foundry) </td><td width="20%" align="center"><a accesskey="h" href="multi_spring-cloud-pipelines.html">Home</a></td><td width="40%" align="right" valign="top"> 6. Concourse FAQ</td></tr></table></div></body></html>
|
||||
@@ -32,35 +32,35 @@ has all the properties options, but you can delete most of it. If you
|
||||
set the properties as global env variables you have to remove them from the
|
||||
seed.</p><p>Anyways, to run the demo just provide in the <code class="literal">REPOS</code> var the comma separated
|
||||
list of URLs of the 2 aforementioned forks of <code class="literal">github-webhook</code> and `github-analytics'.</p><p>
|
||||
</p><div class="figure"><a name="d0e2979" href="#d0e2979"></a><p class="title"><b>Figure 8.1. Click the 'jenkins-pipeline-seed-cf' job for Cloud Foundry and <code class="literal">jenkins-pipeline-seed-k8s</code> for Kubernetes</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_click.png" alt="seed click"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2993" href="#d0e2993"></a><p class="title"><b>Figure 8.2. Click the 'Build with parameters'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_run.png" alt="seed run"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3004" href="#d0e3004"></a><p class="title"><b>Figure 8.3. The <code class="literal">REPOS</code> parameter should already contain your forked repos (you’ll have more properties than the ones in the screenshot)</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed.png" alt="seed"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3018" href="#d0e3018"></a><p class="title"><b>Figure 8.4. This is how the results of seed should look like</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_built.png" alt="seed built"></div></div></div><br class="figure-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jenkins-pipeline-cf" href="#jenkins-pipeline-cf"></a>8.1.5 Run the <code class="literal">github-webhook</code> pipeline</h3></div></div></div><p>We already create the seed job for you but you’ll have to run it. When you do
|
||||
</p><div class="figure"><a name="d0e2943" href="#d0e2943"></a><p class="title"><b>Figure 8.1. Click the 'jenkins-pipeline-seed-cf' job for Cloud Foundry and <code class="literal">jenkins-pipeline-seed-k8s</code> for Kubernetes</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_click.png" alt="seed click"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2957" href="#d0e2957"></a><p class="title"><b>Figure 8.2. Click the 'Build with parameters'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_run.png" alt="seed run"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2968" href="#d0e2968"></a><p class="title"><b>Figure 8.3. The <code class="literal">REPOS</code> parameter should already contain your forked repos (you’ll have more properties than the ones in the screenshot)</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed.png" alt="seed"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e2982" href="#d0e2982"></a><p class="title"><b>Figure 8.4. This is how the results of seed should look like</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_built.png" alt="seed built"></div></div></div><br class="figure-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jenkins-pipeline-cf" href="#jenkins-pipeline-cf"></a>8.1.5 Run the <code class="literal">github-webhook</code> pipeline</h3></div></div></div><p>We already create the seed job for you but you’ll have to run it. When you do
|
||||
run it you have to provide some properties. By default we create a seed that
|
||||
has all the properties options, but you can delete most of it. If you
|
||||
set the properties as global env variables you have to remove them from the
|
||||
seed.</p><p>Anyways, to run the demo just provide in the <code class="literal">REPOS</code> var the comma separated
|
||||
list of URLs of the 2 aforementioned forks of <code class="literal">github-webhook</code> and <code class="literal">github-analytics</code>.</p><p>
|
||||
</p><div class="figure"><a name="d0e3048" href="#d0e3048"></a><p class="title"><b>Figure 8.5. Click the 'github-webhook' view</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_views.png" alt="seed views"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3059" href="#d0e3059"></a><p class="title"><b>Figure 8.6. Run the pipeline</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/pipeline_run.png" alt="pipeline run"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3012" href="#d0e3012"></a><p class="title"><b>Figure 8.5. Click the 'github-webhook' view</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_views.png" alt="seed views"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3023" href="#d0e3023"></a><p class="title"><b>Figure 8.6. Run the pipeline</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/pipeline_run.png" alt="pipeline run"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.png"></td><th align="left">Important</th></tr><tr><td align="left" valign="top"><p>If your build fails on the <span class="strong"><strong>deploy previous version to stage</strong></span> due to missing jar,
|
||||
that means that you’ve forgotten to clear the tags in your repo. Typically that’s due to the fact that
|
||||
you’ve removed the Artifactory volume with deployed JAR whereas a tag in the repo is still pointing there.
|
||||
<a class="link" href="">Check out this section on how to remove the tag.</a></p></td></tr></table></div><p>
|
||||
</p><div class="figure"><a name="d0e3080" href="#d0e3080"></a><p class="title"><b>Figure 8.7. Click the manual step to go to stage (remember about killing the apps on test env). To do this click the <span class="strong">ARROW</span> next to the job name</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/pipeline_manual.png" alt="pipeline manual"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3044" href="#d0e3044"></a><p class="title"><b>Figure 8.7. Click the manual step to go to stage (remember about killing the apps on test env). To do this click the <span class="strong">ARROW</span> next to the job name</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/pipeline_manual.png" alt="pipeline manual"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.png"></td><th align="left">Important</th></tr><tr><td align="left" valign="top"><p>Most likely you will run out of memory so when reaching the stage
|
||||
environment it’s good to kill all apps on test. <a class="link" href="">Check out the FAQ section for more details</a>!</p></td></tr></table></div><p>
|
||||
</p><div class="figure"><a name="d0e3102" href="#d0e3102"></a><p class="title"><b>Figure 8.8. The full pipeline should look like this</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/pipeline_finished.png" alt="pipeline finished"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3066" href="#d0e3066"></a><p class="title"><b>Figure 8.8. The full pipeline should look like this</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/pipeline_finished.png" alt="pipeline finished"></div></div></div><br class="figure-break"><p>
|
||||
</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="declarative-pipeline-cf" href="#declarative-pipeline-cf"></a>8.2 Declarative pipeline & Blue Ocean</h2></div></div></div><p>You can also use the <a class="link" href="https://jenkins.io/doc/book/pipeline/syntax/" target="_top">declarative pipeline</a> approach with the
|
||||
<a class="link" href="https://jenkins.io/projects/blueocean/" target="_top">Blue Ocean UI</a>. Here is a step by step guide to run a pipeline via
|
||||
this approach.</p><p>The Blue Ocean UI is available under the <code class="literal">blue/</code> URL. E.g. for Docker Machine based setup <code class="literal"><a class="link" href="http://192.168.99.100:8080/blue" target="_top">http://192.168.99.100:8080/blue</a></code>.</p><p>
|
||||
</p><div class="figure"><a name="d0e3135" href="#d0e3135"></a><p class="title"><b>Figure 8.9. Open Blue Ocean UI and click on <code class="literal">github-webhook-declarative-pipeline</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_1.png" alt="blue 1"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3148" href="#d0e3148"></a><p class="title"><b>Figure 8.10. Your first run will look like this. Click <code class="literal">Run</code> button</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_2.png" alt="blue 2"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3162" href="#d0e3162"></a><p class="title"><b>Figure 8.11. Enter parameters required for the build and click <code class="literal">run</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_3.png" alt="blue 3"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3175" href="#d0e3175"></a><p class="title"><b>Figure 8.12. A list of pipelines will be shown. Click your first run.</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_4.png" alt="blue 4"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3186" href="#d0e3186"></a><p class="title"><b>Figure 8.13. State if you want to go to production or not and click <code class="literal">Proceed</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_5.png" alt="blue 5"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3199" href="#d0e3199"></a><p class="title"><b>Figure 8.14. The build is in progress…​</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_6.png" alt="blue 6"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3210" href="#d0e3210"></a><p class="title"><b>Figure 8.15. The pipeline is done!</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_7.png" alt="blue 7"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3099" href="#d0e3099"></a><p class="title"><b>Figure 8.9. Open Blue Ocean UI and click on <code class="literal">github-webhook-declarative-pipeline</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_1.png" alt="blue 1"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3112" href="#d0e3112"></a><p class="title"><b>Figure 8.10. Your first run will look like this. Click <code class="literal">Run</code> button</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_2.png" alt="blue 2"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3126" href="#d0e3126"></a><p class="title"><b>Figure 8.11. Enter parameters required for the build and click <code class="literal">run</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_3.png" alt="blue 3"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3139" href="#d0e3139"></a><p class="title"><b>Figure 8.12. A list of pipelines will be shown. Click your first run.</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_4.png" alt="blue 4"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3150" href="#d0e3150"></a><p class="title"><b>Figure 8.13. State if you want to go to production or not and click <code class="literal">Proceed</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_5.png" alt="blue 5"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3163" href="#d0e3163"></a><p class="title"><b>Figure 8.14. The build is in progress…​</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_6.png" alt="blue 6"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3174" href="#d0e3174"></a><p class="title"><b>Figure 8.15. The pipeline is done!</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_7.png" alt="blue 7"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.png"></td><th align="left">Important</th></tr><tr><td align="left" valign="top"><p>There is no possibility of restarting pipeline from specific stage, after failure. Please
|
||||
check out this <a class="link" href="https://issues.jenkins-ci.org/browse/JENKINS-33846" target="_top">issue</a> for more information</p></td></tr></table></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="images/warning.png"></td><th align="left">Warning</th></tr><tr><td align="left" valign="top"><p>Currently there is no way to introduce manual steps in a performant way. Jenkins is
|
||||
blocking an executor when manual step is required. That means that you’ll run out of executors
|
||||
|
||||
@@ -24,35 +24,35 @@ has all the properties options, but you can delete most of it. If you
|
||||
set the properties as global env variables you have to remove them from the
|
||||
seed.</p><p>Anyways, to run the demo just provide in the <code class="literal">REPOS</code> var the comma separated
|
||||
list of URLs of the 2 aforementioned forks of <code class="literal">github-webhook</code> and `github-analytics'.</p><p>
|
||||
</p><div class="figure"><a name="d0e3782" href="#d0e3782"></a><p class="title"><b>Figure 9.1. Click the 'jenkins-pipeline-seed-cf' job for Cloud Foundry and <code class="literal">jenkins-pipeline-seed-k8s</code> for Kubernetes</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_click.png" alt="seed click"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3796" href="#d0e3796"></a><p class="title"><b>Figure 9.2. Click the 'Build with parameters'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_run.png" alt="seed run"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3807" href="#d0e3807"></a><p class="title"><b>Figure 9.3. The <code class="literal">REPOS</code> parameter should already contain your forked repos (you’ll have more properties than the ones in the screenshot)</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed.png" alt="seed"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3821" href="#d0e3821"></a><p class="title"><b>Figure 9.4. This is how the results of seed should look like</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_built.png" alt="seed built"></div></div></div><br class="figure-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jenkins-pipeline-k8s" href="#jenkins-pipeline-k8s"></a>9.1.4 Run the <code class="literal">github-webhook</code> pipeline</h3></div></div></div><p>We already create the seed job for you but you’ll have to run it. When you do
|
||||
</p><div class="figure"><a name="d0e3746" href="#d0e3746"></a><p class="title"><b>Figure 9.1. Click the 'jenkins-pipeline-seed-cf' job for Cloud Foundry and <code class="literal">jenkins-pipeline-seed-k8s</code> for Kubernetes</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_click.png" alt="seed click"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3760" href="#d0e3760"></a><p class="title"><b>Figure 9.2. Click the 'Build with parameters'</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_run.png" alt="seed run"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3771" href="#d0e3771"></a><p class="title"><b>Figure 9.3. The <code class="literal">REPOS</code> parameter should already contain your forked repos (you’ll have more properties than the ones in the screenshot)</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed.png" alt="seed"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3785" href="#d0e3785"></a><p class="title"><b>Figure 9.4. This is how the results of seed should look like</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_built.png" alt="seed built"></div></div></div><br class="figure-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jenkins-pipeline-k8s" href="#jenkins-pipeline-k8s"></a>9.1.4 Run the <code class="literal">github-webhook</code> pipeline</h3></div></div></div><p>We already create the seed job for you but you’ll have to run it. When you do
|
||||
run it you have to provide some properties. By default we create a seed that
|
||||
has all the properties options, but you can delete most of it. If you
|
||||
set the properties as global env variables you have to remove them from the
|
||||
seed.</p><p>Anyways, to run the demo just provide in the <code class="literal">REPOS</code> var the comma separated
|
||||
list of URLs of the 2 aforementioned forks of <code class="literal">github-webhook</code> and <code class="literal">github-analytics</code>.</p><p>
|
||||
</p><div class="figure"><a name="d0e3851" href="#d0e3851"></a><p class="title"><b>Figure 9.5. Click the 'github-webhook' view</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_views.png" alt="seed views"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3862" href="#d0e3862"></a><p class="title"><b>Figure 9.6. Run the pipeline</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/pipeline_run.png" alt="pipeline run"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3815" href="#d0e3815"></a><p class="title"><b>Figure 9.5. Click the 'github-webhook' view</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/seed_views.png" alt="seed views"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3826" href="#d0e3826"></a><p class="title"><b>Figure 9.6. Run the pipeline</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/pipeline_run.png" alt="pipeline run"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.png"></td><th align="left">Important</th></tr><tr><td align="left" valign="top"><p>If your build fails on the <span class="strong"><strong>deploy previous version to stage</strong></span> due to missing jar,
|
||||
that means that you’ve forgotten to clear the tags in your repo. Typically that’s due to the fact that
|
||||
you’ve removed the Artifactory volume with deployed JAR whereas a tag in the repo is still pointing there.
|
||||
<a class="link" href="">Check out this section on how to remove the tag.</a></p></td></tr></table></div><p>
|
||||
</p><div class="figure"><a name="d0e3883" href="#d0e3883"></a><p class="title"><b>Figure 9.7. Click the manual step to go to stage (remember about killing the apps on test env). To do this click the <span class="strong">ARROW</span> next to the job name</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/pipeline_manual.png" alt="pipeline manual"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3847" href="#d0e3847"></a><p class="title"><b>Figure 9.7. Click the manual step to go to stage (remember about killing the apps on test env). To do this click the <span class="strong">ARROW</span> next to the job name</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/pipeline_manual.png" alt="pipeline manual"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.png"></td><th align="left">Important</th></tr><tr><td align="left" valign="top"><p>Most likely you will run out of memory so when reaching the stage
|
||||
environment it’s good to kill all apps on test. <a class="link" href="">Check out the FAQ section for more details</a>!</p></td></tr></table></div><p>
|
||||
</p><div class="figure"><a name="d0e3905" href="#d0e3905"></a><p class="title"><b>Figure 9.8. The full pipeline should look like this</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/pipeline_finished.png" alt="pipeline finished"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3869" href="#d0e3869"></a><p class="title"><b>Figure 9.8. The full pipeline should look like this</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/pipeline_finished.png" alt="pipeline finished"></div></div></div><br class="figure-break"><p>
|
||||
</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="declarative-pipeline-k8s" href="#declarative-pipeline-k8s"></a>9.2 Declarative pipeline & Blue Ocean</h2></div></div></div><p>You can also use the <a class="link" href="https://jenkins.io/doc/book/pipeline/syntax/" target="_top">declarative pipeline</a> approach with the
|
||||
<a class="link" href="https://jenkins.io/projects/blueocean/" target="_top">Blue Ocean UI</a>. Here is a step by step guide to run a pipeline via
|
||||
this approach.</p><p>The Blue Ocean UI is available under the <code class="literal">blue/</code> URL. E.g. for Docker Machine based setup <code class="literal"><a class="link" href="http://192.168.99.100:8080/blue" target="_top">http://192.168.99.100:8080/blue</a></code>.</p><p>
|
||||
</p><div class="figure"><a name="d0e3938" href="#d0e3938"></a><p class="title"><b>Figure 9.9. Open Blue Ocean UI and click on <code class="literal">github-webhook-declarative-pipeline</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_1.png" alt="blue 1"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3951" href="#d0e3951"></a><p class="title"><b>Figure 9.10. Your first run will look like this. Click <code class="literal">Run</code> button</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_2.png" alt="blue 2"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3965" href="#d0e3965"></a><p class="title"><b>Figure 9.11. Enter parameters required for the build and click <code class="literal">run</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_3.png" alt="blue 3"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3978" href="#d0e3978"></a><p class="title"><b>Figure 9.12. A list of pipelines will be shown. Click your first run.</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_4.png" alt="blue 4"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3989" href="#d0e3989"></a><p class="title"><b>Figure 9.13. State if you want to go to production or not and click <code class="literal">Proceed</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_5.png" alt="blue 5"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e4002" href="#d0e4002"></a><p class="title"><b>Figure 9.14. The build is in progress…​</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_6.png" alt="blue 6"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e4013" href="#d0e4013"></a><p class="title"><b>Figure 9.15. The pipeline is done!</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_7.png" alt="blue 7"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3902" href="#d0e3902"></a><p class="title"><b>Figure 9.9. Open Blue Ocean UI and click on <code class="literal">github-webhook-declarative-pipeline</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_1.png" alt="blue 1"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3915" href="#d0e3915"></a><p class="title"><b>Figure 9.10. Your first run will look like this. Click <code class="literal">Run</code> button</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_2.png" alt="blue 2"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3929" href="#d0e3929"></a><p class="title"><b>Figure 9.11. Enter parameters required for the build and click <code class="literal">run</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_3.png" alt="blue 3"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3942" href="#d0e3942"></a><p class="title"><b>Figure 9.12. A list of pipelines will be shown. Click your first run.</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_4.png" alt="blue 4"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3953" href="#d0e3953"></a><p class="title"><b>Figure 9.13. State if you want to go to production or not and click <code class="literal">Proceed</code></b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_5.png" alt="blue 5"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3966" href="#d0e3966"></a><p class="title"><b>Figure 9.14. The build is in progress…​</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_6.png" alt="blue 6"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="figure"><a name="d0e3977" href="#d0e3977"></a><p class="title"><b>Figure 9.15. The pipeline is done!</b></p><div class="figure-contents"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-pipelines/master/docs-sources/src/main/asciidoc/images/jenkins/blue_7.png" alt="blue 7"></div></div></div><br class="figure-break"><p>
|
||||
</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.png"></td><th align="left">Important</th></tr><tr><td align="left" valign="top"><p>There is no possibility of restarting pipeline from specific stage, after failure. Please
|
||||
check out this <a class="link" href="https://issues.jenkins-ci.org/browse/JENKINS-33846" target="_top">issue</a> for more information</p></td></tr></table></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="images/warning.png"></td><th align="left">Warning</th></tr><tr><td align="left" valign="top"><p>Currently there is no way to introduce manual steps in a performant way. Jenkins is
|
||||
blocking an executor when manual step is required. That means that you’ll run out of executors
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user