#angular #azure-devops #azure-pipelines #azure-deployment #azure-appservice
#angular #azure-devops #azure-конвейеры #azure-развертывание #azure-appservice
Вопрос:
Я весь день пытался запустить конвейер dev.azure для CI amp; CD для приложения Angular Frontend, но в итоге ничего не сработало…
В настоящее время я нахожусь в следующем состоянии:
У меня есть web.config
со следующим содержимым:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Когда я захожу на веб-сайт со следующим URL:https://mySecretSubdomain.azurewebsites.net / Я перенаправляюсь на https://mySecretSubdomain.azurewebsites.net/home и вижу пустую страницу (в источниках я вижу, что она вернула мою index.html
).
Ожидаемое поведение в этом случае: показать страницу входа (это происходит, когда я запускаю приложение локально с помощью Visual Studio Code.)
Я включил ведение журнала везде, где нашел его в своей службе приложений Azure. В DetailedErrors
папке под https://mySecretSubdomain.scm.azurewebsites.net Я получаю информацию о том, что мой запрос фактически привел к ошибке HTTP 404 — not found. И в запрошенном теге URL описания ошибки отображается значение: https://mySecretSubdomain:80/home
(Обратите внимание: https имеет смысл, порт 80 не имеет смысла, и я пропускаю часть .azurewebsites.net
в URL).
angular.json
содержит следующую часть:
...
"options": {
browserTarget": "my-SecretApp-name:build",
"host": "https://mySecretSubdomain.azurewebsites.net/",
"port": 443
}
...
Я просмотрел все возможные варианты, но не нашел ничего, что могло бы помочь. Есть идеи?
редактировать 14/09/2020 — 1:
Следующие ответы на комментарий @Cece Dong — MSFT:
- Запрошенный конвейер:
в yaml:
pool:
name: Azure Pipelines
demands: npm
steps:
- task: Npm@1
displayName: 'npm install'
inputs:
verbose: false
- task: Npm@1
displayName: 'npm run build'
inputs:
command: custom
verbose: false
customCommand: 'run build --prod'
- task: ArchiveFiles@2
displayName: 'Archive files'
inputs:
rootFolderOrFile: src
includeRootFolder: false
- task: PublishBuildArtifacts@1
displayName: 'Publish artifacts: drop'
-
Я проверил с помощью KUDU, все файлы опубликованы и доступны по пути «сайт».
-
На данный момент у меня нет времени следовать вашему примеру (я уверен, что это сработает), если это необходимо, я могу выполнить это в качестве теста позже на этой неделе.
редактировать 14/09/2020 — 2:
Я только что понял, что в руководстве (http://dot-net-box.blogspot.com/2020/01/deploy-angular-8-app-to-azure-with.html ), упомянутый @Cece Dong — MSFT, в конвейере больше шагов, чем у меня. Итак, я соответствующим образом обновляю свой конвейер и буду держать вас в курсе.
Комментарии:
1. Не могли бы вы поделиться своим конвейером и подробным журналом? Можете ли вы перейти к консоли Kudu и посмотреть, были ли развернуты фактические файлы? Если вы создадите простое приложение Angular и выполните действия, описанные в этом блоге: dot-net-box.blogspot.com/2020/01 / … , каков результат?
Ответ №1:
Проблема заключалась в том, что я не создал правильный конвейер.
В итоге сработала следующая конфигурация конвейера:
pool:
name: Azure Pipelines
steps:
- task: NodeTool@0
displayName: 'Use Node 13.x'
inputs:
versionSpec: 13.x
- task: Npm@1
displayName: 'npm install angular cli'
inputs:
command: custom
verbose: false
customCommand: 'install -g @angular/cli'
- task: Npm@1
displayName: 'npm install dependencies'
inputs:
command: custom
verbose: false
customCommand: 'install --no-package-lock'
- task: Npm@1
displayName: 'npm run build'
inputs:
command: custom
verbose: false
customCommand: 'run build --prod'
- task: AzureRmWebAppDeployment@4
displayName: 'Azure App Service Deploy: MyWebName'
inputs:
azureSubscription: 'MySubscription'
WebAppName: MyWebName
packageForLinux: 'dist/my-app-name'
Огромное спасибо @Cece Dong — MSFT за то, что указал мне правильное направление, упомянув руководство:http://dot-net-box.blogspot.com/2020/01/deploy-angular-8-app-to-azure-with.html
Комментарии:
1. Приятно видеть, что ваша проблема решена. Пожалуйста, примите это как ответ , как только сможете, это может быть полезно для других участников сообщества, читающих эту тему.