Utveckling av moln baserade applikationer 2020

Kurs från 2020-08-31 till 2020-10-08

Automatisering av bygg och release

Lektion 4 av 12, onsdag den 9:e september 2020

Målet med denna lektion är att lära hur man kan automatisera sina bygg och release (med utgångspunkt i Azure DevOps).

Lektionsplan

Lektion från kl. 8:30 till kl. 16:30

Lunch 12:00 till 13:00

Lektionsteori

Detta är material (artiklar, videoer, blogs, podcasts etc) som är den teoretiska bas för denna lektion, det antas att du har läst/set/lystnad detta innan lektionen starter.

Continuous Integration

Continuous Deployment / Delivery

DevOps

Total (71 min):

Bakgrundsmaterial

Detta är litteratur som är frivillig, och som kan kan används till at få en djupare insikt i dagens ämnen. Oftast förklara det bakgrunden till dagens lektionsteori, går mer på djupet med ämne eller han har en annan vinkel på det samma material.

Continuous Integration

Artikel (6 min): What is Proper Continuous Integration?

Artikel: Why We Need Continuous Integration

Artikel: Martin Fowler: Continuous Integration

Continuous Deployment / Delivery

Artikel (13 min): CI/CD Pipeline: A Gentle Introduction

DevOps

Artikel (9 min): The Eight Phases of a DevOps Pipeline

The Feedback Loop: How to Adapt to Constant Change

DORA: Accelerate State of DevOps 2019

Puppet: 2019 State of DevOps Report

Azure DevOps

Video (52 min): Deploying anything to Azure with Azure DevOps

Artikel + Video (5 min + 2 min): What is Azure DevOps?

Artikel (4 min): Blue-Green Deployment with Azure DevOps and App Services

Video (11 min): Azure DevOps Solutions; Azure DevOps, DevTest Labs

Kurs (531 min): Microsoft Learn: Deploy applications with Azure DevOps

Pipelines

Artikel (4 min): Key concepts for new Azure Pipelines users

Artikel (2 min): What is Azure Pipelines?

Artikel (40 min): Azure DevOps Pipeline: YAML schema reference

Artikel (15 min): Build and release tasks

Github repo: Azure Pipelines Tasks

Tutorial (4 min): Microsoft DevOps build and deploy image

Continuous building, gating and releasing using AzureDevOps, Helm3, Application Insights and AKS with automated rollback (Part 1 of 2)

Continuous Kubernetes blue-green deployments on Azure using Nginx, AppGateway or TrafficManager (Part 2 of 2)

Azure DevOps - Docker Release Pipeline

Github Actions

Github Actions är ett sätt att bygga pipelines direkt i Azure

Kurs (242 min): Microsoft Learn: Automate your workflow with GitHub Actions

Buddy uppgifter

Dagens blogg

Skriv en tutorial vart ni tar utgångspunkt i dissa övningar, lägg gärna till litet teori (vad är en pipeline etc).

OBS Akta vad ni skriver i eran blogg, så att ni inte skriver lösenord etc.

Namnge dagens blogg 04.md, ni får själv välja om ni vill ha en stor blogg som innehåller alla dagens övningar, eller om ni delar upp den i fler delar, i så fall ska ni namnge delarna som: 04a.md, 04b.md etc.

Övning 1: CI pipeline i Azure DevOps

Hints för 1a + 1b:

Övning 1a: Bygg

  1. Konfigurera en bygg-pipeline i Azure for ett Github projekt.
    • Ni kan använda ett tidigare webprojekt eller bygga på ett par enhetstestar på Hallo World
    • Om ni använder Hallo World, bör ni forka repoet så att ni kan få med en DevOps yaml-fil i repoet samt en Dockerfile
  2. Konfigurera så att alla enhets tests körs som en del av byggen

Övning 1b: Trigger på bygg

  1. Konfigurera byggen så att den köras till vi varje push till Github
    • Det göras med en trigger i DevOps
  2. Sätt en build-sticker på ert Github projekt, så alla kan se status på projektet

Övning 2: CD pipeline i Azure DevOps

Hints för 2a + 2b:

Övning 2a

  1. Se till att ett Docker image är output av ditt CI byggen
    • Evt kan man bygga Docker imaget efter CI bygget, så att det inte tar tid ifrån CI bygget
  2. Push denna container från DevOps till Azure Container Registry (ACR) efter varje byggen, med en ny tag för varje varje bygg
    • En naturlig tag är: Build Id

Övning 2b

Skåpa en release pipeline som deployer din webb app till ACI (eller en App Service) från ACR

Extra övningar

Dissa är extra övningar ni kan göra om ni har tid över, de kan göras i den ordning ni känner för

Extra: Kubernetes

Få Kubernetes (AKS) till att kontrollera en image in ACI.

Hints:

Extra: Pulumi

Skåpa en Pumumi CI / CD pipeline som konfigurera upp din ACI / App Service

Hints: