• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Autodeploy när man inte kommer åt miljöerna
 

Autodeploy när man inte kommer åt miljöerna

on

  • 911 views

Robin Helly, Valtech ...

Robin Helly, Valtech
Många av våra kunder överlåter själva deployerna till sina driftsleverantörer och därmed kan vi i våra utvecklingsprojekt inte ha full kontroll på koden när vi släpper den ifrån oss - eller? Jo, säger Robin! Vi kan fortfarande automatisera och bygga bort den mänskliga faktorn nästan fullt ut under deploymentprocessen. Under denna session kommer hon att visa hur hon och teamet på Länsförsäkringar har löst det.

Statistics

Views

Total Views
911
Views on SlideShare
67
Embed Views
844

Actions

Likes
0
Downloads
0
Comments
0

7 Embeds 844

http://www.valtechlabs.se 523
http://valtech.local 170
http://phoenix-valtech.valtech.se 76
https://valtech.se 69
http://phoenix-valtech.azurewebsites.net 3
https://phoenix.valtech.se 2
http://www.google.se 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Autodeploy när man inte kommer åt miljöerna Autodeploy när man inte kommer åt miljöerna Presentation Transcript

    • Automatisera deployer på oåtkomliga servrar Robin Helly, .NET-utvecklare
    • Shake ’n bake
    • Automatisera deployer på oåtkomliga servrar Eller när shake ’n bake minskade kostnaderna för projektet Robin Helly, .NET-utvecklare
    • Driftsättning • Molnet • Egna fysiska servrar • Dedikerade servrar hos driftsleverantör • Manuell deploy och autodeploy
    • Manuell deploy hos extern driftsleverantör • Tidskrävande för flera parter • Driftsättarna känner inte till koden och utvecklarna känner inte till miljön • Mänsklig faktor • Deployerna kan skilja sig från gång till gång
    • Deploy-script • PowerShell script • Backup och ny deploy av siten • Körs hos och av driftsleverantören
    • Att göra en deploy • .NET Site • Visual studios ’publish’-funktion (Method: File system) • Komprimera innehållet till en .zip-fil • Flytta .zip-filen till samma plats som deploy-scriptet • Kör scriptet
    • Hitta siten och stoppa den
    • Hitta siten och stoppa den $website = Read-Host "Specify the name of the website" if((Test-Path "IIS:Sites$website") -and (Test-Path (Get-WebSite -name $website).physicalPath)){ $filePath = (Get-WebSite -name $website).physicalPath Stop-WebSite $website DeploySite $filePath Start-WebSite $website } else { Write-Host "The website does not exist (check that the spelling is correct)" } }
    • Hitta siten och stoppa den $website = Read-Host "Specify the name of the website" if((Test-Path "IIS:Sites$website") -and (Test-Path (Get-WebSite -name $website).physicalPath)){ } else { Write-Host "The website does not exist" } $filePath = (Get-WebSite -name $website).physicalPath Stop-WebSite $website DeploySite $filePath Start-WebSite $website }
    • Hitta siten och stoppa den $website = Read-Host "Specify the name of the website" if((Test-Path "IIS:Sites$website") -and (Test-Path (Get-WebSite -name $website).physicalPath)){ } else { Write-Host "The website does not exist" } $filePath = (Get-WebSite -name $website).physicalPath Stop-WebSite $website DeploySite $filePath Start-WebSite $website }
    • Hitta siten och stoppa den $website = Read-Host "Specify the name of the website" if((Test-Path "IIS:Sites$website") -and (Test-Path (Get-WebSite -name $website).physicalPath)){ } else { Write-Host "The website does not exist" } $filePath = (Get-WebSite -name $website).physicalPath Stop-WebSite $website DeploySite $filePath Start-WebSite $website }
    • Hitta siten och stoppa den function SetUp(){ $website = Read-Host "Specify the name of the website" if((Test-Path "IIS:Sites$website") -and (Test-Path (Get-WebSite -name $website).physicalPath)){ $filePath = (Get-WebSite -name $website).physicalPath } }
    • Hitta siten och stoppa den if(…){ $filePath = (Get-WebSite -name $website).physicalPath Stop-WebSite $website DeploySite $filePath Start-WebSite $website }
    • Hitta siten och stoppa den if(…){ $filePath = (Get-WebSite -name $website).physicalPath Stop-WebSite $website DeploySite $filePath Start-WebSite $website }
    • Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath CreateStatusFile $filePath }
    • Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath CreateStatusFile $filePath }
    • Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath CreateStatusFile $filePath }
    • Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath CreateStatusFile $filePath }
    • Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath CreateStatusFile $filePath }
    • Gör en backup av siten
    • Gör en backup av siten function BackUpSite($filePath){ $backupLocation = "$(get-location)BackupSite-backup" [string]$pathToZipExe = "$(get-location)7-Zip7z.exe"; [Array]$arguments = "A", "-tzip", "$backupLocation.zip", $filePath; & $pathToZipExe $arguments; Move-Item $filePathLogs $(get-location) }
    • Gör en backup av siten function BackUpSite($filePath){ $backupLocation = "$(get-location)BackupSite-backup" [string]$pathToZipExe = "$(get-location)7-Zip7z.exe"; [Array]$arguments = "A", "-tzip", "$backupLocation.zip", $filePath; & $pathToZipExe $arguments; Move-Item $filePathLogs $(get-location) }
    • Gör en backup av siten function BackUpSite($filePath){ $backupLocation = "$(get-location)BackupSite-backup" [string]$pathToZipExe = "$(get-location)7-Zip7z.exe"; [Array]$arguments = "A", "-tzip", "$backupLocation.zip", $filePath; & $pathToZipExe $arguments; Move-Item $filePathLogs $(get-location) }
    • Gör en backup av siten function BackUpSite($filePath){ $backupLocation = "$(get-location)BackupSite-backup" [string]$pathToZipExe = "$(get-location)7-Zip7z.exe"; [Array]$arguments = "A", "-tzip", "$backupLocation.zip", $filePath; & $pathToZipExe $arguments; Move-Item $filePathLogs $(get-location) }
    • Gör en backup av siten function BackUpSite($filePath){ $backupLocation = "$(get-location)BackupSite-backup" [string]$pathToZipExe = "$(get-location)7-Zip7z.exe"; [Array]$arguments = "A", "-tzip", "$backupLocation.zip", $filePath; & $pathToZipExe $arguments; athLogs $(get-location) }
    • Gör en backup av siten function BackUpSite($filePath){ $backupLocation = "$(get-location)BackupSite-backup" [string]$pathToZipExe = "$(get-location)7-Zip7z.exe"; [Array]$arguments = "A", "-tzip", "$backupLocation.zip", $filePath; & $pathToZipExe $arguments; $filePathLogs $(get-location) }
    • Ta bort den gamla siten function DeleteFolder($filePath){ Remove-Item "$filePath*" -Force -Recurse }
    • Ta bort den gamla siten function DeleteFolder($filePath){ Remove-Item "$filePath*" -Force -Recurse }
    • Ta bort den gamla siten function DeleteFolder($filePath){ Remove-Item "$filePath*" -Force -Recurse }
    • Ta bort den gamla siten function DeleteFolder($filePath){ Remove-Item "$filePath*" -Force -Recurse }
    • Deploy av den nya siten
    • Deploy av den nya siten function UnZip($destination){ $shell = new-object -com shell.application $zip = $shell.NameSpace("$(get-location)deploy.zip") foreach($item in $zip.items()) { $shell.Namespace($destination).copyhere($item) } }
    • Deploy av den nya siten function UnZip($destination){ $shell = new-object -com shell.application $zip = $shell.NameSpace("$(get-location)deploy.zip") foreach($item in $zip.items()) { $shell.Namespace($destination).copyhere($item) } }
    • Deploy av den nya siten function UnZip($destination){ $shell = new-object -com shell.application $zip = $shell.NameSpace("$(get-location)deploy.zip") foreach($item in $zip.items()) { $shell.Namespace($destination).copyhere($item) } }
    • Tidsstämpel på deploy function CreateStatusFile($filePath){ New-Item $filePathstatus.html -type file -force -value (Get-Date -Format "yyyy-MM-dd HH:mm:ss") }
    • Tidsstämpel på deploy function CreateStatusFile($filePath){ New-Item $filePathstatus.html -type file -force -value (Get-Date -Format "yyyy-MM-dd HH:mm:ss") }
    • Tidsstämpel på deploy function CreateStatusFile($filePath){ New-Item $filePathstatus.html -type file -force -value (Get-Date -Format "yyyy-MM-dd HH:mm:ss") }
    • Tidsstämpel på deploy function CreateStatusFile($filePath){ New-Item $filePathstatus.html -type file -force -value (Get-Date -Format "yyyy-MM-dd HH:mm:ss") }
    • Demo
    • Varför underlättar scriptet?
    • Varför underlättar scriptet? • Tidsinsparning
    • Varför underlättar scriptet? • Tidsinsparning • Garantera att deployen sker på samma sätt varje gång
    • Varför underlättar scriptet? • Tidsinsparning • Garantera att deployen sker på samma sätt varje gång • Större kontroll över att få deployen som det var tänkt
    • Varför underlättar scriptet? • Tidsinsparning • Garantera att deployen sker på samma sätt varje gång • Större kontroll över att få deployen som det var tänkt • Minimera problem och konflikter
    • Varför underlättar scriptet? • Tidsinsparning • Garantera att deployen sker på samma sätt varje gång • Större kontroll över att få deployen som det var tänkt • Minimera problem och konflikter • Hur gör ni med era deployer på externa servrar?
    • Deploy-paket
    • Deploy-paket Deploy-script +
    • Deploy-paket Deploy-script + Uppdaterad site =
    • Tack för att ni lyssnade