Created
September 9, 2022 18:04
-
-
Save crizstian/6558fa2b751dd2c79b5599d582424f9e to your computer and use it in GitHub Desktop.
Revisions
-
crizstian created this gist
Sep 9, 2022 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,121 @@ harnessApiVersion: '1.0' type: SSH commandUnitType: INSTALL commandUnits: - artifactVariableName: artifact commandUnitType: DOWNLOAD_ARTIFACT deploymentType: SSH name: Download Artifact scriptType: POWERSHELL workingDirectory: ${DownloadDirectory} - command: "$serviceName=\"${ServiceName}\"\n\n$releaseId=\"${ReleaseNo}\"\n\n$artifactFilename = \"${DownloadDirectory}\" + \"\\\" + \"${artifact.fileName}\"\n\n$appPhysicalDirectory=\"${AppPhysicalDirectory}\" + \"\\Artifacts\\\" + $serviceName\n\nRemove-Item –path $appPhysicalDirectory -Force\n\n# Summary\n\nWrite-Host \"Service: ${serviceName}\"\nWrite-Host \"releaseId: ${ReleaseNo}\"\nWrite-Host \"artifactFilename: $artifactFilename\"\nWrite-Host \"appPhysicalDirectory: $appPhysicalDirectory\"\n\n\n$isFolderService = Test-Path -Path $artifactFilename -PathType Container\n\nif ($isFolderService)\n{\n Write-Host \"Service folder already exist, skipping...\"\n \n}\nelse{\n New-Item -Path \"${AppPhysicalDirectory}\\Artifacts\\\" -Name ${serviceName} -ItemType \"directory\"\n}\n\n\n# Check if artifact is File or Folder structure\n$isFile = Test-Path -Path $artifactFilename -PathType Leaf\n$isFolder = Test-Path -Path $artifactFilename -PathType Container\n\n if ($isFile -and ([IO.Path]::GetExtension($artifactFilename) -eq \".zip\" ))\n{\n Write-Host \"Extracting package from\" $artifactFilename \"to\" $appPhysicalDirectory\n Expand-Archive -Path $artifactFilename -DestinationPath $appPhysicalDirectory -Force\n}\nelse\n{\n Write-Host \"Artifact type is not a zip file. Skipping extract.\"\n}\nif ($isFolder)\n{\n Write-Host \"Copying folder from\" $artifactFilename \"to\" $appPhysicalDirectory\n Copy-Item -Path $artifactFilename -Filter \"*.*\" -Recurse -Destination $appPhysicalDirectory -Container\n}\n\n\n\nWrite-Host \"Done.\"" commandUnitType: EXEC deploymentType: SSH name: Expand Artifacts scriptType: POWERSHELL workingDirectory: C:/Artifacts - command: ls commandUnitType: EXEC deploymentType: SSH name: List Files scriptType: POWERSHELL workingDirectory: C:\inetpub\wwwroot\Artifacts\ - commandUnitType: COPY_CONFIGS deploymentType: SSH destinationParentPath: ${DownloadDirectory} name: Copy Configs - command: |- $releaseId="${ReleaseNo}" $serviceName="${ServiceName}" $appPhysicalDirectory="${AppPhysicalDirectory}" + "\Artifacts\" + $serviceName Write-Host "Release ID:" ${releaseId} Write-Host "Service Name:" ${serviceName} Write-Host "appPhysicalDirectory:" ${appPhysicalDirectory} # Copy configs to application directory $userProfile = "$env:userprofile" Copy-Item -Path "$userProfile\\${app.name}\\${serviceName}\\${env.name}\\runtime\\*.config" -Destination $appPhysicalDirectory -Force Import-Module WebAdministration $AppPoolName = "${AppPoolName}" $AppPoolDotNetVersion = "${AppPoolDotNetVersion}" if (!(Test-Path IIS:\AppPools\$AppPoolName -pathType container)) { Write-Host "Creating AppPool:" $AppPoolName $appPool = New-Item IIS:\AppPools\$AppPoolName } else { Write-Host "Updating AppPool:" $AppPoolName $appPool = Get-Item IIS:\AppPools\$AppPoolName } $appPool | Set-ItemProperty -Name "managedRuntimeVersion" -Value $AppPoolDotNetVersion Get-Item IIS:\AppPools\$AppPoolName | ft Write-Host "Done." commandUnitType: EXEC deploymentType: SSH name: Create AppPool scriptType: POWERSHELL - command: |- Import-Module WebAdministration $releaseId="${ReleaseNo}" $SiteName = "${ServiceName}" $SitePhysicalDirectory = "${AppPhysicalDirectory}" + "\Artifacts\" + $SiteName $AppPoolName = "${AppPoolName}" if (!(Test-Path IIS:\Sites\$SiteName -pathType container)) { $site = New-Item IIS:\Sites\$SiteName -physicalPath $sitePhysicalDirectory -bindings @{protocol="${SiteProtocol}";bindingInformation=":"+ "${SitePort}" +":"+ "${SiteHostName}"} -ApplicationPool $AppPoolName -AutoStart $true Write-Host "Created Website:" $SiteName } else { $site = Get-Item IIS:\Sites\$SiteName $Site | Set-ItemProperty -Name "physicalPath" -Value $sitePhysicalDirectory $Site | Set-ItemProperty -Name "bindings" -Value @{protocol="${SiteProtocol}";bindingInformation=":"+ "${SitePort}" +":"+ "${SiteHostName}"} Write-Host "Updated Website:" $SiteName } Start-WebSite $SiteName Get-Item IIS:\Sites\$SiteName Write-Host "Done." commandUnitType: EXEC deploymentType: SSH name: Create Website scriptType: POWERSHELL variables: - description: ReleaseId. name: ReleaseNo - description: Service Name name: ServiceName - description: Default Application Pool name: AppPoolName value: DefaultAppPool - description: Application pool DotNet Version name: AppPoolDotNetVersion value: v4.0 - description: Download Directory name: DownloadDirectory value: $env:TEMP - description: App Physical Base Directory name: AppPhysicalDirectory value: $env:SYSTEMDRIVE - description: Site Protocol name: SiteProtocol value: http - description: Site Port name: SitePort value: '80' - description: Site Host Name name: SiteHostName value: '*' - name: serviceName" - name: serviceName - name: releaseId