-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathindex.html
1 lines (1 loc) · 62.8 KB
/
index.html
1
<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="J's Software Development Pages"><link href=https://joostvdg.github.io/ rel=canonical><link href=other/mkdocs/ rel=next><link rel=icon href=assets/images/favicon.png><meta name=generator content="mkdocs-1.5.3, mkdocs-material-9.4.9"><title>joostvdg.github.com - J's Software Development Pages</title><link rel=stylesheet href=assets/stylesheets/main.78cf6014.min.css><link rel=stylesheet href=assets/stylesheets/palette.356b1318.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script><script id=__analytics>function __md_analytics(){function n(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],n("js",new Date),n("config","G-353607268"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){this.value&&n("event","search",{search_term:this.value})}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");n("event","feedback",{page:t,data:e}),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){n("config","G-353607268",{page_path:e.pathname})})});var e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=G-353607268",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script><script>"undefined"!=typeof __md_analytics&&__md_analytics()</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=orange data-md-color-accent=indigo> <script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#joost-van-der-griendts-software-development-docs class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=. title="J's Software Development Pages" class="md-header__button md-logo" aria-label="J's Software Development Pages" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M6.5 20q-2.28 0-3.89-1.57Q1 16.85 1 14.58q0-1.95 1.17-3.48 1.18-1.53 3.08-1.95.63-2.3 2.5-3.72Q9.63 4 12 4q2.93 0 4.96 2.04Q19 8.07 19 11q1.73.2 2.86 1.5 1.14 1.28 1.14 3 0 1.88-1.31 3.19T18.5 20Z"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> J's Software Development Pages </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> joostvdg.github.com </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media data-md-color-scheme=default data-md-color-primary=orange data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_2 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"/></svg> </label> <input class=md-option data-md-color-media data-md-color-scheme=slate data-md-color-primary=deep-orange data-md-color-accent=teal aria-label="Switch to light mode" type=radio name=__palette id=__palette_2> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3Z"/></svg> </label> </form> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/joostvdg/joostvdg.github.io title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> </div> <div class=md-source__repository> joostvdg/joostvdg.github.io </div> </a> </div> </nav> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=blogs/jenkins-pipeline-support-tool/ class=md-tabs__link> Blogs </a> </li> <li class=md-tabs__item> <a href=jenkins/jenkins-on-kubernetes/ class=md-tabs__link> Jenkins & CloudBees </a> </li> <li class=md-tabs__item> <a href=openshift/rhos311-gcp-minimal/ class=md-tabs__link> Kubernetes & Docker </a> </li> <li class=md-tabs__item> <a href=tanzu/ class=md-tabs__link> VMware Tanzu </a> </li> <li class=md-tabs__item> <a href=platform-sre/backstage/plugin/ class=md-tabs__link> Platform Engineering/SRE </a> </li> <li class=md-tabs__item> <a href=jenkinsx/build-packs/ class=md-tabs__link> Jenkins X </a> </li> <li class=md-tabs__item> <a href=cloud/automation-pulumi/ class=md-tabs__link> Software Eng. </a> </li> </ul> </div> </nav> </header> <div class=md-container data-md-component=container> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=. title="J's Software Development Pages" class="md-nav__button md-logo" aria-label="J's Software Development Pages" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M6.5 20q-2.28 0-3.89-1.57Q1 16.85 1 14.58q0-1.95 1.17-3.48 1.18-1.53 3.08-1.95.63-2.3 2.5-3.72Q9.63 4 12 4q2.93 0 4.96 2.04Q19 8.07 19 11q1.73.2 2.86 1.5 1.14 1.28 1.14 3 0 1.88-1.31 3.19T18.5 20Z"/></svg> </a> J's Software Development Pages </label> <div class=md-nav__source> <a href=https://github.com/joostvdg/joostvdg.github.io title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> </div> <div class=md-source__repository> joostvdg/joostvdg.github.io </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <label class=md-nav__link for=__nav_1 id=__nav_1_label tabindex> <span class=md-ellipsis> Home </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Me </span> <span class="md-nav__icon md-icon"></span> </label> <a href=. class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Me </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#call-me-j class=md-nav__link> <span class=md-ellipsis> Call me J </span> </a> <nav class=md-nav aria-label="Call me J"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#tracker class=md-nav__link> <span class=md-ellipsis> Tracker </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#main-topics class=md-nav__link> <span class=md-ellipsis> Main Topics </span> </a> <nav class=md-nav aria-label="Main Topics"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#other-material class=md-nav__link> <span class=md-ellipsis> Other Material </span> </a> </li> <li class=md-nav__item> <a href=#continuous-integration class=md-nav__link> <span class=md-ellipsis> Continuous Integration </span> </a> </li> <li class=md-nav__item> <a href=#continuous-delivery class=md-nav__link> <span class=md-ellipsis> Continuous Delivery </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=other/mkdocs/ class=md-nav__link> <span class=md-ellipsis> MKDocs (This Static Website) </span> </a> </li> <li class=md-nav__item> <a href=other/vim/ class=md-nav__link> <span class=md-ellipsis> VIM </span> </a> </li> <li class=md-nav__item> <a href=other/shell/ class=md-nav__link> <span class=md-ellipsis> Shell </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Blogs </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Blogs </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=blogs/jenkins-pipeline-support-tool/ class=md-nav__link> <span class=md-ellipsis> Jenkins Pipeline Support Tools </span> </a> </li> <li class=md-nav__item> <a href=blogs/graceful-shutdown/ class=md-nav__link> <span class=md-ellipsis> Docker Graceful Shutdown </span> </a> </li> <li class=md-nav__item> <a href=blogs/docker-alternatives/ class=md-nav__link> <span class=md-ellipsis> Pipelines with Docker Alternatives </span> </a> </li> <li class=md-nav__item> <a href=blogs/k8s-lets-encrypt/ class=md-nav__link> <span class=md-ellipsis> Let's Encrypt for Kubernetes Apps </span> </a> </li> <li class=md-nav__item> <a href=blogs/sso-azure-ad/ class=md-nav__link> <span class=md-ellipsis> CloudBees SSO Azure AD </span> </a> </li> <li class=md-nav__item> <a href=blogs/teams-automation/ class=md-nav__link> <span class=md-ellipsis> CloudBees Automate Teams </span> </a> </li> <li class=md-nav__item> <a href=blogs/kubernetes-sso-keycloak/ class=md-nav__link> <span class=md-ellipsis> Kubernetes SSO Keycloak </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_8> <label class=md-nav__link for=__nav_2_8 id=__nav_2_8_label tabindex=0> <span class=md-ellipsis> Jenkins X Java Native Image Prod </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_8_label aria-expanded=false> <label class=md-nav__title for=__nav_2_8> <span class="md-nav__icon md-icon"></span> Jenkins X Java Native Image Prod </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/01-intro/ class=md-nav__link> <span class=md-ellipsis> Intro </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/02-cloud-sql/ class=md-nav__link> <span class=md-ellipsis> Cloud SQL </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/03-quarkus/ class=md-nav__link> <span class=md-ellipsis> Quarkus </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/04-jx-import/ class=md-nav__link> <span class=md-ellipsis> Import Into Jenkins X </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/05-jx-secrets/ class=md-nav__link> <span class=md-ellipsis> Database Connection And Secrets </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/06-native-image/ class=md-nav__link> <span class=md-ellipsis> Native Image </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/07-pipeline-improvements/ class=md-nav__link> <span class=md-ellipsis> Pipeline Improvements </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/08-preview-int-test/ class=md-nav__link> <span class=md-ellipsis> Previews & Integration Tests </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/09-production-improvements/ class=md-nav__link> <span class=md-ellipsis> Production Improvements </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/10-promote-prod/ class=md-nav__link> <span class=md-ellipsis> Promote To Production </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_9> <label class=md-nav__link for=__nav_2_9 id=__nav_2_9_label tabindex=0> <span class=md-ellipsis> Jenkins Monitoring Kubernetes </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_9_label aria-expanded=false> <label class=md-nav__title for=__nav_2_9> <span class="md-nav__icon md-icon"></span> Jenkins Monitoring Kubernetes </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=blogs/monitor-jenkins-on-k8s/introduction/ class=md-nav__link> <span class=md-ellipsis> Introduction </span> </a> </li> <li class=md-nav__item> <a href=blogs/monitor-jenkins-on-k8s/prepare/ class=md-nav__link> <span class=md-ellipsis> Prepare Environment </span> </a> </li> <li class=md-nav__item> <a href=blogs/monitor-jenkins-on-k8s/install/ class=md-nav__link> <span class=md-ellipsis> Install Tools </span> </a> </li> <li class=md-nav__item> <a href=blogs/monitor-jenkins-on-k8s/metrics/ class=md-nav__link> <span class=md-ellipsis> Metrics </span> </a> </li> <li class=md-nav__item> <a href=blogs/monitor-jenkins-on-k8s/alerts/ class=md-nav__link> <span class=md-ellipsis> Alerts </span> </a> </li> <li class=md-nav__item> <a href=blogs/monitor-jenkins-on-k8s/pipeline/ class=md-nav__link> <span class=md-ellipsis> Pipeline </span> </a> </li> <li class=md-nav__item> <a href=blogs/monitor-jenkins-on-k8s/dashboard/ class=md-nav__link> <span class=md-ellipsis> Dashboard </span> </a> </li> <li class=md-nav__item> <a href=blogs/monitor-jenkins-on-k8s/cloudbees/ class=md-nav__link> <span class=md-ellipsis> CloudBees </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=blogs/k8s-crd/ class=md-nav__link> <span class=md-ellipsis> Create your own k8s resource </span> </a> </li> <li class=md-nav__item> <a href=blogs/dockercon-eu-2018/ class=md-nav__link> <span class=md-ellipsis> DockerCon EU 2018 </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <label class=md-nav__link for=__nav_3 id=__nav_3_label tabindex> <span class=md-ellipsis> Jenkins & CloudBees </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Jenkins & CloudBees </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=jenkins/jenkins-on-kubernetes/ class=md-nav__link> <span class=md-ellipsis> Jenkins On Kubernetes </span> </a> </li> <li class=md-nav__item> <a href=tanzu/jenkins-tap/ class=md-nav__link> <span class=md-ellipsis> TAP & Jenkins </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3_3> <label class=md-nav__link for=__nav_3_3 id=__nav_3_3_label tabindex=0> <span class=md-ellipsis> CloudBees </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_3_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3_3> <span class="md-nav__icon md-icon"></span> CloudBees </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=cloudbees/cbci-casc/ class=md-nav__link> <span class=md-ellipsis> CloudBees CasC </span> </a> </li> <li class=md-nav__item> <a href=cloudbees/sso-azure-ad/ class=md-nav__link> <span class=md-ellipsis> Single Sign On - AzureAD </span> </a> </li> <li class=md-nav__item> <a href=cloudbees/teams-automation/ class=md-nav__link> <span class=md-ellipsis> CloudBees Automate Teams </span> </a> </li> <li class=md-nav__item> <a href=cloudbees/cbc-gke-helm/ class=md-nav__link> <span class=md-ellipsis> CloudBees CI on GKE </span> </a> </li> <li class=md-nav__item> <a href=cloudbees/cbc-eks/ class=md-nav__link> <span class=md-ellipsis> CloudBees CI on EKS </span> </a> </li> <li class=md-nav__item> <a href=cloudbees/cbc-team-namespace/ class=md-nav__link> <span class=md-ellipsis> Team Master Namespace </span> </a> </li> <li class=md-nav__item> <a href=cloudbees/multi-cluster-gke/ class=md-nav__link> <span class=md-ellipsis> Multi-Cluster GKE </span> </a> </li> <li class=md-nav__item> <a href=cloudbees/multi-cluster-eks/ class=md-nav__link> <span class=md-ellipsis> Multi-Cluster EKS </span> </a> </li> <li class=md-nav__item> <a href=cloudbees/multi-cluster/ class=md-nav__link> <span class=md-ellipsis> Multi-Cluster (OLD/AKS) </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3_4> <label class=md-nav__link for=__nav_3_4 id=__nav_3_4_label tabindex=0> <span class=md-ellipsis> Jenkins </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_3_4_label aria-expanded=false> <label class=md-nav__title for=__nav_3_4> <span class="md-nav__icon md-icon"></span> Jenkins </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=jenkins/ class=md-nav__link> <span class=md-ellipsis> Intro </span> </a> </li> <li class=md-nav__item> <a href=jenkins-jobs/jobdsl/ class=md-nav__link> <span class=md-ellipsis> JobDSL </span> </a> </li> <li class=md-nav__item> <a href=jenkins-jobs/jenkins-jobs-builder/ class=md-nav__link> <span class=md-ellipsis> JenkinsJobsBuilder </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3_5> <label class=md-nav__link for=__nav_3_5 id=__nav_3_5_label tabindex=0> <span class=md-ellipsis> Jenkins Pipelines </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_3_5_label aria-expanded=false> <label class=md-nav__title for=__nav_3_5> <span class="md-nav__icon md-icon"></span> Jenkins Pipelines </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=jenkins-pipeline/job-types/ class=md-nav__link> <span class=md-ellipsis> Job Types </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline/kaniko-pipelines/ class=md-nav__link> <span class=md-ellipsis> Build Docker Image Kaniko </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline/podtemplate-dind/ class=md-nav__link> <span class=md-ellipsis> PodTemplate With Docker-In-Docker </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline/jenkins-parallel-pipeline/ class=md-nav__link> <span class=md-ellipsis> Parallel Pipelines </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline/core-concepts/ class=md-nav__link> <span class=md-ellipsis> Core Concepts </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline/artifactory-integration/ class=md-nav__link> <span class=md-ellipsis> Artifactory Integration </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline/declarative-pipeline/ class=md-nav__link> <span class=md-ellipsis> Pipeline (declarative) </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline/groovy-pipeline/ class=md-nav__link> <span class=md-ellipsis> Groovy DSL Pipeline </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline/global-shared-library/ class=md-nav__link> <span class=md-ellipsis> Pipeline Libraries </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline/ide-integration-pipeline-dsl/ class=md-nav__link> <span class=md-ellipsis> DSL IDE Integration </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline/input/ class=md-nav__link> <span class=md-ellipsis> Input </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3_6> <label class=md-nav__link for=__nav_3_6 id=__nav_3_6_label tabindex=0> <span class=md-ellipsis> Jenkins Pipeline Examples </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_3_6_label aria-expanded=false> <label class=md-nav__title for=__nav_3_6> <span class="md-nav__icon md-icon"></span> Jenkins Pipeline Examples </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=jenkins-pipeline-examples/ class=md-nav__link> <span class=md-ellipsis> Index </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline-examples/docker-alternatives/ class=md-nav__link> <span class=md-ellipsis> Docker Alternatives </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline-examples/maven-declarative/ class=md-nav__link> <span class=md-ellipsis> Maven Declarative </span> </a> </li> <li class=md-nav__item> <a href=jenkins-pipeline-examples/docker-declarative/ class=md-nav__link> <span class=md-ellipsis> Docker Declarative </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> Kubernetes & Docker </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> Kubernetes & Docker </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <label class=md-nav__link for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class=md-ellipsis> OpenShift </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> OpenShift </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=openshift/rhos311-gcp-minimal/ class=md-nav__link> <span class=md-ellipsis> OpenShift 3.11 GCP(minimal) </span> </a> </li> <li class=md-nav__item> <a href=openshift/rhos311-gcp-medium/ class=md-nav__link> <span class=md-ellipsis> OpenShift 3.11 GCP(medium) </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <label class=md-nav__link for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class=md-ellipsis> Kubernetes (K8S) </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> Kubernetes (K8S) </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=kubernetes/ class=md-nav__link> <span class=md-ellipsis> Introduction </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/cka-exam-prep/ class=md-nav__link> <span class=md-ellipsis> CKA Exam prep </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/tools/ class=md-nav__link> <span class=md-ellipsis> Tools </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <label class=md-nav__link for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class=md-ellipsis> Managed Kubernetes (cloud) </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> Managed Kubernetes (cloud) </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=kubernetes/distributions/install-gke/ class=md-nav__link> <span class=md-ellipsis> GKE </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/distributions/gke-terraform/ class=md-nav__link> <span class=md-ellipsis> GKE Terraform </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/distributions/eks-eksctl/ class=md-nav__link> <span class=md-ellipsis> AWS EKS </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/distributions/aks-cli/ class=md-nav__link> <span class=md-ellipsis> AKS CLI </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/distributions/aks-terraform/ class=md-nav__link> <span class=md-ellipsis> AKS Terraform </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_4> <label class=md-nav__link for=__nav_4_4 id=__nav_4_4_label tabindex=0> <span class=md-ellipsis> K8S Hard Way - GCE </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4_4> <span class="md-nav__icon md-icon"></span> K8S Hard Way - GCE </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=kubernetes/khw-gce/ class=md-nav__link> <span class=md-ellipsis> Installer Preparation </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/khw-gce/terraform-compute/ class=md-nav__link> <span class=md-ellipsis> Create GCE resources </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/khw-gce/certificates/ class=md-nav__link> <span class=md-ellipsis> Prepare Certificates </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/khw-gce/kubeconfigs/ class=md-nav__link> <span class=md-ellipsis> Prepare Kubeconfigs </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/khw-gce/encryption/ class=md-nav__link> <span class=md-ellipsis> Encryption configuration </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/khw-gce/etcd/ class=md-nav__link> <span class=md-ellipsis> ETCD configuration </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/khw-gce/controller/ class=md-nav__link> <span class=md-ellipsis> Controller Config </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/khw-gce/worker/ class=md-nav__link> <span class=md-ellipsis> Worker Config </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/khw-gce/remote-access/ class=md-nav__link> <span class=md-ellipsis> Remote access </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/khw-gce/network/ class=md-nav__link> <span class=md-ellipsis> Network config </span> </a> </li> <li class=md-nav__item> <a href=kubernetes/khw-gce/debug/ class=md-nav__link> <span class=md-ellipsis> Debug </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <label class=md-nav__link for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class=md-ellipsis> Docker </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> Docker </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=docker/graceful-shutdown/ class=md-nav__link> <span class=md-ellipsis> Graceful Shutdown </span> </a> </li> <li class=md-nav__item> <a href=docker/build-kit/ class=md-nav__link> <span class=md-ellipsis> BuildKit </span> </a> </li> <li class=md-nav__item> <a href=docker/multi-stage-builds/ class=md-nav__link> <span class=md-ellipsis> Multi-Stage Builds(TBD) </span> </a> </li> <li class=md-nav__item> <a href=docker/swarm/ class=md-nav__link> <span class=md-ellipsis> Swarm (mode) (TBD) </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <label class=md-nav__link for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class=md-ellipsis> Linux </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> Linux </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=linux/systemd/ class=md-nav__link> <span class=md-ellipsis> SystemD </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <label class=md-nav__link for=__nav_5 id=__nav_5_label tabindex> <span class=md-ellipsis> VMware Tanzu </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> VMware Tanzu </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=tanzu/ class=md-nav__link> <span class=md-ellipsis> Tanzu </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5_2> <label class=md-nav__link for=__nav_5_2 id=__nav_5_2_label tabindex=0> <span class=md-ellipsis> TAP GitOps </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_5_2_label aria-expanded=false> <label class=md-nav__title for=__nav_5_2> <span class="md-nav__icon md-icon"></span> TAP GitOps </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=tanzu/tap-gitops/ class=md-nav__link> <span class=md-ellipsis> Intro </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tap-gitops/services/ class=md-nav__link> <span class=md-ellipsis> Services </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tap-gitops/tap-gitops-prep/ class=md-nav__link> <span class=md-ellipsis> TAP GitOps Prep </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tap-gitops/tap-build/ class=md-nav__link> <span class=md-ellipsis> TAP Build </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tap-gitops/tap-run/ class=md-nav__link> <span class=md-ellipsis> TAP Run </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tap-gitops/tap-view/ class=md-nav__link> <span class=md-ellipsis> TAP View </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tap-gitops/next-steps/ class=md-nav__link> <span class=md-ellipsis> Next Steps </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tap-gitops/run-with-argocd/ class=md-nav__link> <span class=md-ellipsis> TAP Run With ArgoCD </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=tanzu/tap/multi-env-promo/ class=md-nav__link> <span class=md-ellipsis> TAP Multi-Env Promotion </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5_4> <label class=md-nav__link for=__nav_5_4 id=__nav_5_4_label tabindex=0> <span class=md-ellipsis> TAP Supply Chain Customization </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_5_4_label aria-expanded=false> <label class=md-nav__title for=__nav_5_4> <span class="md-nav__icon md-icon"></span> TAP Supply Chain Customization </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=tanzu/supplychain/overview/ class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=tanzu/supplychain/gitops-flow/ class=md-nav__link> <span class=md-ellipsis> GitOps Flow </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5_5> <label class=md-nav__link for=__nav_5_5 id=__nav_5_5_label tabindex=0> <span class=md-ellipsis> TAP GUI/Portal </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_5_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5_5> <span class="md-nav__icon md-icon"></span> TAP GUI/Portal </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=tanzu/tap-gui/ class=md-nav__link> <span class=md-ellipsis> Intro </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tap-gui/gitlab-integration/ class=md-nav__link> <span class=md-ellipsis> GitLab Integration </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tap-gui/techdocs-minio/ class=md-nav__link> <span class=md-ellipsis> TechDocs with MinIO </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tap-gui/tdp-plugins/ class=md-nav__link> <span class=md-ellipsis> Backstage Plugins </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5_6> <label class=md-nav__link for=__nav_5_6 id=__nav_5_6_label tabindex=0> <span class=md-ellipsis> TAP on TKGs </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_5_6_label aria-expanded=false> <label class=md-nav__title for=__nav_5_6> <span class="md-nav__icon md-icon"></span> TAP on TKGs </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5_6_1> <label class=md-nav__link for=__nav_5_6_1 id=__nav_5_6_1_label tabindex=0> <span class=md-ellipsis> TAP 1.3.x </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_5_6_1_label aria-expanded=false> <label class=md-nav__title for=__nav_5_6_1> <span class="md-nav__icon md-icon"></span> TAP 1.3.x </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=tanzu/tkgs/tap13-overview/ class=md-nav__link> <span class=md-ellipsis> TAP on TKGs </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tkgs/tap13/build-basic/ class=md-nav__link> <span class=md-ellipsis> TAP Build Profile - Basic Supply Chain </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tkgs/tap13/build-scanning-testing/ class=md-nav__link> <span class=md-ellipsis> TAP Build Profile - Scanning & Testing Supply Chain </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tkgs/tap13/run/ class=md-nav__link> <span class=md-ellipsis> TAP Run Profile </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tkgs/tap13/view/ class=md-nav__link> <span class=md-ellipsis> TAP View Profile </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5_7> <label class=md-nav__link for=__nav_5_7 id=__nav_5_7_label tabindex=0> <span class=md-ellipsis> TAP DevSecOps </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_5_7_label aria-expanded=false> <label class=md-nav__title for=__nav_5_7> <span class="md-nav__icon md-icon"></span> TAP DevSecOps </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=tanzu/grype-airgapped/ class=md-nav__link> <span class=md-ellipsis> Use Grype In Restricted Environments </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5_8> <label class=md-nav__link for=__nav_5_8 id=__nav_5_8_label tabindex=0> <span class=md-ellipsis> TAP Misc </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_5_8_label aria-expanded=false> <label class=md-nav__title for=__nav_5_8> <span class="md-nav__icon md-icon"></span> TAP Misc </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=tanzu/tap/fluxcd-ssh/ class=md-nav__link> <span class=md-ellipsis> Git access with SSH </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tap/gitea/ class=md-nav__link> <span class=md-ellipsis> Setup Gitea </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=tanzu/custom-ca/ class=md-nav__link> <span class=md-ellipsis> Setup Custom CA </span> </a> </li> <li class=md-nav__item> <a href=tanzu/harbor-ca/ class=md-nav__link> <span class=md-ellipsis> Harbor with custom CA </span> </a> </li> <li class=md-nav__item> <a href=tanzu/minio-ca/ class=md-nav__link> <span class=md-ellipsis> Minio with custom CA </span> </a> </li> <li class=md-nav__item> <a href=tanzu/tkg-grafana/ class=md-nav__link> <span class=md-ellipsis> TKG Grafana with LDAP </span> </a> </li> <li class=md-nav__item> <a href=tanzu/dependencies/ class=md-nav__link> <span class=md-ellipsis> Dependencies </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_6> <label class=md-nav__link for=__nav_6 id=__nav_6_label tabindex> <span class=md-ellipsis> Platform Engineering/SRE </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_6_label aria-expanded=false> <label class=md-nav__title for=__nav_6> <span class="md-nav__icon md-icon"></span> Platform Engineering/SRE </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_6_1> <label class=md-nav__link for=__nav_6_1 id=__nav_6_1_label tabindex=0> <span class=md-ellipsis> Backstage Plugin </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_6_1_label aria-expanded=false> <label class=md-nav__title for=__nav_6_1> <span class="md-nav__icon md-icon"></span> Backstage Plugin </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=platform-sre/backstage/plugin/ class=md-nav__link> <span class=md-ellipsis> Intro </span> </a> </li> <li class=md-nav__item> <a href=platform-sre/backstage/plugin/backend/ class=md-nav__link> <span class=md-ellipsis> Backend Plugin </span> </a> </li> <li class=md-nav__item> <a href=platform-sre/backstage/plugin/frontend/ class=md-nav__link> <span class=md-ellipsis> Frontend Plugin </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_6_2> <label class=md-nav__link for=__nav_6_2 id=__nav_6_2_label tabindex=0> <span class=md-ellipsis> Backstage & Tanzu </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_6_2_label aria-expanded=false> <label class=md-nav__title for=__nav_6_2> <span class="md-nav__icon md-icon"></span> Backstage & Tanzu </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=platform-sre/backstage/tap/ class=md-nav__link> <span class=md-ellipsis> Intro </span> </a> </li> <li class=md-nav__item> <a href=platform-sre/backstage/tap/wrap-plugins/ class=md-nav__link> <span class=md-ellipsis> Wrap Plugins </span> </a> </li> <li class=md-nav__item> <a href=platform-sre/backstage/tap/add-wrap-plugin/ class=md-nav__link> <span class=md-ellipsis> Add Wrapped Plugins </span> </a> </li> <li class=md-nav__item> <a href=platform-sre/backstage/tap/tekton/ class=md-nav__link> <span class=md-ellipsis> Tekton Plugin </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_7> <label class=md-nav__link for=__nav_7 id=__nav_7_label tabindex> <span class=md-ellipsis> Jenkins X </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_7_label aria-expanded=false> <label class=md-nav__title for=__nav_7> <span class="md-nav__icon md-icon"></span> Jenkins X </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=jenkinsx/build-packs/ class=md-nav__link> <span class=md-ellipsis> Build Packs </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/jx-pipelines/ class=md-nav__link> <span class=md-ellipsis> Jenkins X Pipelines </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_7_3> <label class=md-nav__link for=__nav_7_3 id=__nav_7_3_label tabindex=0> <span class=md-ellipsis> Java Native Image Prod </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_7_3_label aria-expanded=false> <label class=md-nav__title for=__nav_7_3> <span class="md-nav__icon md-icon"></span> Java Native Image Prod </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/01-intro/ class=md-nav__link> <span class=md-ellipsis> Intro </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/02-cloud-sql/ class=md-nav__link> <span class=md-ellipsis> Cloud SQL </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/03-quarkus/ class=md-nav__link> <span class=md-ellipsis> Quarkus </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/04-jx-import/ class=md-nav__link> <span class=md-ellipsis> Import Into Jenkins X </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/05-jx-secrets/ class=md-nav__link> <span class=md-ellipsis> Database Connection And Secrets </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/06-native-image/ class=md-nav__link> <span class=md-ellipsis> Native Image </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/07-pipeline-improvements/ class=md-nav__link> <span class=md-ellipsis> Pipeline Improvements </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/08-preview-int-test/ class=md-nav__link> <span class=md-ellipsis> Previews & Integration Tests </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/09-production-improvements/ class=md-nav__link> <span class=md-ellipsis> Production Improvements </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/java-native-prod/10-promote-prod/ class=md-nav__link> <span class=md-ellipsis> Promote To Production </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=jenkinsx/builder-image/ class=md-nav__link> <span class=md-ellipsis> Create Builder Image </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/jxboot/ class=md-nav__link> <span class=md-ellipsis> JX Boot GKE </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/jxboot-aks/ class=md-nav__link> <span class=md-ellipsis> JX Boot AKS </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/aks-boot-core/ class=md-nav__link> <span class=md-ellipsis> JX Boot & CloudBees Core </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/rhos-311-minimal/ class=md-nav__link> <span class=md-ellipsis> OpenShift 3.11 </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/rhos-311-restricted/ class=md-nav__link> <span class=md-ellipsis> OpenShift 3.11 - Restricted </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/lighthouse-bitbucket/ class=md-nav__link> <span class=md-ellipsis> Lighthouse & Bitbucket </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/hello-world/ class=md-nav__link> <span class=md-ellipsis> HelloWorld </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/maven/ class=md-nav__link> <span class=md-ellipsis> Maven </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/hybrid/ class=md-nav__link> <span class=md-ellipsis> Hybrid </span> </a> </li> <li class=md-nav__item> <a href=jenkinsx/kubernetes-days/ class=md-nav__link> <span class=md-ellipsis> Example For Console Reel </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8> <label class=md-nav__link for=__nav_8 id=__nav_8_label tabindex> <span class=md-ellipsis> Software Eng. </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_8_label aria-expanded=false> <label class=md-nav__title for=__nav_8> <span class="md-nav__icon md-icon"></span> Software Eng. </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8_1> <label class=md-nav__link for=__nav_8_1 id=__nav_8_1_label tabindex=0> <span class=md-ellipsis> Automation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_8_1_label aria-expanded=false> <label class=md-nav__title for=__nav_8_1> <span class="md-nav__icon md-icon"></span> Automation </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=cloud/automation-pulumi/ class=md-nav__link> <span class=md-ellipsis> Pulumi </span> </a> </li> <li class=md-nav__item> <a href=certificates/lets-encrypt-k8s/ class=md-nav__link> <span class=md-ellipsis> Let's Encrypt K8S </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8_2> <label class=md-nav__link for=__nav_8_2 id=__nav_8_2_label tabindex=0> <span class=md-ellipsis> Software Engineering </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_8_2_label aria-expanded=false> <label class=md-nav__title for=__nav_8_2> <span class="md-nav__icon md-icon"></span> Software Engineering </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=swe/important-concepts/ class=md-nav__link> <span class=md-ellipsis> Important Concepts </span> </a> </li> <li class=md-nav__item> <a href=swe/naming/ class=md-nav__link> <span class=md-ellipsis> Naming </span> </a> </li> <li class=md-nav__item> <a href=swe/distributed/ class=md-nav__link> <span class=md-ellipsis> Distributed Computing </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8_3> <label class=md-nav__link for=__nav_8_3 id=__nav_8_3_label tabindex=0> <span class=md-ellipsis> Productivity </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_8_3_label aria-expanded=false> <label class=md-nav__title for=__nav_8_3> <span class="md-nav__icon md-icon"></span> Productivity </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=productivity/ class=md-nav__link> <span class=md-ellipsis> General </span> </a> </li> <li class=md-nav__item> <a href=productivity/incidents/ class=md-nav__link> <span class=md-ellipsis> Incidents </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8_4> <label class=md-nav__link for=__nav_8_4 id=__nav_8_4_label tabindex=0> <span class=md-ellipsis> Java </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_8_4_label aria-expanded=false> <label class=md-nav__title for=__nav_8_4> <span class="md-nav__icon md-icon"></span> Java </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=java/ class=md-nav__link> <span class=md-ellipsis> General </span> </a> </li> <li class=md-nav__item> <a href=keep-watching/ class=md-nav__link> <span class=md-ellipsis> Spring Boot App </span> </a> </li> <li class=md-nav__item> <a href=java/networking/ class=md-nav__link> <span class=md-ellipsis> Java Networking </span> </a> </li> <li class=md-nav__item> <a href=java/concurrency/ class=md-nav__link> <span class=md-ellipsis> Java Concurrency </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#call-me-j class=md-nav__link> <span class=md-ellipsis> Call me J </span> </a> <nav class=md-nav aria-label="Call me J"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#tracker class=md-nav__link> <span class=md-ellipsis> Tracker </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#main-topics class=md-nav__link> <span class=md-ellipsis> Main Topics </span> </a> <nav class=md-nav aria-label="Main Topics"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#other-material class=md-nav__link> <span class=md-ellipsis> Other Material </span> </a> </li> <li class=md-nav__item> <a href=#continuous-integration class=md-nav__link> <span class=md-ellipsis> Continuous Integration </span> </a> </li> <li class=md-nav__item> <a href=#continuous-delivery class=md-nav__link> <span class=md-ellipsis> Continuous Delivery </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <h1 id=joost-van-der-griendts-software-development-docs>Joost van der Griendt's Software Development Docs<a class=headerlink href=#joost-van-der-griendts-software-development-docs title="Permanent link">¶</a></h1> <p>This is a collection of knowledge that I have gathered over the years. I find it helps me learn better if I write it down, and often use the docs at different customers as reference.</p> <h2 id=call-me-j>Call me J<a class=headerlink href=#call-me-j title="Permanent link">¶</a></h2> <p>My full name is <em>Joost van der Griendt</em>, which unfortunately cannot be pronounced well in English.</p> <p>In order to facilitate non-Dutch speakers, you can refer to me as J (Jay).</p> <p>I've worked in the software development industry since 2006, as Sofware Developer (Java backend/Fullstack), Build Engineer, DevOps Engineer, Solutions Architect, and Product Manager. In the end, the only thing that matters is getting the right things done for the right reasons.</p> <p>On this side, I write guides, work-in-progress solutions to problems I've encountered in my hobby projects and my work.</p> <p>For more information about me, check out my <a href=https://www.linkedin.com/in/joostvdg/ >LinkedIn</a> profile. I also write more tightly focused articles on my personal blog - <a href=https://blog.joostvdg.net/ >blog.joostvdg.net</a>.</p> <p>I'm a big fan of Open Source Software and when it makes sense, Free & Free software. Which is also why this site is completely open, and open source as well.</p> <div class="admonition info"> <p class=admonition-title>Info</p> <p>Curious how this site is build? <a href=other/mkdocs/ >Read my explanation here</a></p> </div> <h3 id=tracker>Tracker<a class=headerlink href=#tracker title="Permanent link">¶</a></h3> <p>Your browser will tell you there's a tracker. I'm curious to understand if people are reading my docs and if so, which pages.</p> <p>Feel free to block the tracker (Google Analytics), most browsers are able to do so.</p> <h2 id=main-topics>Main Topics<a class=headerlink href=#main-topics title="Permanent link">¶</a></h2> <ul> <li><code>CI/CD</code> (Continuous Integration / Continous Delivery)<ul> <li>Jenkins</li> <li>Tekton</li> </ul> </li> <li><code>Containers</code> (Docker, Kubernetes, ...)</li> <li><code>SWE</code>: Software Engineering in all its facets (building, maintaining, social aspects, psychology, etc.)</li> <li>GitOps/DevOps for my Homelab</li> </ul> <h3 id=other-material>Other Material<a class=headerlink href=#other-material title="Permanent link">¶</a></h3> <ul> <li><a href=https://blog.joostvdg.net/ >blog.joostvdg.net</a></li> <li><a href=https://joostvdg.github.io/keep-watching/ >Breakdown of a Spring Boot + ReactJS Application</a></li> <li><a href=https://joostvdg.github.io/jenkinsx-workshop/ >Jenkins X Workshop</a></li> <li><a href=https://joostvdg.github.io/tap-workshops/ >Tanzu Application Platform Workshop</a></li> </ul> <h3 id=continuous-integration>Continuous Integration<a class=headerlink href=#continuous-integration title="Permanent link">¶</a></h3> <p>A good definition can be found here: <a href=http://www.martinfowler.com/articles/continuousIntegration.html>http://www.martinfowler.com/articles/continuousIntegration.html</a></p> <blockquote> <p>Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly."</p> </blockquote> <h3 id=continuous-delivery>Continuous Delivery<a class=headerlink href=#continuous-delivery title="Permanent link">¶</a></h3> <p>Continuous Delivery/deployment is the next step in getting yr software changes at the desired server in order to let your clients take a look at it. This article provides a good example of it: <a href=http://www.martinfowler.com/articles/continuousIntegration.html>http://www.martinfowler.com/articles/continuousIntegration.html</a></p> <blockquote> <p>To do Continuous Integration you need multiple environments, one to run commit tests, one or more to run secondary tests. Since you are moving executables between these environments multiple times a day, you'll want to do this automatically. So it's important to have scripts that will allow you to deploy the application into any environment easily.</p> </blockquote> <hr> <div class=md-source-file> <small> Last update: <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2024-09-13 14:01:19</span> </small> </div> </article> </div> </div> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright © 2024 Joost van der Griendt </div> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/joostvdg target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 480 512"><!-- Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> </a> <a href=https://twitter.com/joost_vdg target=_blank rel=noopener title=twitter.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg> </a> <a href=https://linkedin.com/in/joostvdg target=_blank rel=noopener title=linkedin.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"base": ".", "features": ["navigation.tabs", "navigation.instant", "navigation.tabs.sticky", "content.code.annotate", "content.code.copy", "toc.follow"], "search": "assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> <script src=assets/javascripts/bundle.6c14ae12.min.js></script> </body> </html>