GithubHelp home page GithubHelp logo

rht-labs / enablement-docs Goto Github PK

View Code? Open in Web Editor NEW
89.0 89.0 114.0 251.38 MB

Collection of Enablement material for Red Hat Open Innovation Labs

Home Page: https://rht-labs.github.io/enablement-docs/#/

HTML 24.59% CSS 17.09% Shell 0.09% JavaScript 44.57% Dockerfile 0.08% Makefile 0.09% SCSS 13.49%

enablement-docs's People

Contributors

acammies avatar bparry02 avatar bridmacks avatar christophermay07 avatar ckavili avatar eformat avatar gsampaio-rh avatar haithamshahin333 avatar jacobsee avatar jtudelag avatar makentenza avatar maryprovinciatto avatar mayorova avatar misanche avatar mtakane avatar nissessenap avatar oybed avatar pcarney8 avatar rajiv-ranjan avatar rdebeasi avatar rmarting avatar robbbbh avatar springdo avatar tdbeattie avatar theisey avatar tomchalmers avatar tompage1994 avatar tylerauerbeck avatar wmcdonald404 avatar xandradx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

enablement-docs's Issues

Add MongoDB for each project

Sprint 1 Feature:
Add mongodb setup for each project namespace. NOTE - need to figure out how to add it into the build as will be required by the tests in lab3

Tasks

  • Add exercise instructions to repo
  • Add build and deploy ocp template to the Enablement CI/CD repo
  • Peer review exercise for accuracy
  • Add components to BIG PICTURE
  • ensure app can connect to the db once running ie usernames etc captured in the docs

Buy lots of nonsense

  • Table Tennis bats
  • Table Tennis balls
  • Retractable net
  • Mini-golf
  • Golf balls
  • Tiny rugby ball
  • Pink Cowboy hat & Hobby Horse

Create Pipeline - b/e API

Sprint 1 Feature:
Add pipeline for app checking out from develop and deploying to learners dev environment. Add master checkout to endup with app in test environment, replaying the pipeline.

Tasks

  • Add exercise instructions to repo
  • Add build and deploy ocp template to the Enablement CI/CD repo
  • Peer review exercise for accuracy
  • Add components to BIG PICTURE
  • Pipeline to do standard build > bake > deploy for the app

Value Slicing

Presentation of how we move from an Event Storm to a Product Backlog by using story mapping and value slicing techniques.

Time permitting, it would be good to do a short participation exercise to solidify this (perhaps Jeff Patton's exercise activities between waking up and getting to work).

  • write content in Google Slides
  • create content for short exercise and test
  • collect real value slice maps and add to Google Slides

Exercise 6 - Return of the App Monitoring

Technical Lab

Add application monitoring tooling such as Jenkins Dashboards and API Traffic Lights. Tighten the feedback loop by using Build Fail Analyser to suggest why builds have failed.

Ideas for the Lab flow:

  • Use DSL to build TL jobs
  • Create app build monitors showing vital info such as committer and test scores.
  • Add regex for build fail analyser to allow fast feedback

ADVANCED / XTRA TOPICS

  • Slack Notifications (WebHooks)
  • Hue Lights
  • Twilliio messaging for build stats
  • ‘Say’ command for Jenkins to tell when the build fails
  • Alexa “is the build passing?” skills

Add Jenkins

Sprint 1 Feature:
Create Jenkins instance using the s2i. Have learners add new plugin eg Blue Balls to the s2i prior to build to allow hands on experience. Create from template on labs or cop repo

Tasks

  • Add exercise instructions to repo
  • Add templates to the Enablement CI/CD repo
  • Peer review exercise for accuracy
  • Add components to BIG PICTURE

Print Posters

Posters to include:

  • Henrick skateboard > scooter > car
  • Agile Manifesto (values / principles)
  • Infinity Loop
  • What DevOps is Not

Exercise 2 - Attack of the Pipelines

Technical Lab

In this lab we will introduce the TODO list app, the backend and try get the walking skeleton of the app up and running, building and deploying through OCP. This is also where they’ll find their basic ToDoList App already created (in Lab 3, they’re going to add a feature). This plus the first exercise will simulate the full flow of the average first Sprint on a Residency.

Ideas for the Lab flow:

  • Introduce the TODO List app (vuejs/ nodejs /mongodb)
  • Build and run locally
  • Use Ansible (OpenShift Applier) to add Jenkins Slave?
  • Use Ansible (OpenShift Applier) to add MongoDB for each proj namespace
  • Create (using the UI) a simple BUILD > BAKE > DEPLOY
    • to ‘dev’ env
    • to ‘test’ env
  • Add Git hooks for triggering the build in Jenkins
  • Create Pipeline for Backend Microservice(s) also following same build > bake > deploy pattern

ADVANCED / XTRA TOPICS

  • Use config maps / env vars to inject the DB credentials into the nodejs app
  • Introduce UAT env using ansible and extend branch pipeline with promotion to UAT stage
  • Create complex deployment eg Blue/Green
  • Canary Deployment

Exercise 7 - The Cluster Awakens

Technical Lab

Add grafana, prometheus or other monitoring tools to show vital box health and statistics of the nodes, and the application containers. Add Grafanna annotations in the App by combining with Elastic Search from Kibana

Ideas for the Lab flow:

  • Add grafana / prometheus / node exporter to the cluster using the Ansible playbook.
  • Combine the FEK stack for log annotation on Grafana

ADVANCED / XTRA TOPICS

  • ??

Exercise 3 - Revenge of the Automated Testing

Technical Lab

This is the Lab where a new feature will be built. We could update the Product Backlog created on Day 1 to reflect that some features have been built (we could say we’re fast forwarding to Sprint 2) and top priority item are the ones we’ve set in the Lab to create. The new feature would be built using TDD, and built as a single, fullstack feature. Probably a new flag on the todo list to mark an item as important

Ideas for the Lab flow:

  • Introduce new feature and TDD
  • Add all tests to the pipeline and add E2E test phase after deploy
  • Git branch and implement tests to fail
  • Implement FE of feature to pass the tests (Jest or Mocha)
  • Implement Backend tests using Mocha / Chai
  • Implement API level feature and data model to pass the tests
  • Write feature e2e test.

ADVANCED / XTRA TOPICS

  • Add more complex features to the app such as a user login using auth0 as a service or Passport JS for local user dbs
  • Add Notification microservice for when TODOs are marked as done
  • Add Blue/ Green deployment switch over based on E2E test scores

Metrics-based Process Mapping (MBPM)

Content to introduce the practice of Metric Based Process Mapping, how we use it and show some examples of real MBPM artefacts.

Facilitate (with some pre-baked material) a MBPM of the E2E process of feature request generated from business to code running and being used in production. Capture some metrics associated with traditional software development (i.e. before automation, IaC, etc.). Brainstorm improvements we can apply using our engineering practices steering towards the key practices we're going to use in the following exercises. Show how we use this to build backlog of activities.

[ ] create content on MBPM in Google Slides
[ ] create a pre-baked example to showcase MBPM
[ ] create group exercise and test it out
[ ] collect real MBPMs and add to Google Slides

Book flights

  • find out where we're going
  • donal book flight
  • tim book flight

Exercise 5 - Non Functionals Strike Back

Technical Lab

Adding non functional testing to the pipeline. Things like static code analysis, code coverage, mutation testing and light performance testing etc. ZAP and Arachni scanning for security tests

Ideas for the Lab flow:

  • Introduce ESLint / JSHint for client and server.
  • Add to pipeline.
  • Add testing code coverage to pipeline
  • Simulate performance test against the API
  • Add Zap and Arachni security scanning. Add them to the Pipeline as new Stages.

ADVANCED / XTRA TOPICS

  • Mutation testing for the FE code or Backend (Stryker)?
  • Container security and vulnerability scanning
  • Dependency scanning eg Black Duck or something alike
  • Autoscaling rules for app load
  • Chaos monkey
  • BrowserStack
  • UI to Designs image testing. (Can’t remember what the Libaray is called)
  • Accessibility testing
  • Sonar Qube?

Joining Instructions

Create the joining instructions and mail them to delegates.
This can be used as a starter for now.

Required prerequisites :

  • Passionate about doing DevOps and Agile software development
  • Lean Startup mentality for working in small teams to build great applications quickly and iteratively
  • Open minded attitude
  • Willingness to roll up your sleeves to get your hands dirty doing labs
  • Willingness to learn and work together as part of a team
  • Familiarity with concepts of OpenShift, Containers and Ansible
  • Complete the git 101 tut (https://try.github.io/)

Machine requirements:

  • OpenShift CLI installed (v3.9)
  • Ansible Installed (v2.5)
  • NodeJs >v8
  • Docker
  • A good text editor such as VSCode / Atom / IntelliJ with some handy support plugins installed
    • Yaml
    • Docker
    • Ansible
    • VueJS
    • NodeJS
    • Groovy

Nice to have but not essential for enablement

  • Hands-on experience with OpenShift 3.x
  • Familiarity with automation tooling such as Ansible
  • Familiarity with Jenkins
  • Scrum or other Agile Frameworks

Create Project

Sprint 1 Feature:
Create learner-ci-cd, learner-dev, learner-test for each learner using the openshift applier. Guide learners by providing the templates.

Tasks

  • Add exercise instructions to repo
  • Add templates to the Enablement CI/CD repo
  • Peer review exercise for accuracy
  • Add components to BIG PICTURE

Order Stationary & boards to the venue

Somethings to get us started

  • Postits
  • Sharpies
  • Coloured Pens
  • Batteries
  • Big white / black foam boards
  • Flip Chart size Postits
  • Print outs of lab exercise

Event Storming

Content to introduce the practice of Event Storming, how we use it and show some examples of real Event Storm artefacts.

We will pre-bake an Event Storm map for the ToDoList business processes. We will use this to communicate the scope of the application using the event storming notation.

Perhaps some kind of group exercise or discussion to solidify learning.

Exercise 1 - The Manual Menace

Technical Lab

During this lab, delegates will build out and update their OCP cluster environment using code. They will ultimately create a lightweight version of the CI/CD repo but start from nothing but an empty Ansible Inventory.

Ideas for the Lab flow:

  • Intro to the OCP Env, Ansible and Container basics (this might be assumed already known but should have basic overview of the things ready for learners)
  • Check people can login / access the cluster etc
  • Use Ansible to provision the Project Namespaces used in the rest of the labs (OpenShift Applier)
  • Use Ansible (OpenShift Applier) to add group permissions
  • Add Jenkins, persistent using an S2I for additional Config
  • Add plugins to S2I eg green balls and junit reporter
  • Add a Jenkins Slave (here or in the next lab?)
  • Add GitLab (or Gogs) and Nexus using the OpenShift Applier and add your faces game avatar to it.
  • Create HELLO WORLD in git and add to Jenkins

ADVANCED / XTRA TOPICS

  • Add SSL to endpoints
  • Sonar Qube?
  • Add Mattermost or something similar to the PBI

Add Jenkins Slave

Sprint 1 Feature:
Add a slave node for Jenkins to be able to execute builds in. Use the NodeJS one hosted on the CoP with Chrome installed already as will be used later. NOTE - this could be done as part of lab1 or lab2, figure out where it makes more sense to add when going through the material.

Tasks

  • Add exercise instructions to repo
  • Add build of slave from OCP template to the Enablement CI/CD repo
  • Peer review exercise for accuracy
  • Add components to BIG PICTURE

What is Labs?

I think we need to position a short introduction to Labs, it's mission and vision, what residencies are, etc. Suggest some re-use of our standard deck used for sales.

  • set up "Labs is...." exercise
  • create content on Google Slides
  • peer review

Kick off and target outcomes

Write some content (e.g. a few slides) to introduce the enablement workshop and its the target outcomes / objectives.

  • create content on learning objective on Google Slides
  • create content on learning outcomes on Google Slides
  • create content on 'what this workshop is NOT' on Google Slides
  • peer review

Introduction to ToDoList App and local execution

Sprint 1 Feature:
Introduce the ref app. Get building locally and running locally so learners can explore the app. Check app into git instance created in previous lab.

Tasks

  • Add exercise instructions to repo
  • Peer review exercise for accuracy
  • Add components to BIG PICTURE
  • Overview of the stack and the vue's component architecture and vuex store

Exercise 8 - The Last Unicorn Dev

Bring it all together in a Demo Day style event.

Ideas:

  • Could have each team pick some components they’ve built and play them back to the group
  • Retrospect the full course
  • Show how all maps to the labs ci/cd. Over the course of the workshops the Learners will have built up most of what’s in there; but been taken on the journey themselves.

Add Nexus

Sprint 1 Feature:
Create Nexus server using templates from ci/cd for use as part of the pipeline

Tasks

  • Add exercise instructions to repo
  • Add templates to the Enablement CI/CD repo
  • Peer review exercise for accuracy
  • Add components to BIG PICTURE

Send out Calendar invites for sprint cadence

We're going to use Scrum and 3 x 1 week sprints to build out this enablement session.

Proposed Sprint Cadence

  • Sprint Planning: Thursdays 1000-1200 (UK time)
  • Daily Scrum: Daily 0945-1000 (UK time)
  • Sprint Review: Wednesday - 1600-1700 (UK time)
  • Sprint Retrospective: Wednesday - 1700-1800 (UK time)

Exercise 4 - Scaling and Slaves

Technical Lab

Extend jenkins with configuration as code for pipelines using DSL or Declarative-pipeline-as-code. Introduce new Slaves for Jenkins to consume in future builds. Add a helper job for re-deploying specific version of the app.

Ideas for the Lab flow:

  • Introduce Pipeline as code and why it’s important.
  • Migrate existing jobs to DSL / Pipeline syntax
  • Add new slaves to be used later for ZAP and Arachni Scanning
  • Add helper jobs to Jenkins.

ADVANCED / XTRA TOPICS

  • ??

Introduction to OCP and Ansible

  • write slide material (ask tim for structure and mak for info)
  • add 'everything as code practice to PL
  • top and tail content

Add Git

Sprint 1 Feature:
Add Git (Lab or Gogs?) to the ci-cd namespace for the learner. Use templates from CoP library as starting point.

Tasks

  • Add exercise instructions to repo
  • Add templates to the Enablement CI/CD repo
  • Peer review exercise for accuracy
  • Add components to BIG PICTURE

Create Pipeline - F/E (Dev and Master)

Sprint 1 Feature:
Add pipeline for app checking out from develop and deploying to labs-dev environment. Add master checkout to endup with app in test environment, replaying the pipeline.

Tasks

  • Add exercise instructions to repo
  • Add build and deploy ocp template to the Enablement CI/CD repo
  • Peer review exercise for accuracy
  • Add components to BIG PICTURE
  • Pipeline to do standard build > bake > deploy for the app

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.