Разверните несколько веб-приложений из одного конвейера и сделайте репозиторий - PullRequest
0 голосов
/ 06 января 2020

В настоящее время в моем репо есть два проекта узлов: ./server и ./client

Я хочу запустить конвейер для установки обеих зависимостей, а затем при развертывании в «единственный» агент / vm / поддомен, я хочу быть в состоянии запустить оба.

  displayName: Deploy stage
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: Deploy
    displayName: Deploy
    environment: $(environmentName)
    pool: 
      vmImage: $(vmImageName)
    strategy:
      runOnce:
        deploy:
          steps:            
          - task: AzureWebApp@1
            displayName: 'Azure Web App Deploy: tomyserver'
            inputs:
              azureSubscription: $(azureSubscription)
              appType: webAppLinux
              appName: $(webAppName)
              runtimeStack: 'NODE|10.10'
              package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip
              startUpCommand: 'cd server; yarn run startnode;'

Я скопировал весь артефакт репо в виртуальную машину и сейчас только для сервера. Это одна установка, как указано выше. Я полагаю, что расширение startUpCommand до 'cd server; yarn run startnode;'cd ../client; yarn run start можно сделать лучше. Как бы я сделал это для сервера узла express и приложения реагирования?

В идеале я могу запустить оба приложения, и они будут запускаться в домене следующим образом:

  • thisproject.domain.com/app
  • thisproject.domain.com / project

Действительно не уверен в наилучшем подходе, я довольно любитель в конвейерах в azure, как это ,

1 Ответ

0 голосов
/ 07 января 2020

Вы можете использовать Kudu api для выполнения команды cd ../client; yarn run start.

Чтобы вызвать kudu api, вам нужно добавить задачу azure powershell после задачи AzureWebApp для запуска ниже встроенного сценария.

После развертывания артефактов в azure веб-приложении. Вы можете проверить развернутую среду веб-приложения azure, посетив https://{{YOUR-APP-NAME}}.scm.azurewebsites.net/api/zip/site/{{FOLDER}}.

. Вы можете проверить папку развернутого веб-приложения azure, посетив вышеуказанный сайт, и принять решение $apiCommand выполнить dir. Обычно это dir="D:\home\site\wwwroot".

steps:
- task: AzurePowerShell@4
  displayName: 'Azure PowerShell script: InlineScript' 
  inputs:    
    azureSubscription: '<...>'
    ScriptType: InlineScript
    Inline: |
     $ResGroupName = "<..>"
     $WebAppName = "<..>"

     # Get publishing profile for web application
     $WebApp = Get-AzWebApp -Name $WebAppName -ResourceGroupName $ResGroupName
     [xml]$publishingProfile = Get-AzWebAppPublishingProfile -WebApp $WebApp

     # Create Base64 authorization header
     $username = $publishingProfile.publishData.publishProfile[0].userName
     $password = $publishingProfile.publishData.publishProfile[0].userPWD
     $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
     $apiBaseUrl = "https://$($WebApp.Name).scm.azurewebsites.net/api/command"

     $apiCommand = @{
              command = 'powershell.exe -command "cd client; yarn run start"'
              dir="D:\home\site\wwwroot"
         }
     Invoke-RestMethod -Uri $apiBaseUrl -Headers @{"Authorization"="Basic $base64AuthInfo";"If-Match"="*"} -Method POST -ContentType "application/json" -Body (ConvertTo-Json $apiCommand)

    azurePowerShellVersion: LatestVersion

  enabled: false

Вышеуказанный скрипт получает имя пользователя и пароль из файла профиля Publi sh вашего веб-приложения Azure. Имя пользователя и пароль необходимы для вызова API kudu для выполнения команды. Имя пользователя и пароль также можно получить на портале azure (загрузите файл профиля Publi sh веб-приложения Azure на портале azure).

Указанный выше скрипт apicommand дает команду выполнить в развернутой среде azure веб-приложения. В приведенном выше примере команда будет запускать cd client; yarn run start для запуска клиентского приложения.

Пожалуйста, проверьте здесь для получения дополнительной информации о примерах kudu api

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...