tag:blogger.com,1999:blog-91786336219227436362024-03-28T00:53:22.054+01:00Pills from the WebTutorials and pills from the world of technology, and DevOps!PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.comBlogger52125tag:blogger.com,1999:blog-9178633621922743636.post-45772491807067250282021-10-27T17:11:00.004+02:002021-10-27T17:11:48.017+02:00Trigger Jenkins on a Merge Request from Gitlab<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOEWlZP1ej4cVn4yJZspvYHFjC51XnLVDAKT9VDgL6a7OJom-w3JvTwATYcEPP4DOE4vHKk2V46mWk0x8RF4IFgJmLRd5ny5CBTNKSGk80ISmNHqmzYTipFrpBdgdtQaZo6vF9PJOkFMtp/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="844" data-original-width="1500" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOEWlZP1ej4cVn4yJZspvYHFjC51XnLVDAKT9VDgL6a7OJom-w3JvTwATYcEPP4DOE4vHKk2V46mWk0x8RF4IFgJmLRd5ny5CBTNKSGk80ISmNHqmzYTipFrpBdgdtQaZo6vF9PJOkFMtp/w320-h181/image.png" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHgqbTU4JpibRL1GpfkZCanO5es_TjVQtt2c-eeRXhpk1bvhODzAsm-Xt9InhLUokhyphenhyphenX1ZhjRdW-DypLPRNWFkmahx-mycRUwn0-RKm_GTwjXHAyn0RW0I_ak_tXGuJkMT9zi7BcOHsLMJ/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="700" data-original-width="700" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHgqbTU4JpibRL1GpfkZCanO5es_TjVQtt2c-eeRXhpk1bvhODzAsm-Xt9InhLUokhyphenhyphenX1ZhjRdW-DypLPRNWFkmahx-mycRUwn0-RKm_GTwjXHAyn0RW0I_ak_tXGuJkMT9zi7BcOHsLMJ/w200-h200/image.png" width="200" /></a><br /><br /></div>Imagine you're using Gitlab to host your source code and want to trigger a Jenkins pipeline/job when you open a merge request on specific branches. In this guide we'll explain all that you need to do that.<div><br /></div><div>Before starting, we recommend you to read our <a href="https://pillsfromtheweb.blogspot.com/2020/07/automatically-trigger-jenkins-pipeline.html" target="_blank">guide on the basic connection between Gitlab and Jenkins</a>, explaining all the prerequisites you need to setup to go on (user credentials and permissions).<br /><p></p><p><br /></p><p>Now, let's pretend we want to trigger the pipeline on <b>a MR from <span style="font-family: courier;">feature/*</span> to <span style="font-family: courier;">develop</span></b>.</p><p>1) Install the <i>"Generic Webhook trigger"</i> <a href="https://plugins.jenkins.io/generic-webhook-trigger/" target="_blank">plugin</a> on Jenkins</p><p>2) In your pipeline configuration section, enable the plugin:</p><p></p><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWe7f2QbZESmCro5qzMlW0ghsYk_7a7mD1AbJtE0gBJgWhacXdaUR6hEOPL8kb9EpX8F6ACVCXdpBtVWzGOP9T-LUEfA_MHe5EoEjbJRe_ippuOOJqWDzgTghrjE10ns0Gbsznk7sG0AKU/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="48" data-original-width="292" height="53" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWe7f2QbZESmCro5qzMlW0ghsYk_7a7mD1AbJtE0gBJgWhacXdaUR6hEOPL8kb9EpX8F6ACVCXdpBtVWzGOP9T-LUEfA_MHe5EoEjbJRe_ippuOOJqWDzgTghrjE10ns0Gbsznk7sG0AKU/" width="320" /></a></div><br />3) In Post Content Parameters section, you have to add these variables:<p></p><table data-number-column="false" style="background-color: white; border-collapse: collapse; border: 1px solid rgb(193, 199, 208); color: #172b4d; font-family: -apple-system, system-ui, "Segoe UI", Roboto, "Noto Sans", Ubuntu, "Droid Sans", "Helvetica Neue", sans-serif; font-size: 16px; height: 1px; margin: 24px 0px 0px; table-layout: fixed; white-space: pre-wrap; width: 760.234px;"><colgroup style="box-sizing: border-box;"><col style="box-sizing: border-box; width: 381px;"></col><col style="box-sizing: border-box; width: 378px;"></col></colgroup><tbody style="border-bottom: none; box-sizing: border-box;"><tr style="box-sizing: border-box; height: 46.4453px;"><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column" colorname="" colspan="1" data-colwidth="427" rowspan="1" style="background-color: #f4f5f7; border-color: rgb(193, 199, 208); border-image: initial; border-style: solid; border-width: 1px 0px 0px 1px; box-sizing: border-box; font-weight: normal; min-width: 48px; padding: 0px; position: relative; text-align: left; vertical-align: top;"><div aria-disabled="false" class="ak-renderer-tableHeader-sortable-column__button" role="button" style="border-color: transparent; border-style: solid; border-width: 1.5px; box-sizing: border-box; cursor: pointer; height: 45.1953px; margin: 0px; padding: 8px; width: 379.746px;" tabindex="0"><p data-renderer-start-pos="2362" style="box-sizing: border-box; font-size: 1em; letter-spacing: -0.005em; line-height: 1.714; margin: 0px; padding: 0px;"><strong data-renderer-mark="true" style="box-sizing: border-box;">Variable</strong></p><figure aria-hidden="true" class="ak-renderer-tableHeader-sorting-icon ak-renderer-tableHeader-sorting-icon__no-order" style="box-sizing: border-box; margin: 0px; opacity: 0; transition: opacity 0.2s ease-in-out 0s;"><div role="presentation" style="box-sizing: border-box; margin: 0px; padding: 0px;"><figure class="sc-hSdWYo dHubXt" style="-webkit-box-align: center; -webkit-box-pack: center; align-items: center; border-radius: 4px; border: 2px solid rgb(255, 255, 255); box-sizing: border-box; display: flex; height: 28px; justify-content: center; margin: 6px; position: absolute; right: 0px; top: 0px; width: 28px;"><div class="sorting-icon-svg__no_order table-sorting-icon-inactive sc-eHgmQL ikBxmZ" style="background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M-8-6h24v24H-8z%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M3%208.509V1c0-.552.449-1%201-1%20.552%200%201%20.448%201%201V8.51l1.217-1.206a1.05%201.05%200%20011.477%200%201.03%201.03%200%2001.004%201.463l-.003.002-2.956%202.93a1.053%201.053%200%2001-1.478%200L.305%208.767a1.03%201.03%200%2001.001-1.464%201.05%201.05%200%20011.477%200L3%208.508z%22%20fill%3D%22%2342526E%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fsvg%3E"); box-sizing: border-box; height: 12px; margin: 0px; opacity: 0.5; padding: 0px; transform-origin: 50% 50%; transition: transform 0.3s cubic-bezier(0.15, 1, 0.3, 1) 0s; width: 8px;"></div></figure></div></figure></div></th><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column" colorname="" colspan="1" data-colwidth="423" rowspan="1" style="background-color: #f4f5f7; border-color: rgb(193, 199, 208); border-image: initial; border-style: solid; border-width: 1px 0px 0px 1px; box-sizing: border-box; font-weight: normal; min-width: 48px; padding: 0px; position: relative; text-align: left; vertical-align: top;"><div aria-disabled="false" class="ak-renderer-tableHeader-sortable-column__button" role="button" style="border-color: transparent; border-style: solid; border-width: 1.5px; box-sizing: border-box; cursor: pointer; height: 45.1953px; margin: 0px; padding: 8px; width: 376.738px;" tabindex="0"><p data-renderer-start-pos="2374" style="box-sizing: border-box; font-size: 1em; letter-spacing: -0.005em; line-height: 1.714; margin: 0px; padding: 0px;"><strong data-renderer-mark="true" style="box-sizing: border-box;">Expression</strong></p><figure aria-hidden="true" class="ak-renderer-tableHeader-sorting-icon ak-renderer-tableHeader-sorting-icon__no-order" style="box-sizing: border-box; margin: 0px; opacity: 0; transition: opacity 0.2s ease-in-out 0s;"><div role="presentation" style="box-sizing: border-box; margin: 0px; padding: 0px;"><figure class="sc-hSdWYo dHubXt" style="-webkit-box-align: center; -webkit-box-pack: center; align-items: center; border-radius: 4px; border: 2px solid rgb(255, 255, 255); box-sizing: border-box; display: flex; height: 28px; justify-content: center; margin: 6px; position: absolute; right: 0px; top: 0px; width: 28px;"><div class="sorting-icon-svg__no_order table-sorting-icon-inactive sc-eHgmQL ikBxmZ" style="background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M-8-6h24v24H-8z%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M3%208.509V1c0-.552.449-1%201-1%20.552%200%201%20.448%201%201V8.51l1.217-1.206a1.05%201.05%200%20011.477%200%201.03%201.03%200%2001.004%201.463l-.003.002-2.956%202.93a1.053%201.053%200%2001-1.478%200L.305%208.767a1.03%201.03%200%2001.001-1.464%201.05%201.05%200%20011.477%200L3%208.508z%22%20fill%3D%22%2342526E%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fsvg%3E"); box-sizing: border-box; height: 12px; margin: 0px; opacity: 0.5; padding: 0px; transform-origin: 50% 50%; transition: transform 0.3s cubic-bezier(0.15, 1, 0.3, 1) 0s; width: 8px;"></div></figure></div></figure></div></th></tr><tr style="box-sizing: border-box;"><td colorname="" colspan="1" data-colwidth="427" rowspan="1" style="border-color: rgb(193, 199, 208); border-image: initial; border-style: solid; border-width: 1px 0px 0px 1px; box-sizing: border-box; min-width: 48px; padding: 8px; vertical-align: top;"><p data-renderer-start-pos="2390" style="box-sizing: border-box; font-size: 1em; letter-spacing: -0.005em; line-height: 1.714; margin: 0px; padding: 0px;">branch</p></td><td colorname="" colspan="1" data-colwidth="423" rowspan="1" style="border-color: rgb(193, 199, 208); border-image: initial; border-style: solid; border-width: 1px 0px 0px 1px; box-sizing: border-box; min-width: 48px; padding: 8px; vertical-align: top;"><p data-renderer-start-pos="2400" style="box-sizing: border-box; font-size: 1em; letter-spacing: -0.005em; line-height: 1.714; margin: 0px; padding: 0px;">$.object_attributes.source_branch</p></td></tr><tr style="box-sizing: border-box;"><td colorname="" colspan="1" data-colwidth="427" rowspan="1" style="border-color: rgb(193, 199, 208); border-image: initial; border-style: solid; border-width: 1px 0px 0px 1px; box-sizing: border-box; min-width: 48px; padding: 8px; vertical-align: top;"><p data-renderer-start-pos="2439" style="box-sizing: border-box; font-size: 1em; letter-spacing: -0.005em; line-height: 1.714; margin: 0px; padding: 0px;">merge_status</p></td><td colorname="" colspan="1" data-colwidth="423" rowspan="1" style="border-color: rgb(193, 199, 208); border-image: initial; border-style: solid; border-width: 1px 0px 0px 1px; box-sizing: border-box; min-width: 48px; padding: 8px; vertical-align: top;"><p data-renderer-start-pos="2455" style="box-sizing: border-box; font-size: 1em; letter-spacing: -0.005em; line-height: 1.714; margin: 0px; padding: 0px;">$.object_attributes.state</p></td></tr><tr style="box-sizing: border-box;"><td colorname="" colspan="1" data-colwidth="427" rowspan="1" style="border-color: rgb(193, 199, 208); border-image: initial; border-style: solid; border-width: 1px 0px 0px 1px; box-sizing: border-box; min-width: 48px; padding: 8px; vertical-align: top;"><p data-renderer-start-pos="2486" style="box-sizing: border-box; font-size: 1em; letter-spacing: -0.005em; line-height: 1.714; margin: 0px; padding: 0px;">body</p></td><td colorname="" colspan="1" data-colwidth="423" rowspan="1" style="border-color: rgb(193, 199, 208); border-image: initial; border-style: solid; border-width: 1px 0px 0px 1px; box-sizing: border-box; min-width: 48px; padding: 8px; vertical-align: top;"><p data-renderer-start-pos="2494" style="box-sizing: border-box; font-size: 1em; letter-spacing: -0.005em; line-height: 1.714; margin: 0px; padding: 0px;">$</p></td></tr></tbody></table><p></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: left;">For example, for the <i>branch</i> variable, you should have something like this:</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAVGt8iDWlwk37r1z7n2GTpPJtu-Gr8LUjlWTlkEFTbd4n2k-4jojhP5MvhD0_1lBEq7Z2icENFmiC8sQXj6tBOh-aOQezoRJTkjWkRCCTaTAq9CRd-gO7flVxbBCmiHdgMaaZwnQq3s0t/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="710" data-original-width="2068" height="220" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAVGt8iDWlwk37r1z7n2GTpPJtu-Gr8LUjlWTlkEFTbd4n2k-4jojhP5MvhD0_1lBEq7Z2icENFmiC8sQXj6tBOh-aOQezoRJTkjWkRCCTaTAq9CRd-gO7flVxbBCmiHdgMaaZwnQq3s0t/w640-h220/Schermata+2021-10-27+alle+12.42.44.png" width="640" /></a></div><br /><div style="text-align: left;">4) In <i>Token</i> section, insert a token of your choice.</div></div><br />5) In <i>Optional filter </i>section, insert the following:<p></p><p></p><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuDtHAzYcHdC5o9LPRkJmpmtQh_ZfC65Q41kP2POvhf4WxihggCi3mELZC3AP-lw0vMANpsZPjyvcXKHf8A5QZ6fNRfk26PuCoWjfl0299wN3OTERVmo9bTuH29q9juYxfrEs1GNp31Pf1/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="368" data-original-width="1166" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuDtHAzYcHdC5o9LPRkJmpmtQh_ZfC65Q41kP2POvhf4WxihggCi3mELZC3AP-lw0vMANpsZPjyvcXKHf8A5QZ6fNRfk26PuCoWjfl0299wN3OTERVmo9bTuH29q9juYxfrEs1GNp31Pf1/w640-h202/Schermata+2021-10-27+alle+12.46.32.png" width="640" /></a></div><br /><br /><p></p><p>6) Go to Gitlab, inside your <i>Repository -> Settings -> Integrations</i></p><p>In the URL section insert: <span face="-apple-system, system-ui, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"" style="background-color: white; color: #2e2e2e; font-family: courier; font-size: 14px; font-weight: 600;"><i>https://<jenkins_url>/generic-webhook-trigger/invoke?token=<your_token></i></span></p><p><span face="-apple-system, system-ui, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"" style="background-color: white; color: #2e2e2e; font-family: inherit;">and below, enable the flag:</span><span face="-apple-system, system-ui, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"" style="background-color: white; color: #2e2e2e; font-size: 14px; font-weight: 600;"> <i>"</i></span><strong style="box-sizing: border-box; color: #212529; font-family: -apple-system, system-ui, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 14px;"><i>Merge request events"</i></strong></p><p><br /></p><p>Done!</p><p>You can test if your job/pipeline starts clicking on <i>Test</i> button, and choosing <i>Merge Request events</i>.</p><p><br /></p><p><br /></p></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-45447571447252443022021-10-25T23:00:00.002+02:002021-10-25T23:13:12.610+02:00Get last commit changed files in Jenkins Pipeline<div style="text-align: left;"><span style="font-size: xx-small;"><div class="separator" style="clear: both; text-align: center;"><br /></div></span></div><div style="text-align: left;"><span style="font-family: inherit;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMfET86EjnCXCyU_-PAiGjmbsS2pG80cZjgui3HejRl_O8wU3d4-6Am07MMb4TSFQQBIx09maJQtYu8tDSDRxxcSCFzSAkXRESBQj7Tgwui4lXYpoPD5c0JRm2yaHvxEKil651zDivBp-j/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="824" data-original-width="2560" height="103" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMfET86EjnCXCyU_-PAiGjmbsS2pG80cZjgui3HejRl_O8wU3d4-6Am07MMb4TSFQQBIx09maJQtYu8tDSDRxxcSCFzSAkXRESBQj7Tgwui4lXYpoPD5c0JRm2yaHvxEKil651zDivBp-j/" width="320" /></a></div><br /><br /></span></div><div style="text-align: left;"><span style="font-family: inherit;">To get all the modified files when starting a Jenkins Pipeline, you've just have to do 2 steps.</span></div><div style="text-align: left;"><span style="font-family: inherit;"><br /></span></div><div style="text-align: left;"><span style="font-family: inherit;"><br /></span></div><div style="text-align: left;"><span style="font-family: inherit;">1. Add to the end of your scripted pipeline the following function:</span></div><div style="text-align: left;"><span style="font-size: xx-small;"><br /></span></div><div style="text-align: left;"><span> <span style="color: olive; font-family: Menlo;">@</span><span style="background-color: white; font-family: Menlo;">NonCPS<br /></span><span style="background-color: white; color: #000043; font-family: Menlo; font-weight: bold;">def </span><span style="background-color: white; font-family: Menlo;">getChangedFilesList() {</span></span></div><pre style="background-color: white;"><span><span style="font-family: Menlo;"> changedFiles = []<br /><br /> </span><span style="color: #000043; font-family: Menlo; font-weight: bold;">for </span><span style="font-family: Menlo;">(changeLogSet </span><span style="color: #000043; font-family: Menlo; font-weight: bold;">in </span><span style="font-family: Menlo;">currentBuild.changeSets) {<br /><br /> </span><span style="color: #000043; font-family: Menlo; font-weight: bold;">for </span><span style="font-family: Menlo;">(entry </span><span style="color: #000043; font-family: Menlo; font-weight: bold;">in </span><span style="font-family: Menlo;">changeLogSet.getItems()) { </span><span style="font-style: italic;"><span style="color: #999999; font-family: courier;">//for each commit in detected changes</span><span style="color: #b4b4b4; font-family: Menlo;"><br /></span></span><span style="color: #b4b4b4; font-family: Menlo; font-style: italic;"><br /></span><span style="color: #b4b4b4; font-family: Menlo; font-style: italic;"> </span><span style="color: #000043; font-family: Menlo; font-weight: bold;">for </span><span style="font-family: Menlo;">(file </span><span style="color: #000043; font-family: Menlo; font-weight: bold;">in </span><span style="font-family: Menlo;">entry.getAffectedFiles()) {<br /><br /> </span><span style="color: #000043; font-family: Menlo; font-weight: bold;">if </span><span style="font-family: Menlo;">(!changedFiles.contains(file.getPath())) { </span></span><span style="color: #999999; font-family: courier;"><i>// do not add duplicates</i></span><span style="font-family: Menlo;"><br /></span><p style="font-family: Menlo; text-align: left;"><span><span style="color: #b4b4b4; font-style: italic;"> </span>changedFiles.add(file.getPath()) <span style="color: #b4b4b4; font-style: italic;"><br /></span></span></p><span style="font-family: Menlo;"><span style="color: #b4b4b4; font-style: italic;"> </span>}<br /> }<br /> }<br /> }<br /><br /> <span style="color: #000043; font-weight: bold;">return </span>changedFiles<br />}</span></pre><pre style="background-color: white; font-family: Menlo;"><span style="font-size: xx-small;"><br /></span></pre><pre style="background-color: white; font-family: Menlo;"><span style="font-size: xx-small;"><br /></span></pre>2. Call the function in a stage, after cloning the repo of your source code, to get the list of changed files (with their relative paths):<br /><pre><span style="font-family: inherit;"><br /></span><span><span style="background-color: white; font-family: Menlo;">stage(</span><span style="background-color: white; color: green; font-family: Menlo; font-weight: bold;">'Check environment'</span><span style="background-color: white; font-family: Menlo;">) </span><span style="background-color: white; font-family: Menlo; font-weight: bold;">{</span></span></pre><pre style="background-color: white;"><pre style="font-family: Menlo;"><span><span style="font-weight: bold;"> </span>steps <span style="font-weight: bold;">{</span></span></pre><pre style="font-family: Menlo;"><span><span style="font-weight: bold;"> </span>script <span style="font-weight: bold;">{</span></span></pre><pre style="font-family: Menlo;"><span><span style="font-weight: bold;"> </span>modified_files = getChangedFilesList()</span></pre><pre style="font-family: Menlo;"><span> <span style="color: #000043; font-weight: bold;">if </span>(<span style="color: green; font-weight: bold;">"myfile.txt" </span><span style="color: #000043; font-weight: bold;">in </span>modified_files) {</span></pre><pre style="font-family: Menlo;"><span><span><span> </span><span> </span><span> </span><span> </span>echo "The file has been changed"</span></span></pre><pre style="font-family: Menlo;"><span> } <span style="color: #000043; font-weight: bold;">else </span>{</span></pre><pre style="font-family: Menlo;"><span> echo "The file has not been changed"<br /><span style="color: #000043; font-weight: bold;"> </span>}<br /> <span style="font-weight: bold;">}<br /></span><span style="font-weight: bold;"> }<br /></span><span style="font-weight: bold;">}</span></span></pre><pre style="font-family: Menlo;"><span style="font-size: x-small;"><span style="font-weight: bold;"><br /></span></span></pre><pre><span style="font-family: helvetica;">That's all!</span></pre><pre><span style="font-family: helvetica;"><br /></span></pre></pre>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com1tag:blogger.com,1999:blog-9178633621922743636.post-91596714509965091512021-05-20T18:26:00.004+02:002021-05-20T18:30:51.512+02:00tfenv: manage different Terraform versions on the same machine<p></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV6kcERnoOsiHqBl6_8nzNn9APrMeYvwh_yLOmCP2Dt7ZtgxHd72CiOzKVrXl_Lic8K2w6MMCB1hPytPkhyFCDQ3lP40Y1TqcrAkEfbA4fZHS1UnGVwYIC1CiXpcoU-2a88x9IKIHu63zl/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="248" data-original-width="820" height="194" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV6kcERnoOsiHqBl6_8nzNn9APrMeYvwh_yLOmCP2Dt7ZtgxHd72CiOzKVrXl_Lic8K2w6MMCB1hPytPkhyFCDQ3lP40Y1TqcrAkEfbA4fZHS1UnGVwYIC1CiXpcoU-2a88x9IKIHu63zl/w640-h194/image.png" width="640" /></a></div><br /></div></div></div></div><p></p><p>Lately I ran into a problem on my machine. </p><p>And anyone using <b>Terraform</b> could run into the same problem.</p><p>How can I manage multiple versions of Terraform at the same time on the same machine?</p><p><br /></p><p>I have the solution, it's called <b>tfenv</b>!</p><p><br /></p><p><span style="font-size: large;"><b>tfenv</b></span></p><p><b>tfenv</b> is a <b>Terraform version manager</b>, whose documentation can be found here:</p><p><a href="https://github.com/tfutils/tfenv" target="_blank">https://github.com/tfutils/tfenv</a><br /></p><p><br /></p><p><b><span style="font-size: large;">Installations steps:</span></b></p><p><span style="font-family: courier;"><b>$ brew install tfenv</b></span></p><p><span style="font-family: courier;"><b>$ brew link tfenv</b></span> (optional)</p><p><br /></p><p><span style="font-size: large;"><b>Usage:</b></span></p><p>- Install a specific version of Terraform (e.g v0.12.29)</p><p><span style="font-family: courier;"><b>$ tfenv install 0.12.29</b></span></p><p>- Use a specific version of Terraform </p><p><span style="font-family: courier;"><b>$ tfenv use 0.12.29</b></span></p><p>- Uninstall a specific version</p><p><span style="font-family: courier;"><b>$ tfenv uninstall 0.12.29</b></span></p><p>- List installed versions of tf:</p><p><span style="font-family: courier;"><b>$ tfenv list</b></span></p><p>- List remote available versions:</p><p><span style="font-family: courier;"><b>$ <span style="color: #24292e;">tfenv list-remote</span></b></span></p><p><br /></p><div><br /></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-68060351805334912472021-04-27T12:24:00.004+02:002021-04-27T12:25:07.075+02:00redis-cli practical examples<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ5aS-EWsPC_A11s9xf09fE7z5DlnotwE40uHWbV2QjswK4XEIrzIdSvSznKACTbs7_Q-vtoL6bcXFcEcOdF-xi8v2gmG4DvL8alPaDmy0uvxmVXP18hU2yzx6szVqto5CZBLkotR8PMSV/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1365" data-original-width="2048" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ5aS-EWsPC_A11s9xf09fE7z5DlnotwE40uHWbV2QjswK4XEIrzIdSvSznKACTbs7_Q-vtoL6bcXFcEcOdF-xi8v2gmG4DvL8alPaDmy0uvxmVXP18hU2yzx6szVqto5CZBLkotR8PMSV/" width="320" /></a></div><p></p><p><span style="font-family: inherit;">In this post we'll review the most useful and used commands when working with redis-cli, with practical examples.</span></p><p><span style="font-family: inherit;"><br /></span></p><h3 style="text-align: left;"><span style="font-family: inherit;">Without authentication/TLS</span></h3><p><span style="font-family: inherit;">Let's assume that our Redis instance has this properties:</span></p><p><span style="font-family: courier;">host : 10.20.30.40</span></p><p><span style="font-family: courier;">port : 1234</span></p><p>Connect to Redis Instance:</p><p><span style="background-color: #f3f3f3; font-family: courier;">redis-cli -p 1234 -h 10.20.30.40</span></p><p><br /></p><p><span style="font-family: inherit;">Once connected you can:</span></p><p><span style="font-family: inherit;">Get all keys:</span></p><p><span style="background-color: #f3f3f3; font-family: courier;">redis> keys *</span></p><p><span style="font-family: inherit;"><span style="background-color: white; color: #202124; font-size: 16px;">delete all keys</span><span style="background-color: white; color: #202124; font-size: 16px;"> from </span><span style="background-color: white; color: #202124; font-size: 16px;">all Redis</span><span style="background-color: white; color: #202124; font-size: 16px;"> databases:</span></span></p><p><span style="background-color: #f3f3f3; font-family: courier;">redis> <span style="color: #202124;">FLUSHALL</span></span></p><p><span style="font-family: inherit;"><span style="background-color: white; color: #202124; font-size: 16px;">delete all keys</span><span style="background-color: white; color: #202124; font-size: 16px;"> of the current </span><span style="background-color: white; color: #202124; font-size: 16px;">Redis</span><span style="background-color: white; color: #202124; font-size: 16px;"> database only:</span></span></p><p><span style="background-color: #f3f3f3; font-family: courier;">redis> <span style="color: #202124;">FLUSHDB</span></span></p><p><span style="background-color: white; color: #202124; font-size: 16px;"><span style="font-family: inherit;">set a key with its value:</span></span></p><span style="background-color: #f3f3f3;"><span style="font-family: courier;">redis> SET mykey "hello"</span><br /></span><p><span style="font-family: inherit;">get mykey:</span></p><p><span style="background-color: #f3f3f3; font-family: courier;">redis> GET mykey</span></p><p>set a key with expiration (in seconds):</p><p><span style="background-color: #f3f3f3; font-family: courier;">redis> set secondkey "hey" EX 90</span></p><p><br /></p><h3 style="text-align: left;">With authentication/TLS:</h3><p>Let's assume that our Redis instance has this properties:</p><p><span style="font-family: courier;">host : 10.20.30.40</span></p><p><span style="font-family: courier;">port : 1234</span></p><p><span style="font-family: courier;">auth-string: abdcefgh</span></p><p><span style="font-family: courier;">ca-certificate: ca-cert.pem</span></p><p><span style="font-family: inherit;"><br /></span></p><p><span style="font-family: inherit;">Connect to Redis Instance using TLS:</span></p><p><span style="background-color: #f3f3f3; font-family: courier;">export REDISCLI_AUTH=abcdefgh</span></p><p><span style="background-color: #f3f3f3; font-family: courier;">redis-cli -p 1234 -h 10.20.30.40 --tls --cacert=ca-cert.pem</span></p><p><span style="background-color: #f3f3f3; font-family: courier;"><br /></span></p><p><span style="background-color: #f3f3f3; font-family: courier;"><br /></span></p><p><span style="background-color: #f3f3f3; font-family: courier;"><br /></span></p>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-65071993968140300532020-10-23T10:22:00.001+02:002020-10-23T10:22:06.574+02:00Start a pipeline from another in Jenkins<div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz8oi1GKSnkGb0PeJ-spPmrO299IUQ6n5BCc5QZY31ON8Kj_h5e0h_sCx3LjBeExGBRYw2-z5aTX-XVozWg-GtJeFLRBF4SQyz36cdq7QortPFR-FYmFx9xULhTzyiEk1og82nrjBQdb7h/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="398" data-original-width="796" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz8oi1GKSnkGb0PeJ-spPmrO299IUQ6n5BCc5QZY31ON8Kj_h5e0h_sCx3LjBeExGBRYw2-z5aTX-XVozWg-GtJeFLRBF4SQyz36cdq7QortPFR-FYmFx9xULhTzyiEk1og82nrjBQdb7h/" width="320" /></a></div></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div><span style="font-family: inherit;">Suppose you want to start automatically a Jenkins Pipeline from another.</span></div><div><span style="font-family: inherit;">Besides, suppose you want to pass some variables from the first to the second one.</span></div><div><span style="font-family: inherit;">How can you do it?</span></div><div><span style="font-family: inherit;"><br /></span></div><p style="text-align: left;"><span style="font-family: inherit;"><b>Example</b></span></p><div><span style="font-family: inherit;"><br /></span></div><div><span style="font-family: inherit;">You have <b><u>Pipeline 1</u></b> and <u style="font-weight: bold;">Pipeline 2</u>, and want to start <b><u>Pipeline 2</u></b> from <b><u>Pipeline 1</u></b></span></div><div><span style="font-family: courier;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO4vveqyVnpOrxYIAmLL44E8OqSdIfAo2fIejDEjv1yijrtdIMMPCtLpCZYK617P6wGmHoUvGDodDiHyHmoHowzah7GfI1Kn4QCE3yYdwXptrivP0wViNHZT3QyzRjcfTnaB3GWwZkm3Jm/s325/blog.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="71" data-original-width="325" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO4vveqyVnpOrxYIAmLL44E8OqSdIfAo2fIejDEjv1yijrtdIMMPCtLpCZYK617P6wGmHoUvGDodDiHyHmoHowzah7GfI1Kn4QCE3yYdwXptrivP0wViNHZT3QyzRjcfTnaB3GWwZkm3Jm/s16000/blog.png" /></a></div><br /><div><br /></div><p style="text-align: left;"><span style="font-family: inherit;"><u><b><br /></b></u></span></p><p style="text-align: left;"><span style="font-family: inherit;"><u><b><br /></b></u></span></p><p style="text-align: left;"><span style="font-family: inherit;"><u><b>Pipeline 1</b></u></span></p><div><span style="font-family: courier;">def params=[]</span></div><div><span style="font-family: courier;"><br /></span></div><div><span style="font-family: courier;">pipeline {</span></div><div><span style="font-family: courier;"><span> </span>agent any</span></div><div><span style="font-family: courier;"><br /></span></div><div><span style="font-family: courier;"><span> </span>stages {</span></div><div><span style="white-space: pre;"><span style="font-family: courier;"> </span></span></div><div><span style="font-family: courier;"><span> </span><span> </span>stage('Start pipeline2') {</span></div><div><span style="font-family: courier;"><br /></span></div><div><span style="font-family: courier;"><span> </span><span> <span> </span></span>script {</span></div><div><span style="font-family: courier;"> <span> </span></span></div><div><span style="font-family: courier;"><span> </span><span> </span><span> </span><span> </span>params.add(string(name: "field1", value: "value1")</span></div><div><span style="font-family: courier;"> <span> </span>params.add(string(name: "field2", value: "value2")</span></div><div><span style="font-family: courier;"><br /></span></div><div><span style="font-family: courier;"> build(job: "path/to/pipeline2", parameters: params)</span></div><div><span style="font-family: courier;"> }</span></div><div><span style="font-family: courier;"><span style="white-space: pre;"> </span>}</span></div><div><span style="font-family: courier;"><span> </span>}</span></div><div style="text-align: left;"><span style="font-family: courier;">} </span></div><div style="text-align: left;"><span style="font-family: courier;"><br /></span></div><div style="text-align: left;"><span style="font-family: courier;"><br /></span></div><p style="text-align: left;"><span style="font-family: inherit;"><u><b>Pipeline 2</b></u></span></p><div style="text-align: left;"><span style="font-family: courier;"><div>pipeline {</div><div><span> </span>agent any</div><div><br /></div><div><span> </span>stages {</div><div><span style="white-space: pre;"> </span></div><div><span> </span><span> </span>stage('Read parameters') {</div><div><br /></div><div><span> </span><span> </span><span> </span>script {</div><div><span> </span><span> </span><span> </span><span> </span></div><div><span> </span><span> </span><span> </span><span> </span>for (p in params) {</div><div><span> </span><span> </span><span> </span><span> </span><span> </span>print p.key</div><div><span> </span><span> </span><span> </span><span> </span><span> </span>print p.value</div><div> <span style="white-space: pre;"> </span>}</div><div> }</div><div><span style="white-space: pre;"> </span>}</div><div><span> </span>}</div><div>}</div><div><br /></div><div><br /></div></span></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-5425779642909976342020-10-16T14:53:00.004+02:002020-10-16T14:53:25.625+02:00Validate a Jenkinsfile before running the Pipeline<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiActv1x4YcwKqM65fqXzIVb6fAnJMGjpIABUOSPPiOB26jwOmpb2B9sEQHfiQKLJSgG5uwfPWyzT9t5ndHn148pyTyFgspcyGpsB5MPCfx6SdpGqcaRpkH9kuN3PRddgSTARzdWF0gTjYN/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="174" data-original-width="450" height="123" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiActv1x4YcwKqM65fqXzIVb6fAnJMGjpIABUOSPPiOB26jwOmpb2B9sEQHfiQKLJSgG5uwfPWyzT9t5ndHn148pyTyFgspcyGpsB5MPCfx6SdpGqcaRpkH9kuN3PRddgSTARzdWF0gTjYN/" width="320" /></a></div><br /><p></p>Jenkins can validate a Declarative Pipeline from the command line before actually running it. This can be done using a Jenkins CLI command or by making an HTTP POST request with appropriate parameters.<br /><br /><h4 style="text-align: left;">Example</h4>Suppose you have a simple<span style="font-family: courier;"> Jenkinsfile-test </span>like this:<div><br /><div style="text-align: left;"><b><span style="color: #444444; font-family: courier;">pipeline {<br /></span><span style="color: #444444; font-family: courier;"> agent any</span><span style="color: #444444; font-family: courier;"><br /></span><span style="color: #444444; font-family: courier;"> stages {</span><span style="color: #444444; font-family: courier;"><br /></span><span style="color: #444444; font-family: courier;"> stage('List files') {<br /></span><span style="font-family: courier;"><span style="color: #444444;"> </span><span style="color: #cc0000;">steps {</span><br /></span><span style="color: #444444; font-family: courier;"> <span style="white-space: pre;"> </span>sh 'ls -al'<br /></span><span style="color: #444444; font-family: courier;"> </span><span style="font-family: courier;"><span style="color: #cc0000;"> }</span><br /></span><span style="color: #444444; font-family: courier;"> }<br /></span><span style="color: #444444; font-family: courier;"> }<br /></span><span style="color: #444444; font-family: courier;">}</span></b></div><br />And you want to check if the sintax is correct before using it.<br /><br /><h4 style="text-align: left;">Validation</h4>All you have to do is to execute this command:<pre style="background-color: white; text-align: left;"><span style="color: #444444; font-family: courier;"><b>curl -s -X POST -F "jenkinsfile=<Jenkinsfile-test" \</b></span></pre><pre style="background-color: white;"><span style="color: #444444; font-family: courier;"><b>https://user:password@jenkins.example.com/pipeline-model-converter/validate</b></span></pre><pre style="background-color: white;"><span style="font-family: arial;">Note that </span><span style="font-family: courier;">user</span><span style="font-family: arial;"> and </span><span style="font-family: courier;">password</span><span style="font-family: arial;"> are the credentials you usually use to authenticate in Jenkins web console.</span></pre><pre style="background-color: white;"><span style="font-family: arial;"><br /></span></pre><h4 style="background-color: white; text-align: left;"><span style="font-family: arial;">Output</span></h4><pre style="background-color: white;"><span style="font-family: arial;">✅If it's all ok, you should get:</span></pre><pre style="background-color: white;"><span style="color: #444444; font-family: courier;"><b>Jenkinsfile successfully validated.</b></span><span style="font-family: arial;">
</span></pre><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">❌If there are some errors, then you should get an error message.</span></div><div><span style="font-family: arial;">For example, let's </span><span style="color: #cc0000;"><span style="font-family: arial;">remove the </span><span style="font-family: courier;"><b>steps</b></span><span style="font-family: arial;"> section</span></span><span style="font-family: arial;"> in the stage.</span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">Trying to validate again </span><span style="font-family: courier;">Jenkinsfile-test</span><span style="font-family: arial;">, we get:</span></div><div><span style="font-family: arial;"><br /></span></div><div><div><span style="color: #444444; font-family: courier;"><b>Errors encountered validating Jenkinsfile:</b></span></div><div><span style="color: #444444; font-family: courier;"><b>WorkflowScript: 13: Unknown stage section "sh". Starting with version 0.5, steps in a stage must be in a ‘steps’ block. @ line 13, column 9.</b></span></div><div><span style="color: #444444; font-family: courier;"><b> stage('List files') {</b></span></div><div><span style="color: #444444; font-family: courier;"><b> ^</b></span></div><div><span style="color: #444444; font-family: courier;"><b><br /></b></span></div><div><span style="color: #444444; font-family: courier;"><b>WorkflowScript: 13: Expected one of "steps", "stages", or "parallel" for stage "List files" @ line 13, column 9.</b></span></div><div><span style="color: #444444; font-family: courier;"><b> stage('List files') {</b></span></div><div><span style="color: #444444;"><b><span style="font-family: courier;"> </span><span style="font-family: arial;"> ^</span></b></span></div><div style="font-family: arial;"><br /></div></div><pre style="background-color: white;"><br /></pre><p></p></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com4tag:blogger.com,1999:blog-9178633621922743636.post-10937418232031947582020-10-15T22:17:00.002+02:002020-10-15T22:17:17.524+02:00How to configure git hooks: a practical example<p></p><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaoPtMRGrzkxXVXlBjU_YQrImndvnHVueq44pgMzYxTHhoUMC2Djh1cVbwhtJmrndJXfqACsBtAKO3fV_BfIp2P_A3m2m7cRalQDYeqiNGGrb7MkNg_YQ7ngw-1g_fh6CKWB3chscHbnRP/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="334" data-original-width="800" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaoPtMRGrzkxXVXlBjU_YQrImndvnHVueq44pgMzYxTHhoUMC2Djh1cVbwhtJmrndJXfqACsBtAKO3fV_BfIp2P_A3m2m7cRalQDYeqiNGGrb7MkNg_YQ7ngw-1g_fh6CKWB3chscHbnRP/" width="320" /></a></div><br /> <p></p><p><span style="background-color: white; color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif; font-size: 16px;">Hook scripts are useful for identifying simple issues before submission to code review or committing.</span></p><p><span style="background-color: white; color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif; font-size: 16px;">Imagine you want to run some tests before committing your changes locally.</span></p><p><span style="background-color: white; color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif; font-size: 16px;">You can use a pre-commit script, thanks to git hooks!</span></p><p><span style="background-color: white; color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif; font-size: 16px;">Let's see a <b>practical example.</b></span></p><p><span style="background-color: white; color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif; font-size: 16px;"><b><br /></b></span></p><p><span style="background-color: white; color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif;"><b><span style="font-size: medium;">Example</span></b></span></p><p><span style="color: #333333; font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;">This a simple project in which we have initialized a </span><span style="color: #333333; font-family: courier;">git</span><span style="color: #333333; font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"> repository.</span></p><p><span style="color: #333333; font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;">If you list the content of the root directory of the project you can see a </span><span style="color: #333333; font-family: courier;">.git</span><span style="color: #333333; font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"> directory, like this:</span></p><p><span style="background-color: white; color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif; font-size: 16px;"><b></b></span></p><div class="separator" style="clear: both; text-align: left;"><b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIB1sleLwbfCbiaNViABwp2u4qfbCDx62b9D-5FRkOp5_HpMeKV5PM6xIQoqL5s_Zi8u_fYfQqzjyayZkJipGNJutDePKnn1q0JwOunLSnuAZuB1egAXnzVqivfdN6oy65XJ31AisBtm5x/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="202" data-original-width="660" height="122" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIB1sleLwbfCbiaNViABwp2u4qfbCDx62b9D-5FRkOp5_HpMeKV5PM6xIQoqL5s_Zi8u_fYfQqzjyayZkJipGNJutDePKnn1q0JwOunLSnuAZuB1egAXnzVqivfdN6oy65XJ31AisBtm5x/w400-h122/Schermata+2020-10-15+alle+21.36.26.png" width="400" /></a></b></div><b><br /></b><p></p><p><span style="color: #333333;"><span style="background-color: white;"><span style="font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;">The </span><span style="font-family: courier;">.git </span><span style="font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;">directory structure is the following:</span></span></span></p><p><span style="color: #333333; font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"><span style="background-color: white;"><b></b></span></span></p><div class="separator" style="clear: both; text-align: left;"><span style="color: #333333; font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"><b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiApMzEIfYjHnATI5n_nGwOQltY3Y568GbuXpQqnFxZWnVAYJZv3syCNNP-usZAmJmwItva7jqsf0hlsFo38htsINFZMBkekR3YpXylJMXqdKdwdWML-C05_yVHJspp3q2XziqjRgq8tTWg/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="676" data-original-width="660" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiApMzEIfYjHnATI5n_nGwOQltY3Y568GbuXpQqnFxZWnVAYJZv3syCNNP-usZAmJmwItva7jqsf0hlsFo38htsINFZMBkekR3YpXylJMXqdKdwdWML-C05_yVHJspp3q2XziqjRgq8tTWg/w391-h400/Schermata+2020-10-15+alle+21.40.00.png" width="391" /></a></b></span></div><span style="color: #333333; font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"><p><span style="color: #333333; font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"><br /></span></p>Inside </span><span style="color: #333333; font-family: courier;">hooks</span><span style="color: #333333; font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"> directory, you can find all the sample scripts you can configure and use before the related git action takes effect.</span><p></p><p><span style="color: #333333;"><span style="background-color: white;"><span style="font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;">In our example, we want to run a </span><span style="font-family: courier;">pre-commit</span><span style="font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"> script so that git commit can't be executed if all the conditions specified in that are not satisfied.</span></span></span></p><p><span style="color: #333333;"><span style="background-color: white;"><span style="font-family: courier;">pre-commit.sample</span><span style="font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"> contains just a sample, you can substitute it with your</span><br /><span style="font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"> own code. <b>Rename it as </b></span><span style="font-family: courier;"><b>pre-commit</b></span><span style="font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"><b> to enable it</b>.</span></span></span></p><p><span style="color: #333333; font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"><span style="background-color: white;"><br /></span></span></p><p><span style="color: #333333; font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"><span style="background-color: white;">For our example we simply do this:</span></span></p><p></p><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZhxR3xoWVxcco4JvwVZhAJCxjBbg4dlnGyu5BdmSE0TYSTjQt8YLTOGgWGciPo89NvQl5Tmvjf8KEOXamwUAZA0o-jPH4BEW7vQCzjMw93AuA6XSl6OllcpNvXRhGkjx04kS4mHnHW06F/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="148" data-original-width="804" height="115" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZhxR3xoWVxcco4JvwVZhAJCxjBbg4dlnGyu5BdmSE0TYSTjQt8YLTOGgWGciPo89NvQl5Tmvjf8KEOXamwUAZA0o-jPH4BEW7vQCzjMw93AuA6XSl6OllcpNvXRhGkjx04kS4mHnHW06F/w640-h115/Schermata+2020-10-15+alle+22.04.16.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif;">Let's do a commit:</span></div><div class="separator" style="clear: both; text-align: left;"><span style="color: #333333; font-family: Source Sans Pro, Hevetica Neue, arial, sans-serif;"><b><br /></b></span><span style="color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif;"><div class="separator" style="clear: both; font-weight: bold; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5ofTGMAOFnYksHK7xjSpjTu2iRvyw3e69zR-iy-lFD60uNqYbLL4rhrSgYf7D72BDJUeBNMmq7rStDDqaPvih8wWXkIxcjdlD7oqfZ8yGFJJYI4eDR3IyvwzENckamGt5QJfXuoDSyeO7/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="130" data-original-width="812" height="102" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5ofTGMAOFnYksHK7xjSpjTu2iRvyw3e69zR-iy-lFD60uNqYbLL4rhrSgYf7D72BDJUeBNMmq7rStDDqaPvih8wWXkIxcjdlD7oqfZ8yGFJJYI4eDR3IyvwzENckamGt5QJfXuoDSyeO7/w640-h102/Schermata+2020-10-15+alle+22.07.30.png" width="640" /></a></div><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif;">Our hook has been started and ended successfully :D</span></div><div class="separator" style="clear: both; text-align: left;"><span style="color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="color: #333333; font-family: "Source Sans Pro", "Hevetica Neue", arial, sans-serif;">Now we can push :P</span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><p></p>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-29552637994317194582020-07-22T12:38:00.001+02:002020-07-22T12:38:44.337+02:00Software Testing types explained<br />Continuous integration and delivery practices must heavily rely on testing to be successful. <div>Testing is the process of evaluating a system and its components, to find if it satisfies the specified requirements or not.<br /><div><br /></div><div>Different types of tests are needed throughout these processes to gain confidence in a given solution. Each type of testing has its own features, advantages, and disadvantages as well.</div><div>In this post, we'll present the most used chain of testing phases, and explain the details of each type and phase.<br /><div><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5hP5uKxc1Jrm1_xOnu44eRni3qYXY7kz29BHTcfU5QGUApdj9zl-SYVlyfvj0zzem6rxzwWWKjrNuJB5JvoQu7yEVR4gFX0BsJQs4mSd7fu5j4yIDh6x91y3-4-of6XeErFZNVCWWv6Q_/s1010/Schermata+2020-07-22+alle+12.00.54.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="92" data-original-width="1010" height="71" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5hP5uKxc1Jrm1_xOnu44eRni3qYXY7kz29BHTcfU5QGUApdj9zl-SYVlyfvj0zzem6rxzwWWKjrNuJB5JvoQu7yEVR4gFX0BsJQs4mSd7fu5j4yIDh6x91y3-4-of6XeErFZNVCWWv6Q_/w808-h71/Schermata+2020-07-22+alle+12.00.54.png" width="808" /></a></div><div><br /><div><br /><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><font size="5">Smoke Tests<br /></font></b><br />Smoke tests are designed to ensure basic functionalities and implementations and environmental assumptions. They are generally run at the start of each testing cycle as a sanity check before running the complete test suite.</div><div><br /></div><div>The term ‘smoke testing’ for software testing, seems to come from a similar type of hardware testing, in which the device passed the test if it did not catch fire (or smoked) the first time it was turned on.<br /><div><br /><b><font size="5">Unit Tests<br /></font></b><br />Unit tests are responsible for testing individual elements of code in an isolated way. The functionality of individual functions and classes are tested on their own. Any external dependencies are replaced with stub or mock implementations to completely focus the test on the code in question.<br /><br />Unit tests are essential to test the correctness of individual code components for internal consistency and correctness before they are placed in more complex contexts. Often, after any smoke tests, unit tests are the first tests that are run when any changes are made.<br /><br />Unit tests are typically run by individual developers on their own work station prior to submitting changes. However, continuous integration servers almost always run these tests again as a safe guard before beginning integration tests.<div><br /><b><font size="5">Integration Tests</font><br /></b><br />After unit tests, integration testing is performed by grouping together components and testing their interconnection. While unit tests validate the functionality of code in isolation, integration tests ensure that components cooperate when interfacing with one another, and focus on the flow of data and information between them. A typical software project in-fact, consists of multiple software components, developed by different programmers. The purpose of this level of testing is to expose defects in the interaction between these software components when they are integrated, in different combinations.<br /><br />Integration tests are important for shared work because they protect the health of the project. Changes must prove that they do not break existing functionality and that they interact with other code as expected. This is usually also the first time that new code is tested against real external libraries, services, and data (for example external databases or APIs).<div><br /><b><font size="5">System Tests</font><br /></b><br />Once integration tests are performed, another level of testing called system testing can begin. The focus of system tests are to make sure that groups of components function correctly as a unique identity. <br /><br />Instead of focusing on the interfaces between components, system tests typically evaluate the functionality of a full piece of software, and focus on user-interfaces or externally-accessible interfaces. It is a black box testing technique to evaluate the complete system (end-to-end) against specified requirements.</div><div><br /><b><font size="5">User Acceptance Tests (UAT)</font><br /></b><br />Acceptance tests are one of the last tests types that are performed on software prior to delivery. This type of testing is used to determine whether a piece of software satisfies all of the requirements from the business or user’s perspective. These tests are aimed to test interfaces for the expected functionality and for usability, and can be manual or automatic.<br /><br />Frequently, acceptance testing begins by deploying the build to a staging environment that mirrors the production system. From here, the automated test suites can be run and internal users can access the system to check whether it functions the way they need it to. After release or offering beta access to customers, further acceptance testing is performed by evaluating how the software works with a real use and by collecting feedback from users.</div></div></div></div></div></div></div><div><br /></div><div><br /></div><div><br /></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-14381343469664051482020-07-20T10:51:00.002+02:002020-07-20T10:51:35.039+02:00Automatically trigger Jenkins Pipeline on Gitlab push<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhERMcgCswzrR_h6pX3C6y3lSkt5dr0l9RQTIOneL0lhTSpZ5YvzOyHiGmJmi7om774oIprQFUBwbmPLLEV9W45Vy15BeHvUJ4d2uxwv949FaE8frHrghaailkoQYZtIeobFOwHOZDmXDw1/s1920/gitlab-jenkins.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhERMcgCswzrR_h6pX3C6y3lSkt5dr0l9RQTIOneL0lhTSpZ5YvzOyHiGmJmi7om774oIprQFUBwbmPLLEV9W45Vy15BeHvUJ4d2uxwv949FaE8frHrghaailkoQYZtIeobFOwHOZDmXDw1/s320/gitlab-jenkins.png" width="320" /></a></div><div><br /></div><div><br /></div><div>Imagine you have your git repository hosted on Gitlab, and want to automatically trigger a Jenkins pipeline to build your code when you push on a given branch, for example "<i>develop</i>".</div><div><br /></div><div>Here are the steps to follow.</div><div><br /></div><div><br /></div><div><b>1) Download Gitlab plugin for Jenkins.</b></div><div><b><br /></b></div><div>Project repository is here: <a href="https://github.com/jenkinsci/gitlab-plugin#webhook-url">https://github.com/jenkinsci/gitlab-plugin#webhook-url</a></div><div><br /></div><div><br /></div><div><b>2)Create a new pipeline on Jenkins.</b></div><div><b><br /></b></div><div>In this example we named the pipeline "<i>my-pipeline</i>"</div><div><br /></div>When configuring the pipeline, set a webhook on Jenkins as shown here:<div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt1JzL_i5sNNksiLk2BF70j12ry1VOf4zuXkG00KvQbiB3CNfnjKo3w_YMLvueQo0g_pjEGRGsylrPsYbgvcaDLIXGd8hQmDnFI_rWi_Ua0gq5yudEifAPt1VoFOIBlz6x-yZEPPszJR8V/s1402/Schermata+2020-07-20+alle+10.09.59.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1246" data-original-width="1402" height="564" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt1JzL_i5sNNksiLk2BF70j12ry1VOf4zuXkG00KvQbiB3CNfnjKo3w_YMLvueQo0g_pjEGRGsylrPsYbgvcaDLIXGd8hQmDnFI_rWi_Ua0gq5yudEifAPt1VoFOIBlz6x-yZEPPszJR8V/w640-h564/Schermata+2020-07-20+alle+10.09.59.png" width="640" /></a></div><div><br /><div><br /></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b>3) Set Jenkins Integration in Gitlab.</b></div><div><b><br /></b></div><div>Go in your project repository, and configure the integration like here:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRnNy-9f534XPwvIlNW3lWEby9956UMt4dTdOUS3RgpJnMFowQxrxP-m93nPxVYdUNiu99R1BZZQYtxTVa0RqC8po5G9omCpRsDF9Zri3-N561Iov9_HaNlxB1MXKhpFTH89U6jEL8Htv7/s1896/Schermata+2020-07-20+alle+10.11.34.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1486" data-original-width="1896" height="498" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRnNy-9f534XPwvIlNW3lWEby9956UMt4dTdOUS3RgpJnMFowQxrxP-m93nPxVYdUNiu99R1BZZQYtxTVa0RqC8po5G9omCpRsDF9Zri3-N561Iov9_HaNlxB1MXKhpFTH89U6jEL8Htv7/w640-h498/Schermata+2020-07-20+alle+10.11.34.png" width="640" /></a></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div>As you can see, the <i>Secret token </i>is the same shown on Jenkins Build Trigger.</div><div><br /></div><div><br /></div><div><b>4) Create a Jenkins user on Gitlab to clone the repository.</b></div><div><b><br /></b></div><div>Create the user and then add it as a <i>Developer</i> in your project.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6z2GW2witZimzNgVzpxw8Jntl1P0eloZusFkorTWSkIRfnKlii3IFk5-OmF9iWa1lgl4xTrKK2A1SPwsQYZKqZDf752RD-KDW1hF_ohMBDUv6tpa7L7IeTlrXeKhrXqeC_8EVG-FVQK94/s2004/Schermata+2020-07-20+alle+10.24.27.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="188" data-original-width="2004" height="60" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6z2GW2witZimzNgVzpxw8Jntl1P0eloZusFkorTWSkIRfnKlii3IFk5-OmF9iWa1lgl4xTrKK2A1SPwsQYZKqZDf752RD-KDW1hF_ohMBDUv6tpa7L7IeTlrXeKhrXqeC_8EVG-FVQK94/w640-h60/Schermata+2020-07-20+alle+10.24.27.png" width="640" /></a></div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b>5) Create a Credential set for Jenkins user on Jenkins server.</b></div><div><b><br /></b></div><div>In Jenkins, go to <i>Credentials</i>, and add a new Credential like this:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWG2kN7m-x_M9xeh5TPL8CdQehrjphXafid_bgRBEojwbPL3VtvrFnN7JWSPYAF8FepoUJBjiaZRaPlEFHzT5hXvI91We8CnAWSSSdxwDZnEk-qRYWgp8O37V-45yUw7CXdW3QWOTOs-gb/s694/Schermata+2020-07-20+alle+10.28.49.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="348" data-original-width="694" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWG2kN7m-x_M9xeh5TPL8CdQehrjphXafid_bgRBEojwbPL3VtvrFnN7JWSPYAF8FepoUJBjiaZRaPlEFHzT5hXvI91We8CnAWSSSdxwDZnEk-qRYWgp8O37V-45yUw7CXdW3QWOTOs-gb/w400-h200/Schermata+2020-07-20+alle+10.28.49.png" width="400" /></a></div><div><br /></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b><br /></b></div><div><b>6) Add a clone step to your pipeline using the credential just created.</b></div></div></div><div><br /></div><div><div><font face="courier">stage('Clone sources') {</font></div><div><font face="courier"> steps {</font></div><div><font face="courier"> git credentialsId: 'gitlab-jenkins-user', branch: 'develop', url: 'https://my.gitlab.org/test.git'</font></div><div><font face="courier"> } </font></div><div><span style="font-family: courier;">}</span></div></div><div><br /></div><div><br /></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com4tag:blogger.com,1999:blog-9178633621922743636.post-36503148732909001392020-07-08T22:38:00.001+02:002020-07-08T22:38:27.613+02:00Save artifacts in Jenkins Pipeline<div style="text-align: center;"><img alt="Advocacy and Outreach" height="241" src="https://www.jenkins.io/images/logos/chatterbox/chatterbox.png" width="306" /></div><div><br /></div>Built artifacts from Jenkins can be downloaded for local analysis and investigation, in case of tests failures. This can be achieved thanks to Jenkins’s built-in support for storing "artifacts", that is files generated during the execution of the Pipeline.<br /><br /><br />This is easily done with the <font face="courier">archiveArtifacts</font> step and a regex expression.<div><br /></div><div><p class="p1" style="font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;"><font face="courier">dir/**/*.*<span> </span></font><span style="font-family: "Helvetica Neue";">-> archive all the files recursively under </span><font face="courier">dir/</font></p><p class="p1" style="font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;"><font face="courier">**/*.*</font><span style="font-family: "Helvetica Neue";"> <span> </span><span> </span><span> <span> </span></span>-> archive all the files in the workspace</span></p><p class="p1" style="font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;"><font face="courier">**/*.xml<span> </span><span> </span></font><span style="font-family: "Helvetica Neue";">-> archive all xml files in your workspace</span></p><p class="p1" style="font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;"><font face="courier">dir/**/*.xml</font><span style="font-family: "Helvetica Neue";"> <span> </span>-> archive all the xml files recursively under </span><font face="courier">dir/</font></p><p class="p1" style="font-family: "Helvetica Neue"; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;"><br /></p><p class="p1" style="font-family: "Helvetica Neue"; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;"><br /></p>For example, if in your build a .dev file is created, then you can archive it doing:<p class="p1" style="font-family: "Helvetica Neue"; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;"><span class="Apple-converted-space"><br /></span></p><p class="p1" style="font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;"><font face="courier"><span class="Apple-converted-space"> </span>stage('Archive Artifacts'){</font></p><p class="p1" style="font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;"><font face="courier"><span class="Apple-converted-space"> </span>archiveArtifacts artifacts: '**/*.dev'</font></p><p class="p1" style="font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;"><font face="courier"><span class="Apple-converted-space"> </span>}</font></p><p class="p1" style="font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;"><font face="courier"><br /></font></p><p class="p1" style="font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px;"><font face="courier"><br /></font></p>Then you can download it directly from Jenkins Web Console:</div><div><br /><div class="separator" style="clear: both; text-align: center;"><img alt="" height="430" src="data:image/png;base64,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" width="552" /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">If you want to check the files on Jenkins server filesystem, then you can locate the artifacts in:</div><pre style="clear: both; text-align: left;"><span style="background-color: white; color: #242729; white-space: pre-wrap;"><font face="courier">$JENKINS_HOME/jobs/<job_name>/builds/<build_number>/archive</font></span></pre><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="background-color: #e4e6e8; color: #242729; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-size: 13px; white-space: pre-wrap;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="background-color: #e4e6e8; color: #242729; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-size: 13px; white-space: pre-wrap;"><br /></span></div><p></p></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-90835287328453460262020-07-08T10:40:00.002+02:002020-07-08T10:40:34.097+02:00Execute Jenkins pipeline step basing on changeset<div class="separator"><div style="margin-left: 1em; margin-right: 1em; text-align: center;"><img alt="Jenkins" height="254" src="https://www.jenkins.io/images/logo-title-opengraph.png" width="510" /></div></div><div><br /></div>Suppose you have a git repository, and want to connect it to Jenkins to start a CI/CD pipeline when some specific files are changed.<div><br /></div><div>You can do it checking the <font face="courier"><b>changeset</b></font>. Let's see some <b>examples</b>.</div><div><br /></div><div><br /></div><div>Suppose your repository has this structure:</div><div><br /></div><div><div><font face="courier new, courier, monospace">nodejs-example</font></div><div><font face="courier new, courier, monospace">├── Dockerfile</font></div><div><font face="courier new, courier, monospace">├── configurations</font></div><div><font face="courier new, courier, monospace">│ ├── dev</font></div><div><font face="courier new, courier, monospace">│ │ └── config.yaml</font></div><div><font face="courier new, courier, monospace">│ └── prod</font></div><div><font face="courier new, courier, monospace">│ └── config.yaml</font></div><div><font face="courier new, courier, monospace">├── index.js</font></div><div><font face="courier new, courier, monospace">├── package.json</font></div></div><div><font face="courier new, courier, monospace"><br /></font></div><div><font face="courier new, courier, monospace"><br /></font></div>If you want to do a build step only if <font face="courier">index.js</font> changes, then do:<div><br /></div><div><div><font face="courier">stage("Build step example") {</font></div><div><font face="courier"> when{</font></div><div><font face="courier"> changeset "index.js"</font></div><div><font face="courier"> }</font></div><div><font face="courier"> steps {</font></div><div><font face="courier"> script {</font></div><div><font face="courier"> sh 'npm i'</font></div><div><font face="courier"> }</font></div><div><font face="courier"> }</font></div><div><font face="courier">}</font></div><div><br /></div><div><br /></div><div>If you want to do a build step only if a file inside <font face="courier">configurations</font> folder changes, then do:</div><div><br /></div><div><div><font face="courier">stage("</font><span style="font-family: courier;">Build step example</span><font face="courier">") {</font></div><div><font face="courier"> when{</font></div><div><font face="courier"><span> anyOf{</span><br /></font></div><div><font face="courier"> changeset "configurations/**/*.yaml"</font></div><div><font face="courier"> }</font></div><div><font face="courier"> }</font></div><div><font face="courier"> steps {</font></div><div><font face="courier"> script {</font></div><div><font face="courier"> sh 'npm i'</font></div><div><font face="courier"> }</font></div><div><font face="courier"> }</font></div><div><font face="courier">}</font></div></div><div><font face="courier" size="1"><br /></font></div><div><br /></div><div>If you want to do a build step only if all the files in <font face="courier">configurations</font> folder change, then do:</div><div><br /></div><div><div><font face="courier">stage("</font><span style="font-family: courier;">Build step example</span><font face="courier">") {</font></div><div><font face="courier"> when{</font></div><div><font face="courier"> allOf{<br /></font></div><div><font face="courier"> changeset "configurations/**/*.yaml"</font></div><div><font face="courier"> }</font></div><div><font face="courier"> }</font></div><div><font face="courier"> steps {</font></div><div><font face="courier"> script {</font></div><div><font face="courier"> sh 'npm i'</font></div><div><font face="courier"> }</font></div><div><font face="courier"> }</font></div><div><font face="courier">}</font></div></div><div><font face="courier" size="1"><br /></font></div><div><font face="courier" size="1"><br /></font></div>If you want to do a build step only if none of the files in <font face="courier">configurations</font> folder change, then do:<div><font face="courier" size="1"><br /></font></div><div><div><font face="courier">stage("</font><span style="font-family: courier;">Build step example</span><font face="courier">") {</font></div><div><font face="courier"> when{</font></div><div><font face="courier"><span> not{</span><br /></font></div><div><font face="courier"> anyOf{<br /></font></div><div><font face="courier"> <span> </span>changeset "configurations/**/*.yaml"</font></div><div><font face="courier"> }</font></div><div><font face="courier"><span> }</span><br /></font></div><div><font face="courier"> }</font></div><div><font face="courier"> steps {</font></div><div><font face="courier"> script {</font></div><div><font face="courier"> sh 'npm i'</font></div><div><font face="courier"> }</font></div><div><font face="courier"> }</font></div><div><font face="courier">}</font></div></div><div><font face="courier"><br /></font></div><div><font face="courier"><br /></font></div></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-19810382124937638252020-07-07T11:59:00.000+02:002020-07-07T11:59:30.220+02:00Kubeval, a tool for validating K8S configuration filesWell, you have prepared you kubernetes manifests and the next step is to apply them to create all the resources you need. But how to know if your YAML file is correct?<div><br /></div><div>Using <span style="background-color: rgba(27, 31, 35, 0.05); color: #24292e; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 13.6px;">kubeval</span> :)</div><div><br /></div><div><code style="background-color: rgba(27, 31, 35, 0.05); border-radius: 6px; box-sizing: border-box; color: #24292e; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 13.6px; margin: 0px; padding: 0.2em 0.4em;">kubeval</code> is a tool for validating a Kubernetes YAML or JSON configuration file. It does so using schemas generated from the Kubernetes OpenAPI specification, and therefore can validate schemas for multiple versions of Kubernetes.<br /><br /><br /><b><font size="5">Installation</font></b><br /><br />Download <span style="background-color: rgba(27, 31, 35, 0.05); color: #24292e; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 13.6px;">kubeval</span> here:<font color="#24292e" face="-apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji"><span style="background-color: white;"> </span></font><a href="https://github.com/instrumenta/kubeval/releases">https://github.com/instrumenta/kubeval/releases</a></div><div><br /></div><div><br /></div><div><font size="5"><b>Example.</b></font></div><div><br /></div><div>Suppose we have the following <font face="courier">k8s-example.yaml</font>:</div><div><br /></div><div><pre style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "liberation mono", "courier new", monospace; font-size: 14px; margin-bottom: 0px; margin-top: 0px; overflow-wrap: normal; overflow: auto; padding: 0px; tab-size: 4;"><code class="language-yaml" data-lang="yaml" style="background-color: white; border-radius: 0.25rem; border: 0px; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "liberation mono", "courier new", monospace; margin: 0px; padding: 0px; word-break: normal;"><span style="box-sizing: border-box; font-weight: 700;">apiVersion</span>:<span style="box-sizing: border-box;"> </span>apps/v1<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"></span><span style="box-sizing: border-box; font-weight: 700;">kind</span>:<span style="box-sizing: border-box;"> </span>Deployment<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"></span><span style="box-sizing: border-box; font-weight: 700;">metadata</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">name</span>:<span style="box-sizing: border-box;"> </span>nginx-deployment<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">labels</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">app</span>:<span style="box-sizing: border-box;"> </span>nginx<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"></span><span style="box-sizing: border-box; font-weight: 700;">spec</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">replicas</span>:<span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box;">3</span><span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">selector</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">matchLabels</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">app</span>:<span style="box-sizing: border-box;"> </span>nginx<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">template</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">metadata</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">labels</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">app</span>:<span style="box-sizing: border-box;"> </span>nginx<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">spec</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">containers</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span>- <span style="box-sizing: border-box; font-weight: 700;">name</span>:<span style="box-sizing: border-box;"> </span>nginx<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">image</span>:<span style="box-sizing: border-box;"> </span>nginx:<span style="box-sizing: border-box;">1.14.2</span><span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">ports</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span>- <span style="box-sizing: border-box; font-weight: 700;">containerPort</span>:<span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box;">80</span></code></pre></div><div><br /></div><div><br /></div><div>We can check it with the following command:</div><div><br /></div><div><div><font face="courier"><b>$ kubeval k8s-example.yaml </b> </font></div><div><font face="courier"><font color="#0f9d58">PASS</font> - k8s-example.yaml contains a valid Deployment (nginx-deployment)</font></div></div><div><font face="courier"><br /></font></div><div><font face="courier"><br /></font></div>Let's introduce an indentation error:<div><font face="courier"><br /></font></div><div><pre style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "liberation mono", "courier new", monospace; font-size: 14px; margin-bottom: 0px; margin-top: 0px; overflow-wrap: normal; overflow: auto; padding: 0px; tab-size: 4;"><code class="language-yaml" data-lang="yaml" style="background-color: white; border-radius: 0.25rem; border: 0px; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "liberation mono", "courier new", monospace; margin: 0px; padding: 0px; word-break: normal;"><span style="box-sizing: border-box; font-weight: 700;">apiVersion</span>:<span style="box-sizing: border-box;"> </span>apps/v1<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"></span><span style="box-sizing: border-box; font-weight: 700;">kind</span>:<span style="box-sizing: border-box;"> </span>Deployment<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"></span><span style="box-sizing: border-box; font-weight: 700;">metadata</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">name</span>:<span style="box-sizing: border-box;"> </span>nginx-deployment<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">labels</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">app</span>:<span style="box-sizing: border-box;"> </span>nginx<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"></span><span style="box-sizing: border-box; font-weight: 700;">spec</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">replicas</span>:<span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box;">3</span><span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">selector</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">matchLabels</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">app</span>:<span style="box-sizing: border-box;"> </span>nginx<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">template</span>:<span style="box-sizing: border-box;">
</span><font color="#b51200"><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">metadata</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">labels</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">app</span>:<span style="box-sizing: border-box;"> </span>nginx</font><span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">spec</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">containers</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span>- <span style="box-sizing: border-box; font-weight: 700;">name</span>:<span style="box-sizing: border-box;"> </span>nginx<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">image</span>:<span style="box-sizing: border-box;"> </span>nginx:<span style="box-sizing: border-box;">1.14.2</span><span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box; font-weight: 700;">ports</span>:<span style="box-sizing: border-box;">
</span><span style="box-sizing: border-box;"> </span>- <span style="box-sizing: border-box; font-weight: 700;">containerPort</span>:<span style="box-sizing: border-box;"> </span><span style="box-sizing: border-box;">80</span></code></pre></div><div><font face="courier"><br /></font></div>If we run the same command as before we get:<div><font face="courier"><br /></font></div><div><font face="courier"><div><b>$ kubeval k8s-example.yaml</b></div><div><b><font color="#f4a900">WARN</font></b> - k8s-example.yaml contains an invalid Deployment (nginx-deployment) - spec.template: Invalid type. Expected: object, given: null</div></font></div><div><font face="courier"><br /></font></div><div><font face="courier"><br /></font></div><div><font face="courier"><br /></font></div><div><br /></div><div><font face="courier"><br /></font></div><div><font face="courier"><br /></font></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-45695148033800464062020-07-03T08:43:00.001+02:002020-07-03T08:43:19.587+02:00Learn awk by examples<div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzPzahX6AUVeH3vXzksIP8ULlP8zFA9ZWIr9ja5NQn0OvXbErb359hhlFSl_PtnVQvJgLBfEPdTFdRb8oXA0-FaJ_ubY7LpxoKTzRYL1XtfF4_J_0iBAhMt8VKL43mfpacM8xeQHhgxLIE/s1306/Schermata+2020-07-03+alle+08.40.48.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="1306" height="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzPzahX6AUVeH3vXzksIP8ULlP8zFA9ZWIr9ja5NQn0OvXbErb359hhlFSl_PtnVQvJgLBfEPdTFdRb8oXA0-FaJ_ubY7LpxoKTzRYL1XtfF4_J_0iBAhMt8VKL43mfpacM8xeQHhgxLIE/w500-h195/Schermata+2020-07-03+alle+08.40.48.png" width="500" /></a></div><div><br /></div><div><br /></div><div>AWK is a pattern-directed scanning and manipulating language, designed expecially for text processing.<br />It scans each input file for lines that match any of a set of patterns
specified literally in prog or in one or more files specified as <font face="courier">-f file</font>. With each pattern there can be an associated action that
will be performed when a line of a file matches the pattern.<div><p>A program basing on AWK is made of a list of rules that specify a pattern and the relative action to execute if the pattern is satisfied:</p><pre> pattern { action }</pre><br /><div><br /></div><div><div><b><font size="5">Example usages.</font></b></div><div><br /></div><div>Suppose you have this file.txt:</div></div><div><pre class="result notranslate" style="background: rgb(238, 238, 238); border: 1px solid rgb(214, 214, 214); color: rgba(0, 0, 0, 0.87); font-family: monospace, monospace; font-size: 15px; overflow-x: auto; padding: 5px;">Red Blue <span> 1</span>
Orange Pink 2
Yellow Black 3
Green White 4
Red Purple 5</pre></div><br /><br /><ul style="text-align: left;"><li>Print the lines from file.txt that contains the word "Blue"</li></ul></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><b style="font-family: courier;">$ awk '/Blue/ { print }' file.txt</b></div></div><div><div><span style="font-family: courier;">Red Blue 1</span> </div></div></blockquote><div> </div><div><br /></div><div><div><ul style="text-align: left;"><li>Print the whole file:</li></ul></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><b style="font-family: courier;">$ awk '{print $0}' file.txt</b></div></div><div><div><font face="courier">Red Blue 1</font></div></div><div><div><font face="courier">Orange Pink 2</font></div></div><div><div><font face="courier">Yellow Black 3</font></div></div><div><div><font face="courier">Green White 4</font></div></div><div><div><font face="courier" style="line-height: 1;">Red Purple 5</font> </div></div></blockquote><div><div> </div><div><br /></div><div><ul style="text-align: left;"><li>Print the first column of the file:</li></ul></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><div><div style="text-align: left;"><font face="courier"><b>$ awk '{print $1}' file.txt</b></font></div></div></blockquote><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><font face="courier">Red</font></div><div><font face="courier">Orange</font></div><div><font face="courier">Yellow</font></div><div><font face="courier">Green</font></div><div><font face="courier">Red </font></div></blockquote><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><div><div style="text-align: left;"> </div></div></blockquote><div><br /></div><div><ul style="text-align: left;"><li>Print the second column of the file:</li></ul></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><div><div style="text-align: left;"><font face="courier"><b>$ awk '{print $2}' file.txt</b></font></div></div></blockquote><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><font face="courier">Blue</font></div></div><div><div><font face="courier">Pink</font></div></div><div><div><font face="courier">Black</font></div></div><div><div><font face="courier">White</font></div></div><div><div><font face="courier">Purple</font></div></div></blockquote><div><br /></div><div><br /></div><div><ul style="text-align: left;"><li>Preprocessing: add an header to your output:</li></ul></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><div><div style="text-align: left;"><font face="courier"><b>$ awk 'BEGIN {print "Second column:"} {print $2}' file.txt</b></font></div></div></blockquote><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><font face="courier">Second column:</font></div><div><font face="courier">Blue</font></div><div><font face="courier">Pink</font></div><div><font face="courier">Black</font></div><div><font face="courier">White</font></div><div><font face="courier">Purple </font></div></blockquote><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><div><div style="text-align: left;"> </div></div></blockquote><div><br /></div><div><ul style="text-align: left;"><li>Postprocessing: add a footer to your output:</li></ul></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><font face="courier"><b>$ awk '{print $2} END {print "End of file!"}' file.txt</b></font></div><div><font face="courier">Blue</font></div><div><font face="courier">Pink</font></div><div><font face="courier">Black</font></div><div><font face="courier">White</font></div><div><font face="courier">Purple</font></div><div><font face="courier">End of file!</font> </div></blockquote><div><br /></div><div><br /></div><div><ul style="text-align: left;"><li>Substitution: change the field separator (FS) with an output field separator (OFS) in file:</li></ul></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><font face="courier"><b>$ awk 'BEGIN{FS=" "; OFS="-"} {print $1,$2,$3}' file.txt</b></font></div></div><div><div><font face="courier">Red-Blue-1</font></div></div><div><div><font face="courier">Orange-Pink-2</font></div></div><div><div><font face="courier">Yellow-Black-3</font></div></div><div><div><font face="courier">Green-White-4</font></div></div><div><font face="courier">Red-Purple-5 </font></div></blockquote><div> </div><div> </div></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-34891252781234460552020-06-18T10:55:00.001+02:002020-06-18T10:56:26.872+02:00Learn grep command by examples<div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5pqdUrz8w03dmMxnw1D1K1ujb8USnKLLIivKzPcltkQMQXgkmybVzbObNJ_Wt0R__HCdUZYIFvfru7VZG2nAHsbyRiNQDy6Tnu1r1vcxhmzjYedmk1lyTZK0us5H0X5sj1Y21DRBJaqbh/s994/Schermata+2020-06-18+alle+10.47.55.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="390" data-original-width="994" height="157" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5pqdUrz8w03dmMxnw1D1K1ujb8USnKLLIivKzPcltkQMQXgkmybVzbObNJ_Wt0R__HCdUZYIFvfru7VZG2nAHsbyRiNQDy6Tnu1r1vcxhmzjYedmk1lyTZK0us5H0X5sj1Y21DRBJaqbh/w400-h157/Schermata+2020-06-18+alle+10.47.55.png" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div></div><font face="courier"><div><font face="courier"><br /></font></div><b>grep</b></font> command can be used to search the named input FILEs, or standard input if no files are named, for lines containing a match to the given PATTERN. By default, grep prints the matching lines.<div><pre><br /></pre><b><font size="5">Example usages.</font></b></div><div><b><font size="5"><br /></font></b></div><blockquote style="border: none; margin: 0 0 0 40px; padding: 0px;"><div style="text-align: left;">Suppose you have these files:</div></blockquote><div></div><div><div style="text-align: left;"><br /></div></div><div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><br /></div><div><table border="1" bordercolor="#888" cellspacing="0" style="border-collapse: collapse; border-color: rgb(136, 136, 136); border-width: 1px;"><tbody><tr><td style="min-width: 60px;"><font face="courier"> <b>file.txt<span> </span><span> </span></b></font></td><td style="min-width: 60px;"><font face="courier"><b> file2.txt<span> </span><span> </span></b></font></td></tr><tr style="line-height: 1.5;"><td style="line-height: 1.5; min-width: 60px;"><div style="line-height: 1.5;"><font face="courier" style="line-height: 1.5;">word1</font></div><div style="line-height: 1.5;"><font face="courier" style="line-height: 1.5;">word2</font></div><div style="line-height: 1.5;"><font face="courier" style="line-height: 1.5;">word3</font></div><div style="line-height: 1.5;"><font face="courier" style="line-height: 1.5;">hello world!</font></div><div style="line-height: 1.5;"><font face="courier" style="line-height: 1.5;">word5</font></div><div style="line-height: 1.5;"><font face="courier" style="line-height: 1.5;">word6</font></div></td><td style="line-height: 1.5; min-width: 60px;"><div style="line-height: 1.5;"><font face="courier" style="line-height: 1.5;">word1</font></div><div style="line-height: 1.5;"><font face="courier" style="line-height: 1.5;">word2</font></div><div style="line-height: 1.5;"><font face="courier" style="line-height: 1.5;">hello friend!</font></div><div style="line-height: 1.5;"><font face="courier" style="line-height: 1.5;">word4</font></div><div style="line-height: 1.5; text-align: justify;"><font face="courier" style="line-height: 1.5;">word5</font></div><font face="courier" style="line-height: 1.5;">word6</font> </td></tr></tbody></table></div><div><b><br /></b></div></blockquote></div><div><div><font size="5"><div><br /></div></font><div><ul style="text-align: left;"><li><span style="background-color: white;">Print the lines containing "hello" from file.txt:</span></li></ul></div><div><span style="background-color: white;"><br /></span></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><span style="background-color: white;"><div style="text-align: justify;"><b style="font-family: courier;">$ grep 'hello' file.txt</b></div></span></div></div><div><div><span style="background-color: white;"><font face="courier"><div style="text-align: justify;">hello world!</div></font></span></div></div></blockquote><div><div><br /><br /><ul style="text-align: left;"><li>Search in multiple files:</li></ul></div><div><br /></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><font face="courier"><b>$ grep 'hello' file.txt file2.txt</b></font></div></div><div><div><div><font face="courier">file.txt:hello world!</font></div></div></div><div><div><div><font face="courier">file2.txt:hello friend!</font></div></div></div></blockquote><div><div><div><br /></div><br /><ul style="text-align: left;"><li>For multiple strings:</li></ul></div><div><br /></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><font face="courier"><b>$ grep 'hello world' file.txt</b></font></div></div><div><div><font face="courier">hello world!</font></div></div></blockquote><div><div><br /><br /><ul style="text-align: left;"><li>Alternative commands:</li></ul></div><div><br /></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><font face="courier"><b>$ cat file.txt | grep 'hello'</b></font></div></div><div><div><font face="courier"><b>$ grep -i 'hello' file.txt</b></font></div></div></blockquote><div><div><br /><br /><ul style="text-align: left;"><li>Search recursively for a string inside files in directory:</li></ul></div><div><br /></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><font face="courier"><b>$ grep -r "hello" /home/abc</b></font></div></div><div><div><font face="courier">/home/file.txt:hello world!</font></div></div></blockquote><div><div><br /></div><div><br /></div><div><ul style="text-align: left;"><li>Same result, without showing file name:</li></ul></div><div><br /></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><font face="courier"><b>$ grep -h -R "hello" /home/abc</b></font></div></div><div><div><font face="courier">hello world!</font></div></div></blockquote><div><div><br /><br /><ul style="text-align: left;"><li>Print the number of lines in file, containing the string:</li></ul></div><div><br /></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><font face="courier"><b>$ grep -c 'hello' file.txt</b></font></div></div><div><div><font face="courier">1</font></div></div></blockquote><div><div><br /><br /><ul style="text-align: left;"><li>Print also the line number in file, where the string is found:</li></ul></div><div><br /></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><font face="courier"><b>$ grep -n 'hello' file.txt</b></font></div></div><div><div><font face="courier">4:hello world!</font></div></div></blockquote><div><div><br /><br /><ul style="text-align: left;"><li>Invert match: print <span style="background-color: white; color: #212529; font-family: montserrat, "helvetica neue", sans-serif; font-size: 14px;">only those lines that do not contain the given word:</span></li></ul></div><div><font color="#212529" face="montserrat, helvetica neue, sans-serif"><span style="font-size: 14px;"><br /></span></font></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><div style="text-align: justify;"><font face="courier"><b style="background-color: white;">$ grep -v 'hello' file.txt</b></font></div></div></div><div><div><div style="text-align: justify;"><font face="courier" style="background-color: white;">word1</font></div></div></div><div><div><div style="text-align: justify;"><font face="courier" style="background-color: white;">word2</font></div></div></div><div><div><div style="text-align: justify;"><font face="courier" style="background-color: white;">word3</font></div></div></div><div><div><div style="text-align: justify;"><font face="courier" style="background-color: white;">word5</font></div></div></div><div><div><div style="text-align: justify;"><font face="courier" style="background-color: white;">word6</font></div></div></div></blockquote><div><div><div><br /></div><br /><ul style="text-align: left;"><li>List all the files with .txt extension containing the string:</li></ul></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><br /></div></div><div><div><font face="courier"><b>$ grep -l 'hello' *.txt</b></font></div></div><div><div><font face="courier">file.txt</font></div></div></blockquote><div><br /></div><div><br /></div><div><ul style="text-align: left;"><li>Search exactly for a string inside a file:</li></ul></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><b><font face="courier">$ grep -x 'hello world' file.txt</font></b></div></div><div><div><br /></div></div><div><div><font face="courier">(give no results)</font></div></div><div><div><font face="courier"><br /></font></div></div><div><div><b><font face="courier">$ grep -x 'hello world!' file.txt</font></b></div></div><div><div><font face="courier">hello world!</font> </div></div></blockquote><div><div><div><br /><br /><ul style="text-align: left;"><li>Use colors to highlight matches:</li></ul></div><div><br /></div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><font face="courier"><b>$ grep --color hello file.txt</b></font></div></div><div><div><font face="courier"><font color="#f57c00"><b>hello</b></font> world!</font></div></div></blockquote><div><font face="courier"><br /></font></div><div><font face="courier"><br /></font></div><div><font face="courier"><br /></font></div><div><font face="courier"><br /></font></div></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-73731055435311016972020-06-17T12:11:00.000+02:002020-06-17T12:11:45.639+02:00Scaling applications on Openshift<br /><div style="text-align: center;"><img alt="What is this concept of OpenShift? Should you use it? - Techfameplus" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEin_KfqMJOZbPhUrdvcqTPOdLS1qHO8-JEyGYTQvsAffJ4eXkxsZPMOjeODN3dB8OE_BJCEVuLgLQLJvVfeLUiVpjDLBwXp9KESmkV5fJWUYoP8C3kBGhw8DmdrRZDaToi8oAG7f_UCWXyryffprMD8YoDzjRxXR36Ay2rNB0cgfH0Vo_82vMmvW93HLhaktZu_oT5yc2dTUHuBPU1_WKDnZyuawOHku2zQJg=" /></div><div>In this post we will see how to scale an application deployment on Openshift.<br /><br />There are essentially two ways to scale an application:<br /><ul style="text-align: left;"><li>manually increasing the number of replicas of pods</li><li>configuring an autoscaling policy to automatically react and increase and decrease the number of pods based on traffic or resources consumption </li></ul>Let's see both in details. <div><br /></div><div><font size="5"><b>Manually control the number of replicas of a pod.</b></font><div class="page" title="Page 236"><div class="layoutArea"><div class="column" style="line-height: 1;"><br />The number of replicas can be changed dynamically using the oc scale command.<br /><br />First of all, get the name of your deployment configuration:<p><span style="font-family: overpass; font-size: 10pt; font-weight: 300;"></span></p><pre style="background: none rgb(248, 248, 248); border: 0px; box-sizing: border-box; line-height: 1; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 15px; position: relative; tab-size: 4;"><span style="line-height: 1; white-space: normal;"><font face="courier" style="line-height: 1;">$ </font></span>oc get dc </pre><pre style="background: none rgb(248, 248, 248); border: 0px; box-sizing: border-box; line-height: 1; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 15px; position: relative; tab-size: 4;">NAME <span style="line-height: 1;"> <span style="line-height: 1;"> </span><span style="line-height: 1;"> </span></span>REVISION <span style="line-height: 1;"> </span>DESIRED <span style="line-height: 1;"> </span>CURRENT <span style="line-height: 1;"> </span>TRIGGERED BY</pre><pre style="background: none rgb(248, 248, 248); border: 0px; box-sizing: border-box; line-height: 1; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 15px; position: relative; tab-size: 4;">myapplication <span style="line-height: 1;"> </span>1 <span style="line-height: 1;"> </span><span style="line-height: 1;"> </span><span style="line-height: 1;"> </span>3 <span style="line-height: 1;"> </span><span style="line-height: 1;"> </span><span style="line-height: 1;"> </span>3 <span style="line-height: 1;"> </span><span style="line-height: 1;"> <span> </span></span>config,image(scaling:latest)</pre><br /></div>
</div>
</div>
<div class="page" title="Page 236">
<div class="layoutArea">
<div class="column">
Scale the deployment to 5 replicas for the pods:<p><span style="background-color: #e9f6fa; font-family: liberationmono; font-size: 8pt;"></span></p><pre style="background: none rgb(248, 248, 248); border: 0px; box-sizing: border-box; line-height: 1; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 15px; position: relative; tab-size: 4;"><span style="line-height: 1; white-space: normal;"><font face="courier" style="line-height: 1;">$ </font></span>oc scale --replicas=5 dc myapplication</pre><div class="column"><br /></div>Check the number of replicas:</div><div class="column"><br /></div><div class="column"><pre style="background: none rgb(248, 248, 248); border: 0px; box-sizing: border-box; line-height: 1; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 15px; position: relative; tab-size: 4;"><span style="line-height: 1; white-space: normal;"><font face="courier" style="line-height: 1;">$ </font></span>oc describe dc myapplication | grep Replicas</pre><pre style="background: none rgb(248, 248, 248); border: 0px; box-sizing: border-box; line-height: 1; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 15px; position: relative; tab-size: 4;">Replicas: 5</pre><pre style="background: none rgb(248, 248, 248); border: 0px; box-sizing: border-box; line-height: 1; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 15px; position: relative; tab-size: 4;">Replicas: 5 current / 5 desired<span style="font-family: liberationmono; font-size: 8pt; font-weight: 700;"> </span></pre></div><font size="5"><b><div class="layoutArea"><font size="5"><b><br /></b></font></div>Configure an Autoscaling policy.</b></font></div><div class="layoutArea"><font size="5"><b><br /></b></font></div></div>OpenShift can autoscale a deployment configuration based on current load on the application pods, thanks to a <b>HorizontalPodAutoscaler</b> resource type, that uses performance metrics.</div><div><br /><div>
<div class="page" title="Page 236">
<div class="layoutArea">
<div class="column">
To create a <b>HorizontalPodAutoscaler</b> you can use the <font face="courier">oc autoscale </font>command, for example:<pre><span style="background-color: #e9f6fa; font-family: liberationmono; font-size: 8pt;"><pre style="background: none rgb(248, 248, 248); border: 0px; box-sizing: border-box; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 15px; position: relative; tab-size: 4;"><span style="white-space: normal;"><font face="courier" size="2">$ oc autoscale dc/myapplication --min 2 --max 8 --cpu-percent=90</font></span></pre></span></pre>
</div>
</div>
</div>
<br />The previous command creates a <b>HorizontalPodAutoscaler</b> resource that changes the number of replicas of <font face="courier">myapplication</font> deployment configuration, in order to keep its pods under 90% of their total requested CPU usage. <br /><br />To use the <b>HorizontalPodAutoscaler</b> resource, you have to define resource requests for the reference performance metric of your services. </div></div></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-47396827642823222812020-06-01T22:58:00.002+02:002020-06-01T22:58:35.195+02:00Build and Push Docker Images with JenkinsIn this guide we'll see how to build a Docker image and push it to a Docker registry using a Declarative Pipeline in Jenkins.<div><br /><div><br /><div style="text-align: center;"><img alt="Jenkins on Docker for .NET projects – Tech Blog by Alex Smagin" height="262" src="https://alexandersmagin.files.wordpress.com/2017/04/untitled1.png" width="320" /></div><div><br /></div><div>What you need:</div><div><div><ul style="text-align: left;"><li>A Jenkins instance</li><li>Docker Plugin: <font face="courier" size="2"><a href="https://plugins.jenkins.io/docker-workflow" rel="nofollow" target="_blank">https://plugins.jenkins.io/docker-workflow</a></font></li><li>A code repository with a Dockerfile</li></ul><div><br /></div><div>In our post we'll use a simple "Hello World!" (written in Node.JS) application as an example.</div></div><div><br /></div><div>Steps of the pipeline:</div><div><ol style="text-align: left;"><li>Clone the source repository</li><li>Build the application</li><li>Build Docker image </li><li>Push image to Docker registry</li></ol><div><font size="4"><b><br /></b></font></div><div><font size="4"><b>Source code.</b></font></div></div><div><font size="4"><b><br /></b></font></div><div>Our application source code is organized as follows:</div><div><span style="font-family: "courier new", courier, monospace;"><br /></span></div><div><font size="2"><span style="font-family: "courier new", courier, monospace;">simple-nodejs-app</span><br /><span style="font-family: "courier new", courier, monospace;">├── Dockerfile</span><br /><span style="font-family: "courier new", courier, monospace;">├── index.js</span><br /><span style="font-family: "courier new", courier, monospace;">└── package.json</span></font></div><div><br /></div><div>The content of the Dockerfile is the following:</div><div><br /></div><div><pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); color: black; font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 684.023px;"><code style="color: black; overflow-wrap: normal;">
FROM node:alpine
ADD . /
USER node
EXPOSE 3000
CMD npm run start
</code></pre></div><div><br /></div><div>We want to build an image called <font face="courier">mynode:latest</font> and push it to <font face="courier">https://myregistry</font>.</div><div><br /></div><div><br /></div><div><font size="4"><b>Credentials.</b></font></div><div><font size="4"><b><br /></b></font></div><div>Create a <font face="courier" size="2">credentials</font> resource on Jenkins, to access the Docker registry:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPdkCzLpmbnIUrS_UFOoibRUm5ZRrsV-rKPamp-8IzNaY5NWSqkxY3yiIpwqgAZC_hyphenhyphenwyp02UJi0FYDka64X5l9hg7vI23YHK2WMdvyrbA8Ba1V4IF1rrwkURHOaPJJPBTRgdt0zhcUGXA/" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="298" data-original-width="1214" height="156" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPdkCzLpmbnIUrS_UFOoibRUm5ZRrsV-rKPamp-8IzNaY5NWSqkxY3yiIpwqgAZC_hyphenhyphenwyp02UJi0FYDka64X5l9hg7vI23YHK2WMdvyrbA8Ba1V4IF1rrwkURHOaPJJPBTRgdt0zhcUGXA/w640-h156/Schermata+2020-06-01+alle+22.39.59.png" width="640" /></a></div><div><br /></div><div>In this example, we've named the credentials resource <font face="courier">registrycredentials</font></div><div><br /></div><div><code style="color: black; overflow-wrap: normal;"><br /></code></div><b><font size="4">How to build and push a Docker Image with Jenkins?</font></b><div><font size="4"><b><br /></b></font><div>This table summarizes how to translate Docker commands in Jenkins pipeline instructions:</div><div><span style="font-size: large;"><font size="3"><br /></font></span><div><code style="color: black; overflow-wrap: normal;"><br /></code></div><div><code style="color: black; overflow-wrap: normal;"><table border="1" bordercolor="#888" cellspacing="0" style="border-collapse: collapse; border-color: rgb(136, 136, 136); border-width: 1px;"><tbody><tr><td style="min-width: 60px;"><span style="background-color: white;"><font color="#b51200" size="4"><b>Docker command </b> </font></span></td><td style="min-width: 60px;"><span style="background-color: white;"><font color="#b51200" size="4"><b>Equivalent in Jenkins pipeline </b></font></span></td></tr><tr><td style="min-width: 60px;"><br />docker build myregistry/mynode:latest<br /> </td><td style="min-width: 60px;">docker.build("myregistry/mynode:latest")</td></tr><tr><td>docker push myregistry/mynode:latest</td><td><br />withDockerRegistry(<br /><span> </span>credentialsId: 'registrycredentials', <br /><span> </span>url: "https://myregistry") {<br /><span> </span><span> </span>docker_image.push("latest")<br />}<br /><br /></td></tr></tbody></table></code></div><font size="4"><b><div><font size="4"><b><br /></b></font></div><div><font size="4"><b><br /></b></font></div>Complete source code of the pipeline.</b></font></div><div><font size="4"><b><br /></b></font></div><div>Now that we have all the resources, let's see the complete pipeline:</div><div><br /><div><code style="color: black; overflow-wrap: normal;"><pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); color: black; font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 684.023px;"><code style="color: black; overflow-wrap: normal;"><br class="Apple-interchange-newline" />pipeline {
agent any
stages {
stage('Clone sources') {
steps {
git credentialsId: 'mygitcredentials', branch: 'develop', url: 'https://git.mycompany.com/simple-node-js-app.git'
}
}
stage('Install npm packages') {
steps {
nodejs(nodeJSInstallationName: 'node13') {
sh 'npm i'
sh 'npm rebuild node-sass'
}
}
}
stage('Build app') {
steps {
nodejs(nodeJSInstallationName: 'node13') {
sh 'npm run build:dev'
}
}
}
stage("Build Docker image") {
steps {
script {
docker_image = docker.build("myregistry/mynode:latest")
}
}
}
stage("Push images") {
steps {
script {
withDockerRegistry(credentialsId: 'registrycredentials', url: "https://myregistry") {<br /> docker_image.push("latest")
}
}
}
}</code></pre></code></div><div><code style="color: black; overflow-wrap: normal;"><br /></code></div></div></div></div><div><span style="overflow-wrap: normal;">If you want to learn more about Docker and Jenkins, visit our<font face="monospace"> </font></span><a href="https://www.blogger.com/#">CICD</a> and <a href="https://www.blogger.com/#">DevOps</a> pages!</div><div><code style="color: black; overflow-wrap: normal;"><br /></code></div><div><code style="color: black; overflow-wrap: normal;"><br /></code></div><div><code style="color: black; overflow-wrap: normal;"><br /></code></div><div><code style="color: black; overflow-wrap: normal;"><br /></code></div><div><code style="color: black; overflow-wrap: normal;"><br /></code></div></div></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-37572565773579503922020-05-26T22:06:00.001+02:002020-05-26T22:06:24.139+02:00Execute commands inside Docker container in Jenkins<div style="text-align: center;"><img alt="Run Jenkins Automation Server as Docker Image – Rob Juurlink" height="285" src="https://juur.link/wp-content/uploads/2018/12/1DpUVWTopUJr6ZvmPiapLCw.png" width="400" /></div><div><br /></div>This guide will show you how to perform some build steps or command inside a Docker container, using Declarative Pipelines in Jenkins.<div><br /></div><div>Imagine you have to build a special application, which requires lots of libraries and dependencies, at specific versions, and you can't install them on your Jenkins machines.</div><div>How to build it?</div><div><br /></div><div>Using a Docker container!</div><div><div><br /></div><div>First of all, you need to install the Docker Pipeline plugin:</div><div><a href="https://plugins.jenkins.io/docker-workflow/">https://plugins.jenkins.io/docker-workflow/</a></div><div><br /></div><div>To use the plugin with a Declarative pipeline, add this stage:</div></div><div><br /></div><div><div><font face="courier" size="2">stage('Run command inside a container') {</font></div><div><font face="courier" size="2"> steps {</font></div><div><font face="courier" size="2"> script {</font></div><div><font face="courier" size="2"> withDockerContainer("my-custom-image:1.0") {</font></div><div><font face="courier" size="2"><span> </span><span> </span><span>echo 'This command is executed inside the container!'</span></font></div><div><font face="courier" size="2"> }</font></div><div><font face="courier" size="2"> }</font></div><div><font face="courier" size="2"> }</font></div><div><font face="courier" size="2">}</font></div></div><div><br /></div>Takes the image <font face="courier">my-custom-image:1.0</font> which must already have been pulled locally, and starts a container based on that image. Runs all nested steps inside that container. The workspace is mounted read-write into the container.<div><br /></div><div><b><font size="4">Example with Python</font>:</b></div><div><br /></div><div><div><font face="courier" size="2">pipeline {</font></div><div><font face="courier" size="2"> agent any </font></div></div><div><div><font face="courier" size="2"> stages {</font></div><div><span style="font-family: courier; font-size: small;"> </span></div><div><font face="courier" size="2"> stage('Clone sources') {</font></div><div><font face="courier" size="2"> steps {</font></div><div><font face="courier" size="2"> git credentialsId: 'git-creds', url: 'https://git.example.com/myrepo.git'</font></div><div><font face="courier" size="2"> } </font></div><div><font face="courier" size="2"> }</font></div><div><font face="courier" size="2"><br /></font></div><div><font face="courier" size="2"> <font color="#9e9e9e">//build a Docker image with a Dockerfile from sources</font><br /></font></div><div><font face="courier" size="2"> stage("Build Docker images") {</font></div><div><font face="courier" size="2"> steps {</font></div><div><font face="courier" size="2"> script {</font></div><div><font face="courier" size="2"> docker_image_dev = docker.build(<font color="#b51200">"my-custom-python:3.6"</font>)</font></div><div><font face="courier" size="2"> }</font></div><div><font face="courier" size="2"> }</font></div><div><font face="courier" size="2"> }</font></div><div><font face="courier" size="2"><br /></font></div><div><font face="courier" size="2"> <font color="#9e9e9e">//Run tests inside a container based on previous image</font><br /></font></div><div><font face="courier" size="2"> stage('Run Tests: Coverage') {</font></div><div><font face="courier" size="2"> steps {</font></div><div><font face="courier" size="2"> script {</font></div><div><font face="courier" size="2"> withDockerContainer(<font color="#b51200">"my-custom-python:3.6"</font>) {</font></div><div><font face="courier" size="2"> sh 'pwd'</font></div><div><font face="courier" size="2"> sh 'pylint source | tee test/results/pylint.txt'</font></div><div><font face="courier" size="2"> }</font></div><div><font face="courier" size="2"> }</font></div><div><font face="courier" size="2"> }</font></div><div><font face="courier" size="2"> }</font></div></div><div><font face="courier" size="2"><br /></font></div><div><font face="courier" size="2"> }</font></div><div><font face="courier" size="2">}</font></div><div><font face="courier"><br /></font></div><div><font face="courier"><br /></font></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-91766600723107209942020-05-15T16:28:00.002+02:002020-05-15T16:28:45.937+02:00Understanding ConfigMap resources on Kubernetes<div style="text-align: center;"><img alt="An Introduction to Kubernetes for Data Scientists - ML in Production" height="340" src="https://i1.wp.com/mlinproduction.com/wp-content/uploads/2019/04/kubernetes_logo.png?fit=730%2C389&ssl=1" width="640" /></div><font size="2"><div><font size="2"><br /></font></div>ConfigMap resources are similar to Secrets, but they are suitable to hold no
sensitive information.
</font><div>
<font size="2">As the name suggest, they provide a way to inject configurations into
containers in order to set those configuration data separately from the
application code.
</font></div>
<div>
<font size="2">For example, you can use ConfigMaps to store information about server
addresses to connect to.
</font></div>
<div>
<font size="2"><br />
</font></div>
<div>
<b><font size="4">Example.</font></b>
</div>
<div>
<font size="2"><b><br /></b>
</font></div>
<div>
<div class="page" title="Page 177">
<div class="layoutArea">
<div class="column">
<font size="2">1) Create a configmap, to store a server url:
</font><p>
<font size="2"><span style="font-weight: 700;"><font face="courier">kubectl create configmap backend-config
--from-literal=serverAddress=171.24.21.41</font></span>
</font></p>
<div class="column">
<font size="2"><br />
</font></div>
<font size="2">Review the configmap:
</font></div>
<div class="column">
<font size="2"><b><font face="courier"><br /></font></b>
</font></div>
<div class="column">
<font size="2"><b><font face="courier">kubectl get configmaps backend-config -o yaml</font></b>
</font></div>
<font size="2"><font face="courier">apiVersion: v1<br />
data: <br /> key1: serverAddress=171.24.21.41 </font>
</font></div>
<div class="layoutArea">
<font size="2"><font face="courier">kind: ConfigMap<br />
metadata: <br /> creationTimestamp:
2020-05-15T16:03:31Z </font>
</font></div>
<div class="layoutArea">
<font size="2"><font face="courier"> name: backend-config<br /> namespace:
my-namespace </font>
</font></div>
<div class="layoutArea">
<font size="2"><font face="courier"> resourceVersion: "4637" </font>
</font></div>
<div class="layoutArea">
<font size="2"><font face="courier"> ...</font>
</font></div>
<div class="layoutArea">
<font size="2"><font face="courier"><br /></font>
</font></div>
<div class="layoutArea">
<font size="2"><font face="courier"><br /></font>
</font></div>
<div class="layoutArea">
<font size="2"><font face="courier"><br /></font>
</font></div>
<font size="2">2) To use the ConfigMap inside a pod, write a definition like <b>pod-definition.yaml</b>:
</font></div>
</div>
<div class="page" title="Page 177">
<font size="2"><b><br /></b>
</font></div>
<div class="page" title="Page 177">
<div class="page" title="Page 177">
<font size="2"><font face="courier">apiVersion: v1</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier">kind: Pod</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier">metadata:</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"> name: mypod</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"> namespace: my-namespace</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier">spec:</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"> containers:</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"> - name: myapp</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"> image: myapp:0.1.0</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"> env:</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"> - name: SERVER_ADDRESS</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"> valueFrom:</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"> configMapKeyRef:</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"> name:
backend-config</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"> key: serverAddress</font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"> restartPolicy: Always</font>
</font></div>
</div>
<div class="page" title="Page 177">
<font size="2"><br />
</font></div>
<div class="page" title="Page 177">
<font size="2"><br />
</font></div>
<div class="page" title="Page 177"><font size="2">3) Create the pod:</font></div>
<div class="page" title="Page 177">
<font size="2"><br />
</font></div>
<div class="page" title="Page 177">
<font size="2"><font face="courier"><b>kubectl apply -f pod-definition.yaml</b></font>
</font></div>
<div class="page" title="Page 177">
<font size="2"><br />
</font></div>
<div class="page" title="Page 177">
<font size="2"><br />
</font></div>
<div class="page" title="Page 177">
<font size="2">4) Now you can read the
<font face="courier">SERVER_ADDRESS</font> configuration value inside you
pod as an <b>environment variable</b>.
</font></div>
<div class="page" title="Page 177"><br /></div><div class="page" title="Page 177"><br /></div>
PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-13849242407737933392020-05-13T22:42:00.001+02:002020-05-13T23:07:10.874+02:00Managing sensitive information on Openshift<div style="text-align: center;"><img alt="Improve Container Security - Red Hat OpenShift" height="200" src="https://www.openshift.com/hubfs/images/icons/red-circle_lock.svg" width="200" /><img alt="File:OpenShift-LogoType.svg - Wikipedia" height="200" src="https://upload.wikimedia.org/wikipedia/commons/3/3a/OpenShift-LogoType.svg" width="186" /></div><div><br /></div>Kubernetes, and Openshift too, offer a resource of type <font face="courier">Secret</font> to hold sensitive information such as passwords and credentials. <div>Secrets can be mounted into containers as they are backed by a temporary file storage, and can be shared among the resources of the same namespace.<div><br /></div><div>Secrets must be created before the pods that use them.</div><div><br /></div><div><br /></div><div><b style="font-size: large;">Example.</b></div><div><br /></div><div>Imagine you have to connect to a database from a pod inside Openshift.</div><div>As a best practice, you can't store the credentials to access that database on source code.</div><div>Le't create a secret to hold them:</div><br /><font face="courier" size="2"><b>oc create secret generic mysecret \ </b></font><div><font face="courier" size="2"><b>--from-literal='database-user'='admin' \ </b></font></div><div><font face="courier" size="2"><b>--from-literal='database-password'='mypassword123'</b></font></div><div><br /><font face="courier" size="2">secret "mysecret" created </font></div><div><br /></div><div>If you inspect the secret, you should see that credentials are not stored in clear text, but in <font face="courier">base64</font> format:</div><div><br /></div><font face="courier" size="2"><div style="text-align: justify;"><b>oc get secret mysecret -o yaml </b></div></font><div><div style="text-align: justify;"><span style="font-family: courier; font-size: small;"><br /></span></div><div><div style="text-align: justify;"><span style="font-family: courier; font-size: small;">apiVersion: v1</span></div><font face="courier" size="2"><div style="text-align: justify;">data: </div></font></div><div style="text-align: justify;"><font face="courier" size="2"> database-password: bXlwYXNzd29yZDEyMw==</font></div><div><div style="text-align: justify;"><span style="font-family: courier; font-size: small;"> database-user: YWRtaW4= </span></div><font face="courier" size="2"><div style="text-align: justify;">kind: Secret </div><div style="text-align: justify;">... </div></font> </div></div><div><br /></div><div>Next step is to reference the secret inside the pod definition, <font face="courier">mypod.yaml</font>:</div><div><pre style="background: none rgb(248, 248, 248); border: 0px; box-sizing: border-box; font-size: 14px; margin-bottom: 20px; margin-top: 20px; overflow-x: auto; padding: 15px; position: relative; tab-size: 4;"><code class="language-yaml" data-lang="yaml" style="background: none rgb(247, 247, 247); border: 0px; box-sizing: border-box; display: inline-block; margin: 0px; padding: 0px; vertical-align: baseline;"><font face="courier"><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">apiVersion</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>v1<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"></span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">kind</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>Pod<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"></span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">metadata</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">name</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>mypod<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"></span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">spec</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">containers</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>- <span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">name</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>mycontainer<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">image</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>app:1.0<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">env</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>- <span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">name</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>DB_USERNAME<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">valueFrom</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">secretKeyRef</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">name</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>mysecret<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">key</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>database-user<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>- <span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">name</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>DB_PASSWORD<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">valueFrom</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">secretKeyRef</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">name</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>mysecret<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">key</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> database-</span>password<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">
</span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span><span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;">restartPolicy</span>:<span style="background: none; border: 0px; box-sizing: border-box; margin: 0px;"> </span>Never</font></code></pre><div>Create the pod:</div><div><br /></div><div><font face="courier" size="2"><b>oc create -f mypod.yaml</b></font></div><div><br /></div>
Inside the pod, the credentials are injected as environment variables, so if you enter in the pod and print them, you should see something like these:</div><div><br /></div><font face="courier" size="2"><b>echo $DB_USERNAME</b> </font></div><div><font face="courier" size="2">admin</font><br /><br /><font face="courier" size="2"><b>echo $DB_PASSWORD</b> </font></div><div><font face="courier" size="2">mypassword123</font></div><div><br /></div><div><br /></div><div><br /><div>
That's all!
</div></div><div><br /></div><div><br /></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-70066756588170022782020-05-12T23:00:00.001+02:002020-05-12T23:00:21.039+02:00Creating custom roles on Google Cloud PlatformYou have your beautiful project on GCP, and you've granted access to you colleagues.<div>You have also specified which roles they need to do their work, using GCP predefined roles, but after some time, visiting the IAM section on GCP web console, you see this:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0iVgOvkPLFbrvyEze8VRTnFe0WbfDoxbo7mDE3y_ue3S4HEC1RoXFStS4-QMBMyzWDIeYN578NH0IbzLk0SaFvdL09Lki9Wl2TKJ3o6ApnFwWutR1rnw0z3fOS21xZnOJbuDsDDexGG7T/" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="126" data-original-width="538" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0iVgOvkPLFbrvyEze8VRTnFe0WbfDoxbo7mDE3y_ue3S4HEC1RoXFStS4-QMBMyzWDIeYN578NH0IbzLk0SaFvdL09Lki9Wl2TKJ3o6ApnFwWutR1rnw0z3fOS21xZnOJbuDsDDexGG7T/w640-h149/Schermata+2020-05-12+alle+17.12.01.png" width="640" /></a></div><div><br /></div><div>Inspecting the over granted permissions you find out that only 12 of 247 permissions are effectively used:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC6ZOX9UQGF9r8Plw1iF1SDEVxYTH9NH34qCJM4RC4reJ6yROBBxXO8aH6Pbk15_iX98clORd5LkauZSuMdI5N2FKgo_qXN0JLCH3PTXoUc00omvFpATRP8sbgBoDWDLELkpnJGasP7hd0/" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="774" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC6ZOX9UQGF9r8Plw1iF1SDEVxYTH9NH34qCJM4RC4reJ6yROBBxXO8aH6Pbk15_iX98clORd5LkauZSuMdI5N2FKgo_qXN0JLCH3PTXoUc00omvFpATRP8sbgBoDWDLELkpnJGasP7hd0/w640-h444/Schermata+2020-05-12+alle+17.18.19.png" width="640" /></a></div><div><br /></div><div>How to restrict access if predefined or primitive roles are too wide? </div><div><br /></div><div><br /></div><div><b><font size="4">Solution: create a custom role.</font></b></div><div><b><font size="4"><br /></font></b></div>Custom roles enable you to enforce the principle of least privilege, ensuring that the user and service accounts in your organization have only the permissions essential to performing their intended functions.<div><br /></div><div>Create a <font face="courier">custom-dev-role.yaml</font> file:</div>
<pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 652.988px;"><code style="overflow-wrap: normal;">
title: "Custom Dev Role"
description: "Custom role for developers"
stage: "GA"
includedPermissions:
#General permissions
- resourcemanager.projects.get
#GKE permissions
- container.clusters.get
- container.clusters.list
- container.deployments.create
- container.deployments.get
- container.deployments.update
- container.horizontalPodAutoscalers.get
- container.namespaces.get
- container.pods.list
- container.services.create
- container.services.get
- container.services.update
# GCR and GCS
- storage.buckets.get
- storage.buckets.getIamPolicy
- storage.objects.create
- storage.objects.get
- storage.objects.getIamPolicy
- storage.objects.list
- storage.objects.update
</code></pre><div><br /></div>
Use <font face="courier">gcloud</font> cli to create the role in your project:<pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 652.988px;"><code style="overflow-wrap: normal;">
gcloud iam roles create custom_dev_role \
--project=my-project \
--file=custom-dev-role.yaml
</code></pre><div><br /></div><div>If the command is successful, you should see something like this:</div>
<pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 652.988px;"><code style="overflow-wrap: normal;">
Created role [custom_dev_role].
description: Custom role for developers
etag: LwP9dL8kXGc=
includedPermissions:
- container.clusters.get
- container.clusters.list
- container.deployments.create
- container.deployments.get
- container.deployments.update
- container.horizontalPodAutoscalers.get
- container.namespaces.get
- container.pods.list
- container.services.create
- container.services.get
- container.services.update
- resourcemanager.projects.get
- storage.buckets.get
- storage.buckets.getIamPolicy
- storage.objects.create
- storage.objects.get
- storage.objects.getIamPolicy
- storage.objects.list
- storage.objects.update
name: projects/my-project/roles/custom_dev_role
stage: GA
title: Custom Dev Role
</code></pre>
<div><br /></div><div><b><font size="4">Use the custom role.</font></b></div><div><br /></div><div>On GCP web console, go to <font face="courier">IAM -> Permissions</font>.</div><div>Select the members to whom you want the associate the custom role.</div><div>In the right panel, search the role you've created under the '<font face="courier">Custom</font>' category.</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">That's all!</div><div><br /></div><div>-------------</div><div><br />You can find all the available roles in this page of GCP documentation:<br /><a href="https://cloud.google.com/iam/docs/understanding-roles">https://cloud.google.com/iam/docs/understanding-roles</a></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-19717469627261475522020-05-10T21:00:00.001+02:002020-05-10T21:00:20.667+02:00Managing Openshift resources using oc command-line toolOpenshift Container Platform, as already described in
<a href="https://pillsfromtheweb.blogspot.com/2020/05/openshift-container-platform.html" target="_blank">our post</a>
can be managed using:
<div><ul style="text-align: left;"><li>the web console</li><li>a command line tool, called oc</li></ul></div>
<div><br /></div>
<div>
In this guide, we'll analyze in deep how to modify and manage Openshift
resources using the oc command.
</div>
<div><br /></div>
<div>
<font size="4"><b>Installing oc command-line tool.</b></font>
</div>
<div><br /></div>
<div>
When you install Openshift, the oc client is automatically installed on all
the nodes of the cluster.
</div>
<div>
If you need, you can also install oc on another external node, from which you
desire to manage the cluster.
</div>
<div><br /></div>
<div><ul style="text-align: left;"><li>If you're using RHEL, you can install it using the command:</li></ul></div>
<div><br /></div>
<div><font face="courier"><span> </span>sudo yum install atomic-openshift-clients</font></div>
<div><br /></div>
<div><ul style="text-align: left;"><li>
For other distros, you can find it on<font face="courier">
openshift-origin</font> Github page <a href="https://github.com/openshift/origin/releases">https://github.com/openshift/origin/releases</a></li></ul></div>
<div><br /></div><div><br /></div>
<div><br /></div>
<div><font size="4"><b>Let's review all the main commands.</b></font></div>
<div><br /></div>
<div>
<table border="1" bordercolor="#888" cellspacing="0" style="border-collapse: collapse; border-color: rgb(136, 136, 136); border-width: 1px;">
<tbody>
<tr>
<td style="width: 500px;">
<span style="background-color: white;"> <b><font face="helvetica">command</font></b></span>
</td>
<td style="width: 500px;">
<b><font face="helvetica" style="background-color: white;"> action</font></b>
</td>
</tr>
<tr>
<td style="width: 500px;"> <font face="courier">oc login https://master.org.com -u admin -p mypass</font>
</td>
<td style="width: 500px;">
login into Openshift cluster as <font face="courier">admin</font>, with password <font face="courier">mypass</font><br />
</td>
</tr>
<tr>
<td><font face="courier"> oc logout</font></td>
<td> logout from Openshift</td>
</tr>
<tr>
<td><font face="courier"> oc whoami</font></td>
<td> check current user</td>
</tr>
<tr>
<td><font face="courier"> oc new-project myproject</font></td>
<td> create a new-project named <font face="courier">myproject</font></td>
</tr>
<tr>
<td><font face="courier"> oc delete project myproject</font></td>
<td> delete the project <font face="courier">myproject</font></td>
</tr>
<tr>
<td><font face="courier"> oc status</font></td>
<td>
check the status of the cluster you have been logged to<br />
</td>
</tr>
<tr>
<td>
<font face="courier"> oc get all<span> </span></font>
</td>
<td> get all the most important resources of the cluster</td>
</tr>
<tr>
<td>
<font face="courier"> oc get <pods | deployments | routes | ---></font>
</td>
<td> get the specified resource in the current project</td>
</tr>
<tr>
<td><font face="courier"> oc describe <resource_name></font>
</td>
<td> get all the information about a specific resource</td>
</tr>
<tr>
<td> <font face="courier">oc export <resource_name></font>
</td>
<td>
export the definition of a resource, for backup use, in YAML
format
</td>
</tr>
<tr>
<td> <font face="courier">oc create <resource_type> <resource_name></font>
</td>
<td> create the specific resource </td>
</tr>
<tr>
<td> <font face="courier">oc exec</font></td>
<td>
similar to <font face="courier">docker exec</font>, execute commands inside a container
</td>
</tr>
<tr>
<td><font face="courier"> oc rsh <pod_name></font></td>
<td> open a remote shell session on a container</td>
</tr>
<tr>
<td> <font face="courier">oc get events</font><span> </span></td>
<td>
get information about life-cycle events in the current project,
<br /> as pod creation and deletion, scheduling and nodes status
</td>
</tr>
<tr>
<td> <font face="courier">oc logs <pod_name></font></td>
<td> retrieve pod logs</td>
</tr>
<tr>
<td> <font face="courier">oc rsync <pod_name>:<pod_dir> <local_dir> -c
<container_name>
</font></td>
<td>
copy the content from a directory of a pod into a local
directory
</td>
</tr>
<tr>
<td><font face="courier"> oc rsync <local_dir> <pod_name>:<pod_dir> -c
<container_name>
</font></td>
<td>
copy the content of a local directory to a directory of a pod
</td>
</tr>
<tr>
<td><font face="courier">
oc port-forward <pod_name>
<local_port>:<remote_port>
</font></td>
<td> forward a local port to a pod</td>
</tr>
</tbody>
</table>
<br />
</div><div><br /></div><div><br /></div><div><br /></div>
PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com2tag:blogger.com,1999:blog-9178633621922743636.post-29720391355782348612020-05-08T16:59:00.000+02:002020-05-08T16:59:10.450+02:00Expose Services on Openshift using RoutesOpenshift services, as Kubernetes services themselves, can be accessed only by pods on the same Openshift cluster. How to access them from outside the cluster? Using <b>routes</b>.<br />
<br />
A route creates a connection between a public-facing ip address and the related DNS entry to the pods desired, using the internal service linked to them, to find their endpoints.<br />
The router service is based on <b>HaProxy</b>.<br />
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGfya6GOqAdqt0ewpZE2xZrBh1uIK_t7alMJJh_TuPyFBP_bfxd8kPUn2KcRKGTIAbSnv7z5GV9jQ5rXdR0YLpIJLnzPIgx53-XXxXy4bLg_Ad5nD3LQWZd7h1rA7jQWDkjWHyBcLvhiJp/s1600/Schermata+2020-05-08+alle+15.56.29.png" imageanchor="1"><img border="0" height="441" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGfya6GOqAdqt0ewpZE2xZrBh1uIK_t7alMJJh_TuPyFBP_bfxd8kPUn2KcRKGTIAbSnv7z5GV9jQ5rXdR0YLpIJLnzPIgx53-XXxXy4bLg_Ad5nD3LQWZd7h1rA7jQWDkjWHyBcLvhiJp/s640/Schermata+2020-05-08+alle+15.56.29.png" width="640" /></a></div>
<br />
<b><span style="font-size: large;"><br />
</span></b> <b><span style="font-size: large;">Creating a route.</span></b><br />
<br />
As every resource of Openshift, routes can be created:<br />
<br />
<ul>
<li>defining the configuration in a <b>YAML</b> file</li>
<li>using the <b>oc</b> cli</li>
</ul>
<div>
<br /></div>
<div>
In this example we'll use <b>oc</b> cli.<br />
<br /></div>
<div>
Let's assume you have already you app named <span style="font-family: "courier new" , "courier" , monospace;">example-app</span> deployed on OCP, in project <span style="font-family: "courier new" , "courier" , monospace;">myproject</span>, and the service exposing it is named <span style="font-family: "courier new" , "courier" , monospace;">example-app-service</span>.</div>
<div>
<br /></div>
<div>
<br />
<b>Create the route with oc:</b></div>
<div>
<br /></div>
<pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 652.988px;"><code style="overflow-wrap: normal;">
oc expose service example-app-service \
--name example-app-route \
--hostname=example-app.mycompany.com
</code>
</pre>
<span style="font-family: "courier new" , "courier" , monospace;"><br />
</span><b>Once the route has been created, you can reach your application at:</b><br />
<b><br />
</b> <br />
<pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 652.988px;"><code style="overflow-wrap: normal;">
http://example-app.mycompany.com
</code>
</pre>
<div>
<br /></div>
<div>
<span style="color: #666666;"><br />
</span> <span style="color: #666666;">In general, if you don't add the <span style="font-family: "courier new" , "courier" , monospace;">--hostname</span> argument, the resulting DNS name will be of this form:</span></div>
<div>
<span style="color: #666666;"><br />
</span></div>
<div>
<span style="color: #666666; font-family: "courier new" , "courier" , monospace;"><route-name>-<project>.<default-domain></span></div>
<div>
<span style="color: #666666;"><br />
</span></div>
<div>
<span style="color: #666666;">So in this case, if default domain is <span style="font-family: "courier new" , "courier" , monospace;">example.com</span>:</span></div>
<div>
<span style="color: #666666;"><br />
</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: #666666;">example-app-route.myproject.example.com</span></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: #666666;"><br />
</span></span></div>
<div>
<span style="color: #666666; font-family: inherit;">The default-domain is the one selected for Openshift installation.</span><br />
<span style="color: #666666; font-family: inherit;"><br />
</span> <span style="color: #666666; font-family: inherit;"><br />
</span></div>
<div>
<br /></div>
<div>
<span style="font-size: large;"><b>Enabling TLS.</b></span></div>
<div>
<br /></div>
<div>
A route can be secured with different types of TLS termination:</div>
<div>
<ul>
<li>Edge: this is the classic case, TLS termination occurs at the router, so certificates are served by the router itself and they must be configured when creating the route. Connections from the router to the pods, over the internal network, are not encrypted.</li>
<li>Pass-through: certificates are served by the destination pod, so you don't have to add them to the route.</li>
<li>Re-encryption: the router terminates TLS with a certificate, but then reencrypts the connection to the destination pod, which is generally using another certificate.</li>
</ul>
<div>
<br /></div>
</div>
<div>
Let's secure our example-app, using self-signed certificates.</div>
<div>
<br /></div>
<div>
<b>Create private key:</b></div>
<div>
<br /></div>
<div>
<pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 652.988px;"><code style="overflow-wrap: normal;">
openssl genrsa 4096 -out example-app.key
</code>
</pre>
</div>
<div>
<br /></div>
<div>
<b>Create certificate signing request (CSR) using the private key:</b></div>
<div>
<br /></div>
<pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 652.988px;"><code style="overflow-wrap: normal;">
openssl req -new \
-key example-app.key \
-out example-app.csr \
-subj "/C=EU/ST=IT/L=Rome/O=MyCompany/OU=IT/CN=example-app.mycompany.com"
</code>
</pre>
<div>
<b><br />
</b> <b>Generate the certificate:</b></div>
<div>
<br /></div>
<pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 652.988px;"><code style="overflow-wrap: normal;">
openssl x509 -req -days 365 -in example-app.csr \
-signkey example-app.key -out example-app.crt
</code>
</pre>
<div>
<br /></div>
<div>
<b>Create an edge route, adding the private key and the certificate:</b></div>
<div>
<br /></div>
<pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 652.988px;"><code style="overflow-wrap: normal;">
oc create route edge \
--service=example-app-service \
--name example-app-route \
--hostname=example-app.mycompany.com \
--key=example-app.key \
--cert=example.crt
</code>
</pre>
<div>
<br /></div>
<div>
<b>Ensure the route is created:</b><br />
<b><br />
</b></div>
<pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 652.988px;"><code style="overflow-wrap: normal;">
oc get routes
oc get route/example-app-route -o yaml<div>
</div>
</code>
</pre>
<br />
<div>
If everything is ok, you should see your application at:<br />
<br /></div>
<div>
<pre style="background-color: #f8f8f8; border: 1px dashed rgb(238, 238, 238); font-family: "roboto mono", "lucida console", monaco, fixed, monospace; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 652.988px;"><code style="overflow-wrap: normal;">
https://example-app.mycompany.com
</code>
</pre>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-43081149207009829382020-05-08T15:17:00.000+02:002020-05-08T15:17:28.243+02:00Openshift Container Platform: architecture and features.<div style="text-align: center;">
<img alt="OpenShift logo" height="220" src="https://dwglogo.com/?download=4249" width="320" /></div>
<br />
<br />
Openshift is an <b>open source container platform</b>, built on Kubernetes, delivered also by Red Hat in its enterprise version.<br />
<br />
<br />
<span style="font-size: large;"><b>What is the difference between Kubernetes and Openshift?</b></span><br />
<br />
Openshift adds to Kubernetes all the capabilities required to manage the cluster and its resources in an easier way, both from developers and system administrators point of view.<br />
<br />
These capabilities are:<br />
<br />
<ul>
<li><b>Extensions: </b>Openshift provides additional resource types to those belonging to Kubernetes;</li>
<li><b>Devops tools:</b> Openshift adds to Kubernetes automated development workflows thanks to the Source-to-image feature, that takes an application, packages it and containerize it</li>
<li><b>Centralized management:</b> thanks to its Web Console, it is easy to manage clusters, nodes, metrics, workloads and configurations.</li>
<li><b>Internal registry:</b> Openshift comes with an internal registry that can be used to store all the images used by pods running on the cluster.</li>
</ul>
<div>
<br /></div>
<div style="text-align: center;">
<img alt="Red Hat OpenShift Container Platform: Kubernetes for rapid innovation" height="459" src="https://marketing-outfit-prod-images.s3.us-west-2.amazonaws.com/1b7a411800876a6db1e2dc220b092d8a/cl-openshift-container-platform-datasheet_img1.PNG" width="640" /></div>
<div>
Apart from Kubernetes resources, Openshift uses in addition other two types of resources:</div>
<div>
<ul>
<li><b>projects</b></li>
<li><b>users</b></li>
</ul>
<div>
A project is a logical group of Kubernetes resources, that permits to assign specific roles to users, limitations on resources (volumes, cpu, RAM) usage with the concept of "<b>quota</b>".</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>SOURCE-TO-IMAGE (S2I)</b></div>
<div>
S2I is a special process that pulls code from a SCM repository, detects automatically the runtime needed by the source code, and starts a pod using a base image related to that runtime.</div>
<div>
In this pod, Openshift builds the application in the same way that a developer would do (for example, running npm for a Node.js application), and if the build is successful, it is created another image with all the binaries obtained from the previous one. The image is automatically pushed to the internal Registry and, from here, it can be used to create a pod running the application.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>IMAGE STREAMS</b></div>
<div>
An image stream is a set of related container images, identified by their tags. Builds and deployments can watch image streams to be notified when a new image has been added and trigger a build or a deployment.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>Links:</b></div>
<div>
opensource project: <a href="https://github.com/openshift">https://github.com/openshift</a><br />
Red Hat Enterprise: <a href="https://www.openshift.com/">https://www.openshift.com/</a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-20964622220235391962020-05-07T12:13:00.000+02:002020-05-07T12:13:31.420+02:00Benefits of Microservices Architecture<div style="text-align: center;"><img height="200" src="https://image.flaticon.com/icons/svg/73/73942.svg" width="200" /></div><div><br /></div>A microservices architecture is an architectural style that structures an application as a set of smaller services that are:<br /><ul><li>Highly <b>maintainable</b> and <b>testable</b></li><li><b>Independent</b></li><li><b>Loosely coupled</b></li><li>Organized around <b>specific business or domain</b> capabilities</li><li>Each one scoped to a <b>single purpose</b></li></ul>Each service runs in its own process and communicates with the others through a well-defined interface, typically an HTTP-based API.<div>The microservice architecture it's a good way to follow in case of rapid, frequent and reliable delivery of <b>complex applications</b>.</div><div><div><br /></div>A microservice architecture is recommended in the following cases:<ul style="text-align: left;"><li><b>difference in the frequency of updates</b>: it is the case in which different components of an application need to evolve with different frequency. For example, in the case of an e-commerce, we may have to make continuous improvements on the search engine, but few improvements on the cart: it is appropriate to split the two modules into two separate microservices then, and assign the development of these two microservices to different team members, so that the two teams can operate totally independently of each other.</li></ul><ul style="text-align: left;"><li><b>independent lifecycles</b>: lifecycle means the flow that leads from commit to production. If one module has to be brought into production faster than another, or one requires very long regression tests, then it is appropriate to split them.</li></ul><ul style="text-align: left;"><li><b>independent scalability</b>: if different modules of the same system must support different traffic or throughput, then they must have different scalability requirements. If we put everything in a monolithic application, we would have to scale the entire application to support the most volatile component, and this would lead to an over-allocation of resources!</li></ul><ul style="text-align: left;"><li><b>failure isolation</b>: it is the case in which there is a dependence on an external system. It may happen that this service is not available and appropriate failover mechanisms must be implemented to ensure that this unavailability does not spill over the whole system but only the related microservice. Another solution is to create an abstraction layer between the microservice and the external service (facade pattern) so that, if the external service is replaced by another in the future, there is no need to edit the whole microservice.</li></ul><ul style="text-align: left;"><li><b>independent frameworks and languages: y</b>ou can use different frameworks or programming languages to write microservices and deploy them independently.</li></ul><div><br /></div></div><div><br /></div><div><br /></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0tag:blogger.com,1999:blog-9178633621922743636.post-89689963181906715352020-05-06T22:33:00.001+02:002020-05-06T22:33:47.435+02:00Accessing Kubernetes ServicesA service is an abstraction that defines a logic set of pods, and an access policy for it.<div><br /></div><div><br /><div><font size="4"><b>How to discover services inside and outside the cluster?</b></font></div><div><br /></div><div>For each service insiede a Kubernetes namespace, two environment variables are automatically created and injected into all the containers contained in pod of the same namespace:</div><div><br /></div><div><b><font face="courier"><SERVICE_NAME>_SERVICE_HOST</font></b> for the service ip address</div><div><font face="courier"><b><SERVICE_NAME>_SERVICE_PORT</b></font> for the service TCP port</div><div><br /></div><div>Another way to access a service is to use its FQDN, that have the form: <font face="courier"><b><SERVICE_NAME>.NAMESPACE.SVC.CLUSTER.LOCAL</b></font></div><div><br /></div><div><br /></div><div><br /></div><div><b><font size="4">And if we need to access services from an application outside the cluster?</font></b></div><div><br /></div><div>In this case we have two ways:</div><div><br /></div><div><ul style="text-align: left;"><li>Use a service of type <b>NodePort</b>: in this case, the same port (in a range between 30000 - 32767) is opened on all the nodes of the clusters, and the external application can access the service connecting to the node ip address and that port. Then the connection is proxied to the service.</li><li>Use an <b>ingress</b>: this is the best way if you want to do an advanced configuration, using TLS terminations, HTTP/HTTPS and layer 7 path based routing.</li></ul><div><br /></div></div><div>If you want a complete example with the creation of an Ingress resource, you can refer to our guide: <a href="https://pillsfromtheweb.blogspot.com/2020/05/deploy-nodejs-app-on-kuberntes.html" target="_blank">https://pillsfromtheweb.blogspot.com/2020/05/deploy-nodejs-app-on-kuberntes.html</a></div><div><br /></div><div>And here, we leave you our note about this post :)</div><div><br /></div><div class="separator" style="clear: both; text-align: left;"><img border="0" data-original-height="900" data-original-width="680" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi95mbw5ZWXlWXmj0Zo2Cgwewo-DW7ftTTxmEuQ22x1fTTJkzRVZbAMva3fbdHYVnc9ut9rJLMxr3jJc6x4xovCADCcIWE0u1PePOg1eCYInipO3W9BWqvO7-vYHtgWAZ1b60AGes9s1Nwz/w488-h640/photo_2020-05-06+22.04.27.jpeg" width="488" /></div><div><br /></div></div>PillsFromTheWebhttp://www.blogger.com/profile/11436536780721020214noreply@blogger.com0