Publicação de novas versões (deploy)

Dentre os arquivos repassados na entrega do código fonte da platafoma, encontram-se os arquivos que descrevem a configuração do ambiente de produção no AWS. Os arquivos estarão numa pasta:

ed9964fa-d66c-4383-b9fa-628b0ba569df

Você encontra mais informações sobre estes arquivos no link Configuração do Ambiente de Produção.

Para se conectar à máquina

  1. Inicie a conexão abrindo o arquivo com extensão .rdp

  2. Use a senha WindowsPassword, encontrada no arquivo resources.json, seção de configuração Compute

452c4381-d676-428a-802a-4b1cac9b5c57

Encontrando a aplicação

Há apenas uma aplicação configurada no IIS do servidor.

c2901a1b-a784-4b04-8c2e-5594921b7774

Os arquivos da aplicação podem ser encontrados no seguinte caminho:

5356b2cf-72fe-4c4b-b385-be081473b142

Publicando a aplicação

Para publicar a aplicação, basta levar o código fonte compilado para dentro do caminho indicado acima.

Alternativamente, se você usa o GitHub, oferecemos o script powershell abaixo, que pode ser executado diretamente dentro da máquina ou através de automação pelo AWS Cli, utilizando o recurso Systems Manager. Veja mais informações neste link.

O script abaixo te ajuda a fazer uma publicação dentro do servidor, clonando automaticamente o código a partir de um repositório do GitHub.
Primeiro, é necessário criar uma chave SSH na sua conta do GitHub, que serve para autorizar o acesso do script ao seu repositório. Siga os passos do artigo:
https://docs.github.com/en/authentication/connecting-to-github-with-ssh
Acesse o servidor via RDP e salve uma cópia da chave SSH.
Recomendamos "C:/Users/Administrator/.ssh/id_rsa".
Anote o caminho para usar nos próximos passos. No script abaixo, logo nas primeiras linhas, troque as variáveis $gitRepo e $sshKeyPath de acordo com sua conta/repositório no GitHub e seu ambiente.

O que este script faz é:

  1. Excluir a cópia local do código fonte baixada do GitHub, se houver

  2. Excluir a pasta de build, se existir

  3. Clonar o repositório, criando uma cópia local

  4. Restaurar os pacotes NuGet

  5. Compilar a aplicação

  6. Reiniciar o pool da aplicação no IIS

$gitRepo = "git@github.com:inamarketplace/marketplace.git"
$sshKeyPath = "/C/Users/Administrator/.ssh/id_rsa"
$localRepo = "C:\inetpub\repository"
$slnDir = "C:\inetpub\repository\marketplace"
$sln = "C:\inetpub\repository\marketplace\WhiteLabel.sln"
$csproj = "C:\inetpub\repository\marketplace\Presentation\Presentation.csproj"
$tempDir = "C:\inetpub\build"
$website = "C:\inetpub\wwwroot"
$connStrings = "connstrings.config"
$appSettings = "appsettings.config"
$connStringsDef = "connstrings.defaults.config"
$appSettingsDef = "appsettings.defaults.config"
if (test-path $localRepo)
{
"Cleaning local repository"
remove-item -recurse -force "$localRepo\*" -confirm:$false
}
if (test-path $tempDir)
{
"Cleaning temp build directory"
remove-item -recurse -force "$tempDir\*" -confirm:$false
}
if (!(test-path $localRepo))
{
new-item -itemType directory -force -path $localRepo
}
if (!(test-path $tempDir))
{
new-item -itemType directory -force -path $tempDir
}
"Cloning repository"
cd $localRepo
git clone -b master $gitRepo --config core.sshCommand="ssh -i $sshKeyPath -o StrictHostKeyChecking=no"
"Creating local separate config files in repository for building"
get-content "$localRepo\marketplace\Presentation\$connStringsDef" | set-content "$localRepo\marketplace\Presentation\$connStrings"
get-content "$localRepo\marketplace\Presentation\$appSettingsDef" | set-content "$localRepo\marketplace\Presentation\$appSettings"
"Restoring packages and building project"
cd \
nuget restore $sln
msbuild $csproj /nologo /verbosity:m /t:Build /t:pipelinePreDeployCopyAllFilesToOneFolder /p:_PackageTempDir=$tempDir /p:SolutionDir=$slnDir /p:Configuration=Release -restore
"Removing separate config files to prevent overwriting configurations"
remove-item "$tempDir\$connStrings" -force
remove-item "$tempDir\$appSettings" -force
$stopPoolRetryCount = 0;
if ((get-webAppPoolState -name "DefaultAppPool").Value -ne "Stopped")
{
"Stopping pool DefaultAppPool"
stop-webAppPool -name "DefaultAppPool"
}
do
{
if ((get-webAppPoolState -name "DefaultAppPool").Value -eq "Stopped")
{
"Pool stopped"
break
}
"Pool is not stopped, waiting for 10 seconds"
start-sleep -s 10
$stopPoolRetryCount = $stopPoolRetryCount + 1;
}
while ($stopPoolRetryCount -le 10)
if (test-path "$website\bin")
{
"Cleaning bin directory"
remove-item -recurse -force "$website\bin\*" -confirm:$false
}
"Copying built project to web site folder"
copy-item -force -recurse "$tempDir\*" -destination $website
if (!(test-path "$website\$connStrings"))
{
get-content "$slnDir\Presentation\$connStringsDef" | set-content "$website\$connStrings"
}
if (!(test-path "$website\$appSettings"))
{
get-content "$slnDir\Presentation\$appSettingsDef" | set-content "$website\$appSettings"
}
"Restarting pool"
start-webAppPool DefaultAppPool
"Done :)"

Observação: o script é fornecido "as-is" e sem garantias. Use por sua conta em risco. Fique à vontade para alterar e adaptar o script conforme as suas necessidades.


Voltar para o índice da documentação