github.com
Open in
urlscan Pro
140.82.121.4
Public Scan
Submitted URL: https://confidentsoftwaredelivery.com/
Effective URL: https://github.com/confident-software-delivery/resources
Submission: On December 30 via automatic, source certstream-suspicious — Scanned from DE
Effective URL: https://github.com/confident-software-delivery/resources
Submission: On December 30 via automatic, source certstream-suspicious — Scanned from DE
Form analysis
1 forms found in the DOMGET /confident-software-delivery/resources/search
<form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="157350235" data-scoped-search-url="/confident-software-delivery/resources/search"
data-owner-scoped-search-url="/orgs/confident-software-delivery/search" data-unscoped-search-url="/search" action="/confident-software-delivery/resources/search" accept-charset="UTF-8" method="get">
<label class="form-control input-sm header-search-wrapper p-0 js-chromeless-input-container header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center">
<input type="text" class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable" data-hotkey="s,/" name="q" data-test-selector="nav-search-input" placeholder="Search"
data-unscoped-placeholder="Search GitHub" data-scoped-placeholder="Search" autocapitalize="off" role="combobox" aria-haspopup="listbox" aria-expanded="false" aria-autocomplete="list" aria-controls="jump-to-results" aria-label="Search"
data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" spellcheck="false" autocomplete="off">
<input type="hidden" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf" value="wdDFqk8bknQQ4jdclA3Fv3f4pU8fsKRQxw81zF0NvPE5bc7e7gT25rN8Q/JxklHJI0VGVy11H71ppy/s24IYVQ==">
<input type="hidden" class="js-site-search-type-field" name="type">
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1 header-search-key-slash">
<path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path>
<path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path>
</svg>
<div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
<ul class="d-none js-jump-to-suggestions-template-container">
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="suggestion">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
</ul>
<ul class="d-none js-jump-to-no-results-template-container">
<li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
<span class="color-fg-muted">No suggested jump to results</span>
</li>
</ul>
<ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="scoped_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-owner-scoped-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="owner_scoped_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this organization">
In this organization
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="global_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
</ul>
</div>
</label>
</form>
Text Content
Skip to content Sign up * Why GitHub? * Features * Mobile * Actions * Codespaces * Packages * Security * Code review * Issues * Integrations * GitHub Sponsors * Customer stories * Team * Enterprise * Explore * Explore GitHub * Learn and contribute * Topics * Collections * Trending * Learning Lab * Open source guides * Connect with others * The ReadME Project * Events * Community forum * GitHub Education * GitHub Stars program * Marketplace * Pricing * Plans * Compare plans * Contact Sales * Education * In this repository All GitHub ↵ Jump to ↵ * No suggested jump to results * In this repository All GitHub ↵ Jump to ↵ * In this organization All GitHub ↵ Jump to ↵ * In this repository All GitHub ↵ Jump to ↵ Sign in Sign up {{ message }} CONFIDENT-SOFTWARE-DELIVERY / RESOURCES PUBLIC * Notifications * Fork 0 * Star 3 * Slides & companion material to the workshop “Confident Software Delivery“ GPL-3.0 License 3 stars 0 forks Star Notifications * Code * Issues 0 * Pull requests 2 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights master Switch branches/tags Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 3 branches 0 tags Go to file Code * Clone HTTPS GitHub CLI Use Git or checkout with SVN using the web URL. Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP LAUNCHING GITHUB DESKTOP If nothing happens, download GitHub Desktop and try again. LAUNCHING GITHUB DESKTOP If nothing happens, download GitHub Desktop and try again. LAUNCHING XCODE If nothing happens, download Xcode and try again. LAUNCHING VISUAL STUDIO CODE Your codespace will open once ready. There was a problem preparing your codespace, please try again. LATEST COMMIT dcarral Update markdownlint-cli version … Loading status checks… ec096de on Sep 4, 2019 Update markdownlint-cli version Getting rid of vulnerable js-yaml version. ec096de GIT STATS * 29 commits FILES Permalink Failed to load latest commit information. Type Name Latest commit message Commit time images Resize cover image 3 years ago slides Add slides used @ Agile Testing Days 2018 3 years ago .gitignore Install markdownlint as a dev dependency to lint markdown files 3 years ago .markdownlint.json Add Prettier as devDependency and perform some related changes 3 years ago .prettierrc.js Add Prettier as devDependency and perform some related changes 3 years ago .travis.yml Add base Travis CI configuration file 3 years ago LICENSE Initial commit 3 years ago README.md Add Prettier as devDependency and perform some related changes 3 years ago package-lock.json Update markdownlint-cli version 2 years ago package.json Update markdownlint-cli version 2 years ago View code Confident Software Delivery ToC Abstract Workshop design & facilitation Introduction to Software Delivery Context and definition The moral of the story Performance metrics The jargon of software delivery FAQ: CI vs CD Deployment pipeline GitLab CI/CD Core concepts: jobs & stages How to set up a pipeline in your project GitLab documentation External resources Books Websites README.MD CONFIDENT SOFTWARE DELIVERY I'm the living repository provided as companion material to the workshop “Confident Software Delivery”, so far facilitated at: * Agile Testing Days 2018 @ Berlin (November 13th, 2018). Crafted with ❤️ by Daniel Carral (@dcarral) & Sergio Álvarez (@codecoolture). Note: workshop participants are guided to complete several tasks on top of a web application specifically designed for this activity. Although this material isn't publicly available yet, we'd be happy to provide access upon request. TOC * Confident Software Delivery * ToC * Abstract * Workshop design & facilitation * Introduction to Software Delivery * Context and definition * The moral of the story * Performance metrics * The jargon of software delivery * FAQ: CI vs CD * Deployment pipeline * GitLab CI/CD * Core concepts: jobs & stages * How to set up a pipeline in your project? * GitLab documentation * External resources * Books * Websites ABSTRACT > Who doesn’t want to deliver value to their customers as soon as possible? In a > world where time-to-market dictates the success or failure of many companies, > confidently and quickly releasing software isn’t a competitive advantage > anymore, it’s a must-have. > > In this workshop we apply modern tools and techniques allowing developers and > testers to run automated test suites, set up new testing environments with > ease and automatically deliver new features and changes with confidence. > > On top of that, the facilitators strive to create a psychologically safe space > where participants, besides getting to know each other, are able to engage in > healthy discussions about software delivery and decide what to put into > practice back in their teams. WORKSHOP DESIGN & FACILITATION This activity has been designed to leverage the power of Liberating Structures (LS), which are a collection of “simple rules that make it easy to include and unleash everyone in shaping the future” meant to improve the way we work together. Here you can find more information about the specific structures we are using in this workshop: * Impromptu Networking * TRIZ with 1-2-4-All * Troika Consulting with Wise Crowds Would you like to implement them at your workplace? Have you already used them and would like to share how it went? We'd be happy to hear from you :) INTRODUCTION TO SOFTWARE DELIVERY CONTEXT AND DEFINITION After the release in 2018 of the book Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations, we can assert with confidence that high IT performance correlates with strong business performance, helping to boost productivity, profitability, and market share. When we talk about software delivery, we're using Martin Fowler's definition: “the journey from commit to production”. THE MORAL OF THE STORY > Improvements in software delivery are possible for every team and in every > company, as long as leadership provides consistent support -including time, > actions and resources- demonstrating a true commitment to improvement, and as > long as team members commit themselves to work. We expect you to leave this workshop with a solid understanding of key principles behind software delivery performance, hands-on experience creating and optimizing a deployment pipeline, as well as a couple of prioritized action items to put into practice back in your team. PERFORMANCE METRICS There are four key metrics we can use to effectively measure software delivery performance: 1. Delivery lead time 2. Deployment frequency 3. Mean Time to Restore (MTTR) 4. Change fail rate Below you can find a brief explanation of each of them, all being excerpts from Accelerate: > [...] The elevation of lead time as a metric is a key element of Lean Theory. > We measured product delivery lead time as the time it takes to go from code > committed to code successfully running in production. > > [...] The second metric to consider is batch size. Reducing batch size is > another central element of the Lean paradigm. In software, batch size is hard > to measure and communicate across contexts as there is no visible inventory. > Therefore, we settled on deployment frequency as a proxy for batch size since > it is easy to measure and typically has low variability.” > > [...] Delivery lead times and deployment frequency are both measures of > software delivery performance tempo. However, we wanted to investigate whether > teams who improved their performance were doing so at the expense of the > stability of the systems they were working on. > > [...] Traditionally, reliability is measured as time between failures. > However, in modern software products and services, which are rapidly changing > complex systems, failure is inevitable, so the key question becomes: how > quickly can service be restored?” (and therefore our two other measures: Mean > Time to Restore (MTTR) and Change Fail Rate) THE JARGON OF SOFTWARE DELIVERY FAQ: CI VS CD * Continuous Integration (CI): “Development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early“ (from https://www.thoughtworks.com/continuous-integration). * Continuous Delivery (CD): “Software development discipline where you build software in such a way that it can be released to production at any time” (from https://martinfowler.com/bliki/ContinuousDelivery.html) * On the other hand, Continuous Deployment: > [...] Sometimes confused with Continuous Delivery, it means that every > change goes through the pipeline and automatically gets put into > production, resulting in many production deployments every day. > > [...] Continuous Delivery just means that you are able to do frequent > deployments but may choose not to do it, usually due to businesses > preferring a slower rate of deployment. from https://martinfowler.com/bliki/ContinuousDelivery.html. Please note that, besides the aforementioned differences between them, they all have something they need to exist: automation. DEPLOYMENT PIPELINE Martin Fowler took some time on May 2013 to document the concept of deployment pipeline as a way to deal with one of the challenges of an automated build and test environment: you want your build to be fast, so that you can get fast feedback, but comprehensive tests take a long time to run. A deployment pipeline allows this by breaking up the build into stages. Each stage provides increasing confidence, usually at the cost of extra time. Early stages can find most problems yielding faster feedback, while later stages provide slower and more through probing. Please note that since Martin Fowler hasn't updated the article lately, it doesn't reflect the current state of the art anymore. As frequently highlighted in Accelerate, top performers are the ones who improve more, and faster. GITLAB CI/CD This hands-on workshop leverages the so-called GitLab CI/CD, which is their built-in Continuous Integration, Continuous Deployment, and Continuous Delivery support to build, test, and deploy applications. CORE CONCEPTS: JOBS & STAGES Simply put, a deployment pipeline consists of groups of jobs that get executed in stages (batches): * Jobs run independently from each other and are executed within the environment of a so-called runner. * Stages allow to group jobs so they can be executed in parallel. If they all succeed, the pipeline moves on to the next stage. HOW TO SET UP A PIPELINE IN YOUR PROJECT All what you need is a .gitlab-ci.yml file placed at the root directory of your repository to specify how the project should be built. What do we need to include there? Time to dive into some of the resources below. GITLAB DOCUMENTATION Here we have cherry-picked some articles from the GitLab CI/CD docs: * Configuration of your jobs with .gitlab-ci.yml * GitLab CI/CD variables * Introduction to pipelines and jobs * Cache dependencies in GitLab CI/CD * Introduction to environments and deployments Additionally, it might be worth reading: * Job artifacts * Run jobs sequentially, in parallel or build a custom pipeline EXTERNAL RESOURCES BOOKS * Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations * Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation WEBSITES * Continuous Delivery * Trunk Based Development: Introduction ABOUT Slides & companion material to the workshop “Confident Software Delivery“ RESOURCES Readme LICENSE GPL-3.0 License STARS 3 stars WATCHERS 2 watching FORKS 0 forks RELEASES No releases published PACKAGES 0 No packages published CONTRIBUTORS 2 * dcarral Daniel Carral * sergioalvz Sergi LANGUAGES * JavaScript 100.0% * © 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can’t perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.