[Windows] Add Apache and Nginx (#2517)

* [Windows] Add Apache and Nginx (#2501)

* Remove dot-sourcing in web-server tests

* Fix web servers readme generation
This commit is contained in:
Shivam Mathur
2021-02-01 06:03:49 -08:00
committed by GitHub
parent a49d4e2294
commit 349c66a268
8 changed files with 166 additions and 2 deletions

View File

@@ -0,0 +1,21 @@
################################################################################
## File: Install-Apache.ps1
## Desc: Install Apache HTTP Server
################################################################################
# Stop w3svc service
Stop-Service -Name w3svc | Out-Null
# Install latest apache in chocolatey
$installDir = "C:\tools"
Choco-Install -PackageName apache-httpd -ArgumentList "--force", "--params", "/installLocation:$installDir /port:80"
# Stop and disable Apache service
Stop-Service -Name Apache
Set-Service Apache -StartupType Disabled
# Start w3svc service
Start-Service -Name w3svc | Out-Null
# Invoke Pester Tests
Invoke-PesterTests -TestFile "Apache"

View File

@@ -0,0 +1,21 @@
################################################################################
## File: Install-Nginx.ps1
## Desc: Install Nginx
################################################################################
# Stop w3svc service
Stop-Service -Name w3svc | Out-Null
# Install latest nginx in chocolatey
$installDir = "C:\tools"
Choco-Install -PackageName nginx -ArgumentList "--force", "--params", "/installLocation:$installDir /port:80"
# Stop and disable Nginx service
Stop-Service -Name nginx
Set-Service nginx -StartupType Disabled
# Start w3svc service
Start-Service -Name w3svc | Out-Null
# Invoke Pester Tests
Invoke-PesterTests -TestFile "Nginx"

View File

@@ -7,6 +7,7 @@ Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Databases.psm1") -Disable
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Helpers.psm1") -DisableNameChecking Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Helpers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Tools.psm1") -DisableNameChecking Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Tools.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Java.psm1") -DisableNameChecking Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Java.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.WebServers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.VisualStudio.psm1") -DisableNameChecking Import-Module (Join-Path $PSScriptRoot "SoftwareReport.VisualStudio.psm1") -DisableNameChecking
$markdown = "" $markdown = ""
@@ -195,6 +196,8 @@ $markdown += New-MDList -Style Unordered -Lines (@(
) )
$markdown += New-MDNewLine $markdown += New-MDNewLine
$markdown += Build-WebServersSection
$vs = Get-VisualStudioVersion $vs = Get-VisualStudioVersion
$markdown += New-MDHeader "$($vs.Name)" -Level 3 $markdown += New-MDHeader "$($vs.Name)" -Level 3
$markdown += $vs | New-MDTable $markdown += $vs | New-MDTable

View File

@@ -0,0 +1,65 @@
function Get-ApachePath {
return Join-Path "C:\tools\" (Get-Item C:\tools\apache*).Name
}
function Get-NginxPath {
return Join-Path "C:\tools\" (Get-Item C:\tools\nginx*).Name
}
function Get-ApacheVersion {
$apacheBinPath = Join-Path (Get-ApachePath) "\bin\httpd"
(. $apacheBinPath -V | Select-String -Pattern "Apache/") -match "Apache/(?<version>\d+\.\d+\.\d+)" | Out-Null
return $Matches.Version
}
function Get-NginxVersion {
$nginxBinPath = Join-Path (Get-NginxPath) "\nginx"
(. $nginxBinPath -v 2>&1 | Select-String -Pattern "nginx/") -match "nginx/(?<version>\d+\.\d+\.\d+)" | Out-Null
return $Matches.Version
}
function Get-ApacheMarkdown
{
$name = "Apache"
$apachePort = "80"
$apacheService = Get-Service -Name $name
$apacheVersion = Get-ApacheVersion
$apacheConfigFile = Join-Path (Get-ApachePath) "\conf\httpd.conf"
return [PSCustomObject]@{
Name = $name
Version = $apacheVersion
ConfigFile = $apacheConfigFile
ServiceName = $apacheService.Name
ServiceStatus = $apacheService.Status
ListenPort = $apachePort
}
}
function Get-NginxMarkdown
{
$name = "Nginx"
$nginxPort = "80"
$nginxService = Get-Service -Name $name
$nginxVersion = Get-NginxVersion
$nginxConfigFile = Join-Path (Get-NginxPath) "\conf\nginx.conf"
return [PSCustomObject]@{
Name = $name
Version = $nginxVersion
ConfigFile = $nginxConfigFile
ServiceName = $nginxService.Name
ServiceStatus = $nginxService.Status
ListenPort = $nginxPort
}
}
function Build-WebServersSection {
$output = ""
$output += New-MDHeader "Web Servers" -Level 3
$output += @(
(Get-ApacheMarkdown),
(Get-NginxMarkdown)
) | Sort-Object Name | New-MDTable
$output += New-MDNewLine
return $output
}

View File

@@ -0,0 +1,25 @@
Describe "Apache" {
Context "Path" {
It "Apache" {
$apachePath = Join-Path (Join-Path "C:\tools\" (Get-Item C:\tools\apache*).Name) "\bin\httpd"
"$apachePath -V" | Should -ReturnZeroExitCode
}
}
Context "Service" {
$apacheService = Get-Service -Name Apache
$apacheServiceTests = @{
Name = $apacheService.Name
Status = $apacheService.Status
StartType = $apacheService.StartType
}
It "<Name> service is stopped" -TestCases $apacheServiceTests {
$Status | Should -Be "Stopped"
}
It "<Name> service is disabled" -TestCases $apacheServiceTests {
$StartType | Should -Be "Disabled"
}
}
}

View File

@@ -0,0 +1,25 @@
Describe "Nginx" {
Context "Path" {
It "Nginx" {
$nginxPath = Join-Path (Join-Path "C:\tools\" (Get-Item C:\tools\nginx*).Name) "\nginx"
"$nginxPath -v" | Should -ReturnZeroExitCode
}
}
Context "Service" {
$nginxService = Get-Service -Name nginx
$nginxServiceTests = @{
Name = $nginxService.Name
Status = $nginxService.Status
StartType = $nginxService.StartType
}
It "<Name> service is stopped" -TestCases $nginxServiceTests {
$Status | Should -Be "Stopped"
}
It "<Name> service is disabled" -TestCases $nginxServiceTests {
$StartType | Should -Be "Disabled"
}
}
}

View File

@@ -246,7 +246,9 @@
"{{ template_dir }}/scripts/Installers/Install-Edge.ps1", "{{ template_dir }}/scripts/Installers/Install-Edge.ps1",
"{{ template_dir }}/scripts/Installers/Install-Firefox.ps1", "{{ template_dir }}/scripts/Installers/Install-Firefox.ps1",
"{{ template_dir }}/scripts/Installers/Install-Selenium.ps1", "{{ template_dir }}/scripts/Installers/Install-Selenium.ps1",
"{{ template_dir }}/scripts/Installers/Install-IEWebDriver.ps1" "{{ template_dir }}/scripts/Installers/Install-IEWebDriver.ps1",
"{{ template_dir }}/scripts/Installers/Install-Apache.ps1",
"{{ template_dir }}/scripts/Installers/Install-Nginx.ps1"
] ]
}, },
{ {

View File

@@ -250,7 +250,9 @@
"{{ template_dir }}/scripts/Installers/Install-Edge.ps1", "{{ template_dir }}/scripts/Installers/Install-Edge.ps1",
"{{ template_dir }}/scripts/Installers/Install-Firefox.ps1", "{{ template_dir }}/scripts/Installers/Install-Firefox.ps1",
"{{ template_dir }}/scripts/Installers/Install-Selenium.ps1", "{{ template_dir }}/scripts/Installers/Install-Selenium.ps1",
"{{ template_dir }}/scripts/Installers/Install-IEWebDriver.ps1" "{{ template_dir }}/scripts/Installers/Install-IEWebDriver.ps1",
"{{ template_dir }}/scripts/Installers/Install-Apache.ps1",
"{{ template_dir }}/scripts/Installers/Install-Nginx.ps1"
] ]
}, },
{ {