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

Form analysis 1 forms found in the DOM

GET /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.