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-u...
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 utveck...
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...
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 ...
Hitta siten och stoppa den
$website = Read-Host "Specify the name of the website“
$environment = Read-Host "Is this a Web ...
Hitta siten och stoppa den
$website = Read-Host "Specify the name of the website“
$environment = Read-Host "Is this a Web ...
Hitta siten och stoppa den
$website = Read-Host "Specify the name of the website“
$environment = Read-Host "Is this a Web ...
Hitta siten och stoppa den
$website = Read-Host "Specify the name of the website“
$environment = Read-Host "Is this a Web ...
Hitta siten och stoppa den
function SetUp(){
$website = Read-Host "Specify the name of the website“
$environment = Read-Ho...
Hitta siten och stoppa den
if(…){
$filePath = (Get-WebSite -name $website).physicalPath
Stop-WebSite $website
DeploySite $...
Hitta siten och stoppa den
if(…){
$filePath = (Get-WebSite -name $website).physicalPath
Stop-WebSite $website
DeploySite $...
Hitta siten och stoppa den
if(…){
$filePath = (Get-WebSite -name $website).physicalPath
Stop-WebSite $website
DeploySite $...
Gör en deploy av paketet
function DeploySite($filePath){
BackUpSite $filePath
DeleteFolder $filePath
UnZip $filePath
MoveL...
Gör en deploy av paketet
function DeploySite($filePath){
BackUpSite $filePath
DeleteFolder $filePath
UnZip $filePath
MoveL...
Gör en deploy av paketet
function DeploySite($filePath){
BackUpSite $filePath
DeleteFolder $filePath
UnZip $filePath
MoveL...
Gör en deploy av paketet
function DeploySite($filePath){
BackUpSite $filePath
DeleteFolder $filePath
UnZip $filePath
MoveL...
Gör en deploy av paketet
function DeploySite($filePath){
BackUpSite $filePath
DeleteFolder $filePath
UnZip $filePath
MoveL...
Gör en deploy av paketet
function DeploySite($filePath){
BackUpSite $filePath
DeleteFolder $filePath
UnZip $filePath
MoveL...
Gör en deploy av paketet
function DeploySite($filePath){
BackUpSite $filePath
DeleteFolder $filePath
UnZip $filePath
MoveL...
Gör en deploy av paketet
function DeploySite($filePath){
BackUpSite $filePath
DeleteFolder $filePath
UnZip $filePath
MoveL...
Gör en backup av siten
Gör en backup av siten
function BackUpSite($filePath){
$backupLocation = "$(get-location)BackupSite-backup"
[string]$pathT...
Gör en backup av siten
function BackUpSite($filePath){
$backupLocation = "$(get-location)BackupSite-backup"
[string]$pathT...
Gör en backup av siten
function BackUpSite($filePath){
$backupLocation = "$(get-location)BackupSite-backup"
[string]$pathT...
Gör en backup av siten
function BackUpSite($filePath){
$backupLocation = "$(get-location)BackupSite-backup"
[string]$pathT...
Gör en backup av siten
function BackUpSite($filePath){
$backupLocation = "$(get-location)BackupSite-backup"
[string]$pathT...
Gör en backup av siten
function BackUpSite($filePath){
$backupLocation = "$(get-location)BackupSite-backup"
[string]$pathT...
Gör en backup av siten
function BackUpSite($filePath){
$backupLocation = "$(get-location)BackupSite-backup"
[string]$pathT...
Gör en backup av siten
$date = Get-Date –format yyyy-MM-dd
ocation)
Gör en backup av siten
$date = Get-Date –format yyyy-MM-dd
$backupLocation = "$(get-location)BackupSite-backup-$date")
Gör en backup av siten
$date = Get-Date –format yyyy-MM-dd
$backupLocation = "$(get-location)BackupSite-backup-$date")
Gör en backup av siten
$date = Get-Date –format yyyy-MM-dd
$backupLocation = "$(get-location)BackupSite-backup-$date")
$ba...
Gör en backup av siten
$date = Get-Date –format yyyy-MM-dd
$backupLocation = "$(get-location)BackupSite-backup-$date")
$ba...
Gör en backup av siten
$date = Get-Date –format yyyy-MM-dd
$backupLocation = "$(get-location)BackupSite-backup-$date")
$ba...
Gör en backup av siten
$date = Get-Date –format yyyy-MM-dd
$backupLocation = "$(get-location)BackupSite-backup-$date")
$ba...
Gör en backup av siten
$date = Get-Date –format yyyy-MM-dd
$backupLocation = "$(get-location)BackupSite-backup-$date")
$ba...
Gör en backup av siten
function BackUpSite($filePath){
$backupLocation = "$(get-location)BackupSite-backup"
[string]$pathT...
Gör en backup av siten
function BackUpSite($filePath){
$backupLocation = "$(get-location)BackupSite-backup"
[string]$pathT...
Gör en backup av siten
function BackUpSite($filePath){
$backupLocation = "$(get-location)BackupSite-backup"
[string]$pathT...
Gör en backup av siten
Gör en backup av siten
Move-Item $filePathLogs $(get-location)
Gör en backup av siten
Move-Item $filePathLogs $(get-location)
Gör en backup av siten
Move-Item $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("...
Deploy av den nya siten
function UnZip($destination){
$shell = new-object -com shell.application
$zip = $shell.NameSpace("...
Deploy av den nya siten
function UnZip($destination){
$shell = new-object -com shell.application
$zip = $shell.NameSpace("...
Flytta tillbaka loggarna
function CreateStatusFile($filePath){
New-Item $filePathstatus.html -type file -force -value (Get...
Flytta tillbaka loggarna
function MoveLogFiles($filePath) {
Move-Item "$(get-location)Logs" $filePath
}
Flytta tillbaka loggarna
function MoveLogFiles($filePath) {
Move-Item "$(get-location)Logs" $filePath
}
Flytta tillbaka loggarna
function MoveLogFiles($filePath) {
Move-Item "$(get-location)Logs" $filePath
}
Tidsstämpel på deploy
function CreateStatusFile($filePath){
New-Item $filePathstatus.html -type file -force -value (Get-Da...
Tidsstämpel på deploy
function CreateStatusFile($filePath){
New-Item $filePathstatus.html -type file -force
-value (Get-Da...
Tidsstämpel på deploy
function CreateStatusFile($filePath){
New-Item $filePathstatus.html -type file -force
-value (Get-Da...
Tidsstämpel på deploy
function CreateStatusFile($filePath){
New-Item $filePathstatus.html -type file -force
-value (Get-Da...
Kryptera ’connection strings’
Kryptera ’connection strings’
function EncryptConnectionStrings($filePath) {
$windir =
[System.Environment]::ExpandEnviron...
Kryptera ’connection strings’
function EncryptConnectionStrings($filePath) {
$windir =
[System.Environment]::ExpandEnviron...
Kryptera ’connection strings’
function EncryptConnectionStrings($filePath) {
$windir =
[System.Environment]::ExpandEnviron...
Kryptera ’connection strings’
function EncryptConnectionStrings($filePath) {
$windir =
[System.Environment]::ExpandEnviron...
Kryptera ’connection strings’
function EncryptConnectionStrings($filePath) {
$windir =
[System.Environment]::ExpandEnviron...
Kryptera ’connection strings’
function EncryptConnectionStrings($filePath) {
$windir =
[System.Environment]::ExpandEnviron...
Tidsstämpel för cache
Tidsstämpel för cache
function ChangeCacheTimestamp($filePath) {
$webConfig = "$filePathweb.config"
$xml = new-object Syst...
Tidsstämpel för cache
function ChangeCacheTimestamp($filePath) {
$webConfig = "$filePathweb.config"
$xml = new-object Syst...
Tidsstämpel för cache
function ChangeCacheTimestamp($filePath) {
$webConfig = "$filePathweb.config"
$xml = new-object Syst...
Tidsstämpel för cache
function ChangeCacheTimestamp($filePath) {
$webConfig = "$filePathweb.config"
$xml = new-object Syst...
Tidsstämpel för cache
function ChangeCacheTimestamp($filePath) {
$webConfig = "$filePathweb.config"
$xml = new-object Syst...
Tidsstämpel för cache
function ChangeCacheTimestamp($filePath) {
...
if($settingsNode -ne $null)
{ $settingsNode.Value = [...
Tidsstämpel för cache
function ChangeCacheTimestamp($filePath) {
...
if($settingsNode -ne $null)
{ $settingsNode.Value = [...
Tidsstämpel för cache
function ChangeCacheTimestamp($filePath) {
...
if($settingsNode -ne $null)
{ $settingsNode.Value = [...
Tidsstämpel för cache
function ChangeCacheTimestamp($filePath) {
...
if($settingsNode -ne $null)
{ $settingsNode.Value = [...
Ta bort administratörsvy
Ta bort administratörsvy
if(…){
$filePath = (Get-WebSite -name $website).physicalPath
Stop-WebSite $website
DeploySite $fi...
Ta bort administratörsvy
if($environment -eq "Y" -or $environment -eq "y" -or $environment -eq
"yes" -or $environment -eq ...
Ta bort administratörsvy
if($environment -eq "Y" -or $environment -eq "y" -or $environment -eq
"yes" -or $environment -eq ...
Ta bort administratörsvy
if($environment -eq "Y" -or $environment -eq "y" -or $environment -eq
"yes" -or $environment -eq ...
Ta bort administratörsvy
function ConfigureAuthorization($path) {
$webConfig = "$filePathweb.config"
$xml = new-object Sys...
Ta bort administratörsvy
function ConfigureAuthorization($path) {
$webConfig = "$filePathweb.config"
$xml = new-object Sys...
Ta bort administratörsvy
function ConfigureAuthorization($path) {
....
$locationAllow =
$xml.SelectSingleNode("//configura...
Ta bort administratörsvy
function ConfigureAuthorization($path) {
....
$locationAllow =
$xml.SelectSingleNode("//configura...
Ta bort administratörsvy
function ConfigureAuthorization($path) {
....
$locationAllow =
$xml.SelectSingleNode("//configura...
Ta bort administratörsvy
function ConfigureAuthorization($path) {
....
$locationAllow =
$xml.SelectSingleNode("//configura...
Ta bort administratörsvy
function ConfigureAuthorization($path) {
....
$locationAllow =
$xml.SelectSingleNode("//configura...
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 a...
Varför underlättar scriptet?
•Tidsinsparning
•Garantera att deployen sker på samma sätt varje gång
•Större kontroll över a...
Varför underlättar scriptet?
•Tidsinsparning
•Garantera att deployen sker på samma sätt varje gång
•Större kontroll över a...
Deploy-paket
Deploy-paket Deploy-script
+
Deploy-paket Deploy-script
+
Uppdaterad site
=
Tack för att ni lyssnade
Autodeploy när man inte kommer åt miljöerna
Autodeploy när man inte kommer åt miljöerna
Autodeploy när man inte kommer åt miljöerna
Autodeploy när man inte kommer åt miljöerna
Autodeploy när man inte kommer åt miljöerna
Autodeploy när man inte kommer åt miljöerna
Autodeploy när man inte kommer åt miljöerna
Autodeploy när man inte kommer åt miljöerna
Autodeploy när man inte kommer åt miljöerna
Upcoming SlideShare
Loading in …5
×

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

571 views

Published on

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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
571
On SlideShare
0
From Embeds
0
Number of Embeds
244
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Automatisera deployer på oåtkomliga servrar Robin Helly, .NET-utvecklare
  2. 2. Shake ’n bake
  3. 3. Automatisera deployer på oåtkomliga servrar Eller när shake ’n bake minskade kostnaderna för projektet Robin Helly, .NET-utvecklare
  4. 4. Driftsättning •Molnet •Egna fysiska servrar •Dedikerade servrar hos driftsleverantör •Manuell deploy och autodeploy
  5. 5. 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
  6. 6. Deploy-script •PowerShell script •Backup och ny deploy av siten •Körs hos och av driftsleverantören
  7. 7. 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
  8. 8. Hitta siten och stoppa den
  9. 9. 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)" } }
  10. 10. Hitta siten och stoppa den $website = Read-Host "Specify the name of the website“ $environment = Read-Host "Is this a Web Front instance? [Y]es or [N]o?" if((Test-Path "IIS:Sites$website") -and (Test-Path (Get-WebSite -name $website).physicalPath)){ $filePath = (Get-WebSite -name $website).physicalPath }
  11. 11. Hitta siten och stoppa den $website = Read-Host "Specify the name of the website“ $environment = Read-Host "Is this a Web Front instance? [Y]es or [N]o?" 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 }
  12. 12. Hitta siten och stoppa den $website = Read-Host "Specify the name of the website“ $environment = Read-Host "Is this a Web Front instance? [Y]es or [N]o?" 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 }
  13. 13. Hitta siten och stoppa den $website = Read-Host "Specify the name of the website“ $environment = Read-Host "Is this a Web Front instance? [Y]es or [N]o?" 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 }
  14. 14. Hitta siten och stoppa den function SetUp(){ $website = Read-Host "Specify the name of the website“ $environment = Read-Host "Is this a Web Front instance? [Y]es or [N]o?" if((Test-Path "IIS:Sites$website") -and (Test-Path (Get-WebSite -name $website).physicalPath)){ $filePath = (Get-WebSite -name $website).physicalPath } }
  15. 15. Hitta siten och stoppa den if(…){ $filePath = (Get-WebSite -name $website).physicalPath Stop-WebSite $website DeploySite $filePath [...] Start-WebSite $website }
  16. 16. Hitta siten och stoppa den if(…){ $filePath = (Get-WebSite -name $website).physicalPath Stop-WebSite $website DeploySite $filePath [...] Start-WebSite $website }
  17. 17. Hitta siten och stoppa den if(…){ $filePath = (Get-WebSite -name $website).physicalPath Stop-WebSite $website DeploySite $filePath [...] Start-WebSite $website }
  18. 18. Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath MoveLogFiles $filePath CreateStatusFile $filePath EncryptConnectionStrings $filePath ChangeCacheTimestamp $filePath }
  19. 19. Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath MoveLogFiles $filePath CreateStatusFile $filePath EncryptConnectionStrings $filePath ChangeCacheTimestamp $filePath }
  20. 20. Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath MoveLogFiles $filePath CreateStatusFile $filePath EncryptConnectionStrings $filePath ChangeCacheTimestamp $filePath }
  21. 21. Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath MoveLogFiles $filePath CreateStatusFile $filePath EncryptConnectionStrings $filePath ChangeCacheTimestamp $filePath }
  22. 22. Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath MoveLogFiles $filePath CreateStatusFile $filePath EncryptConnectionStrings $filePath ChangeCacheTimestamp $filePath }
  23. 23. Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath MoveLogFiles $filePath CreateStatusFile $filePath EncryptConnectionStrings $filePath ChangeCacheTimestamp $filePath }
  24. 24. Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath MoveLogFiles $filePath CreateStatusFile $filePath EncryptConnectionStrings $filePath ChangeCacheTimestamp $filePath }
  25. 25. Gör en deploy av paketet function DeploySite($filePath){ BackUpSite $filePath DeleteFolder $filePath UnZip $filePath MoveLogFiles $filePath CreateStatusFile $filePath EncryptConnectionStrings $filePath ChangeCacheTimestamp $filePath }
  26. 26. Gör en backup av siten
  27. 27. 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) }
  28. 28. 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) }
  29. 29. 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) }
  30. 30. 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) }
  31. 31. 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) }
  32. 32. 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) }
  33. 33. 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) }
  34. 34. Gör en backup av siten $date = Get-Date –format yyyy-MM-dd ocation)
  35. 35. Gör en backup av siten $date = Get-Date –format yyyy-MM-dd $backupLocation = "$(get-location)BackupSite-backup-$date")
  36. 36. Gör en backup av siten $date = Get-Date –format yyyy-MM-dd $backupLocation = "$(get-location)BackupSite-backup-$date")
  37. 37. Gör en backup av siten $date = Get-Date –format yyyy-MM-dd $backupLocation = "$(get-location)BackupSite-backup-$date") $backupLocationLoop = $backupLocation $copy = 1 do { $backupLocationLoop = "$backupLocation-$copy" $copy = $copy + 1 } while((Test-Path "$backupLocationLoop.zip") -eq $True)
  38. 38. Gör en backup av siten $date = Get-Date –format yyyy-MM-dd $backupLocation = "$(get-location)BackupSite-backup-$date") $backupLocationLoop = $backupLocation $copy = 1 do { $backupLocationLoop = "$backupLocation-$copy" $copy = $copy + 1 } while((Test-Path "$backupLocationLoop.zip") -eq $True)
  39. 39. Gör en backup av siten $date = Get-Date –format yyyy-MM-dd $backupLocation = "$(get-location)BackupSite-backup-$date") $backupLocationLoop = $backupLocation $copy = 1 do { $backupLocationLoop = "$backupLocation-$copy" $copy = $copy + 1 } while((Test-Path "$backupLocationLoop.zip") -eq $True)
  40. 40. Gör en backup av siten $date = Get-Date –format yyyy-MM-dd $backupLocation = "$(get-location)BackupSite-backup-$date") $backupLocationLoop = $backupLocation $copy = 1 do { $backupLocationLoop = "$backupLocation-$copy" $copy = $copy + 1 } while((Test-Path "$backupLocationLoop.zip") -eq $True)
  41. 41. Gör en backup av siten $date = Get-Date –format yyyy-MM-dd $backupLocation = "$(get-location)BackupSite-backup-$date") $backupLocationLoop = $backupLocation $copy = 1 do { $backupLocationLoop = "$backupLocation-$copy" $copy = $copy + 1 } while((Test-Path "$backupLocationLoop.zip") -eq $True)
  42. 42. 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) }
  43. 43. 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) }
  44. 44. 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", "$backupLocationLoop.zip", $filePath; & $pathToZipExe $arguments; Move-Item $filePathLogs $(get-location) }
  45. 45. Gör en backup av siten
  46. 46. Gör en backup av siten Move-Item $filePathLogs $(get-location)
  47. 47. Gör en backup av siten Move-Item $filePathLogs $(get-location)
  48. 48. Gör en backup av siten Move-Item $filePathLogs $(get-location)
  49. 49. Ta bort den gamla siten function DeleteFolder($filePath){ Remove-Item "$filePath*" -Force -Recurse }
  50. 50. Ta bort den gamla siten function DeleteFolder($filePath){ Remove-Item "$filePath*" -Force -Recurse }
  51. 51. Ta bort den gamla siten function DeleteFolder($filePath){ Remove-Item "$filePath*" -Force -Recurse }
  52. 52. Ta bort den gamla siten function DeleteFolder($filePath){ Remove-Item "$filePath*" -Force -Recurse }
  53. 53. Deploy av den nya siten
  54. 54. 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) } }
  55. 55. 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) } }
  56. 56. 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) } }
  57. 57. Flytta tillbaka loggarna function CreateStatusFile($filePath){ New-Item $filePathstatus.html -type file -force -value (Get-Date -Format "yyyy-MM-dd HH:mm:ss") }
  58. 58. Flytta tillbaka loggarna function MoveLogFiles($filePath) { Move-Item "$(get-location)Logs" $filePath }
  59. 59. Flytta tillbaka loggarna function MoveLogFiles($filePath) { Move-Item "$(get-location)Logs" $filePath }
  60. 60. Flytta tillbaka loggarna function MoveLogFiles($filePath) { Move-Item "$(get-location)Logs" $filePath }
  61. 61. Tidsstämpel på deploy function CreateStatusFile($filePath){ New-Item $filePathstatus.html -type file -force -value (Get-Date -Format "yyyy-MM-dd HH:mm:ss") }
  62. 62. Tidsstämpel på deploy function CreateStatusFile($filePath){ New-Item $filePathstatus.html -type file -force -value (Get-Date -Format "yyyy-MM-dd HH:mm:ss") }
  63. 63. Tidsstämpel på deploy function CreateStatusFile($filePath){ New-Item $filePathstatus.html -type file -force -value (Get-Date -Format "yyyy-MM-dd HH:mm:ss") }
  64. 64. Tidsstämpel på deploy function CreateStatusFile($filePath){ New-Item $filePathstatus.html -type file -force -value (Get-Date -Format "yyyy-MM-dd HH:mm:ss") }
  65. 65. Kryptera ’connection strings’
  66. 66. Kryptera ’connection strings’ function EncryptConnectionStrings($filePath) { $windir = [System.Environment]::ExpandEnvironmentVariables("%WINDIR%") Invoke-Expression "$windirMicrosoft.NETFramework64v4.0.30319aspnet_regiis.exe -pef 'connectionStrings' $filePath -prov 'RSAProtectedConfigurationProvider'” }
  67. 67. Kryptera ’connection strings’ function EncryptConnectionStrings($filePath) { $windir = [System.Environment]::ExpandEnvironmentVariables("%WINDIR%") Invoke-Expression "$windirMicrosoft.NETFramework64v4.0.30319aspnet_regiis.exe -pef 'connectionStrings' $filePath -prov 'RSAProtectedConfigurationProvider'” }
  68. 68. Kryptera ’connection strings’ function EncryptConnectionStrings($filePath) { $windir = [System.Environment]::ExpandEnvironmentVariables("%WINDIR%") Invoke-Expression "$windirMicrosoft.NETFramework64v4.0.30319aspnet_regiis.exe -pef 'connectionStrings' $filePath -prov 'RSAProtectedConfigurationProvider'” }
  69. 69. Kryptera ’connection strings’ function EncryptConnectionStrings($filePath) { $windir = [System.Environment]::ExpandEnvironmentVariables("%WINDIR%") Invoke-Expression "$windirMicrosoft.NETFramework64v4.0.30319aspnet_regiis.exe -pef 'connectionStrings' $filePath -prov 'RSAProtectedConfigurationProvider'” }
  70. 70. Kryptera ’connection strings’ function EncryptConnectionStrings($filePath) { $windir = [System.Environment]::ExpandEnvironmentVariables("%WINDIR%") Invoke-Expression "$windirMicrosoft.NETFramework64v4.0.30319aspnet_regiis.exe -pef 'connectionStrings' $filePath -prov 'RSAProtectedConfigurationProvider'” }
  71. 71. Kryptera ’connection strings’ function EncryptConnectionStrings($filePath) { $windir = [System.Environment]::ExpandEnvironmentVariables("%WINDIR%") Invoke-Expression "$windirMicrosoft.NETFramework64v4.0.30319aspnet_regiis.exe -pef 'connectionStrings' $filePath -prov 'RSAProtectedConfigurationProvider'” }
  72. 72. Tidsstämpel för cache
  73. 73. Tidsstämpel för cache function ChangeCacheTimestamp($filePath) { $webConfig = "$filePathweb.config" $xml = new-object System.Xml.XmlDocument $xml.Load($webConfig) $settingsNode = $xml.SelectSingleNode("//configuration/applicationSettings /Cookies.Settings/setting[@name='CacheTimestamp']") ... }
  74. 74. Tidsstämpel för cache function ChangeCacheTimestamp($filePath) { $webConfig = "$filePathweb.config" $xml = new-object System.Xml.XmlDocument $xml.Load($webConfig) $settingsNode = $xml.SelectSingleNode("//configuration/applicationSettings /Cookies.Settings/setting[@name='CacheTimestamp']") ... }
  75. 75. Tidsstämpel för cache function ChangeCacheTimestamp($filePath) { $webConfig = "$filePathweb.config" $xml = new-object System.Xml.XmlDocument $xml.Load($webConfig) $settingsNode = $xml.SelectSingleNode("//configuration/applicationSettings /Cookies.Properties.Settings/setting[@name='CacheTimestamp']") ... }
  76. 76. Tidsstämpel för cache function ChangeCacheTimestamp($filePath) { $webConfig = "$filePathweb.config" $xml = new-object System.Xml.XmlDocument $xml.Load($webConfig) $settingsNode = $xml.SelectSingleNode("//configuration/applicationSettings /Cookies.Settings/setting[@name='CacheTimestamp']") ... }
  77. 77. Tidsstämpel för cache function ChangeCacheTimestamp($filePath) { $webConfig = "$filePathweb.config" $xml = new-object System.Xml.XmlDocument $xml.Load($webConfig) $settingsNode = $xml.SelectSingleNode("//configuration/applicationSettings /Cookies.Settings/setting[@name='CacheTimestamp']") ... }
  78. 78. Tidsstämpel för cache function ChangeCacheTimestamp($filePath) { ... if($settingsNode -ne $null) { $settingsNode.Value = [string] (get-date).ticks } else { ... } $xml.Save($webConfig) }
  79. 79. Tidsstämpel för cache function ChangeCacheTimestamp($filePath) { ... if($settingsNode -ne $null) { $settingsNode.Value = [string] (get-date).ticks } else { ... } $xml.Save($webConfig) }
  80. 80. Tidsstämpel för cache function ChangeCacheTimestamp($filePath) { ... if($settingsNode -ne $null) { $settingsNode.Value = [string] (get-date).ticks } else { ... } $xml.Save($webConfig) }
  81. 81. Tidsstämpel för cache function ChangeCacheTimestamp($filePath) { ... if($settingsNode -ne $null) { $settingsNode.Value = [string] (get-date).ticks } else { ... } $xml.Save($webConfig) }
  82. 82. Ta bort administratörsvy
  83. 83. Ta bort administratörsvy if(…){ $filePath = (Get-WebSite -name $website).physicalPath Stop-WebSite $website DeploySite $filePath [...] Start-WebSite $website }
  84. 84. Ta bort administratörsvy if($environment -eq "Y" -or $environment -eq "y" -or $environment -eq "yes" -or $environment -eq "Yes") { ConfigureAuthorization 'cookies/admin' }
  85. 85. Ta bort administratörsvy if($environment -eq "Y" -or $environment -eq "y" -or $environment -eq "yes" -or $environment -eq "Yes") { ConfigureAuthorization 'cookies/admin' }
  86. 86. Ta bort administratörsvy if($environment -eq "Y" -or $environment -eq "y" -or $environment -eq "yes" -or $environment -eq "Yes") { ConfigureAuthorization 'cookies/admin' }
  87. 87. Ta bort administratörsvy function ConfigureAuthorization($path) { $webConfig = "$filePathweb.config" $xml = new-object System.Xml.XmlDocument $xml.Load($webConfig) [...] $xml.Save($webConfig) }
  88. 88. Ta bort administratörsvy function ConfigureAuthorization($path) { $webConfig = "$filePathweb.config" $xml = new-object System.Xml.XmlDocument $xml.Load($webConfig) [...] $xml.Save($webConfig) }
  89. 89. Ta bort administratörsvy function ConfigureAuthorization($path) { .... $locationAllow = $xml.SelectSingleNode("//configuration/location[@path='$path']/syste m.web/authorization/allow") if($locationAllow -ne $null) { $node = $locationAllow.ParentNode.RemoveChild($locationAllow) } ... }
  90. 90. Ta bort administratörsvy function ConfigureAuthorization($path) { .... $locationAllow = $xml.SelectSingleNode("//configuration/location[@path='$path']/syste m.web/authorization/allow") if($locationAllow -ne $null) { $node = $locationAllow.ParentNode.RemoveChild($locationAllow) } ... }
  91. 91. Ta bort administratörsvy function ConfigureAuthorization($path) { .... $locationAllow = $xml.SelectSingleNode("//configuration/location[@path='$path']/syste m.web/authorization/allow") if($locationAllow -ne $null) { $node = $locationAllow.ParentNode.RemoveChild($locationAllow) } ... }
  92. 92. Ta bort administratörsvy function ConfigureAuthorization($path) { .... $locationAllow = $xml.SelectSingleNode("//configuration/location[@path='$path']/syste m.web/authorization/allow") if($locationAllow -ne $null) { $node = $locationAllow.ParentNode.RemoveChild($locationAllow) } ... }
  93. 93. Ta bort administratörsvy function ConfigureAuthorization($path) { .... $locationAllow = $xml.SelectSingleNode("//configuration/location[@path='$path']/syste m.web/authorization/allow") if($locationAllow -ne $null) { $node = $locationAllow.ParentNode.RemoveChild($locationAllow) } ... }
  94. 94. Demo
  95. 95. Varför underlättar scriptet?
  96. 96. Varför underlättar scriptet? •Tidsinsparning
  97. 97. Varför underlättar scriptet? •Tidsinsparning •Garantera att deployen sker på samma sätt varje gång
  98. 98. 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
  99. 99. 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
  100. 100. 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?
  101. 101. Deploy-paket
  102. 102. Deploy-paket Deploy-script +
  103. 103. Deploy-paket Deploy-script + Uppdaterad site =
  104. 104. Tack för att ni lyssnade

×