Created
September 9, 2022 18:04
-
-
Save crizstian/6558fa2b751dd2c79b5599d582424f9e to your computer and use it in GitHub Desktop.
This file contains 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 characters
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment