Как скопировать файлы из каталога артефактов в службу приложений azure? - PullRequest
0 голосов
/ 27 февраля 2020

МАЛЕНЬКИЙ ФОН:

Я создал azure CI / CD конвейер для. NET и на шаге CI есть шаг, чтобы проглотить css / js. Каким-то образом я заметил, что в моих сгенерированных артефактах глотание css / js не приходит. Итак, согласно последнему ответу в посте ( Gulp-compiled CSS папка отсутствует в Azure артефакте сборки DevOps Build Artifact ) мне удалось найти путь к сгенерированному css / js и скопировать в $(Build.ArtifactStagingDirectory) (добавив задачу копирования файлов после gulp и перед опубликованной задачей артефакта sh). Как и на скриншоте ниже, вы можете видеть, что папки, отмеченные синим прямоугольником, теперь копируются в $(Build.ArtifactStagingDirectory).

enter image description here

СЕЙЧАС ПРИХОДИТ К ВОПРОСУ:

Я думаю, что в конвейере выпуска артефакт, используемый для развертывания его в azure приложении, называется «SampleWebApplication.zip». Теперь я не уверен, как скопировать мои папки css / js в приложение azure, потому что, когда я вижу папку сайта приложения azure, все равно эти папки css и js отсутствуют в папке активов. .

EDIT-1

Прикрепленный скриншот задач конвейера ниже: enter image description here

Также прикреплен YAML для Задача «Построить решение» и «Publi sh Артефакт»

Построить решение YAML: -

#Your build pipeline references an undefined variable named ‘Parameters.solution’. Create or edit the build pipeline for this YAML file, define the variable on the Variables tab. See https://go.microsoft.com/fwlink/?linkid=865972
#Your build pipeline references the ‘BuildPlatform’ variable, which you’ve selected to be settable at queue time. Create or edit the build pipeline for this YAML file, define the variable on the Variables tab, and then select the option to make it settable at queue time. See https://go.microsoft.com/fwlink/?linkid=865971
#Your build pipeline references the ‘BuildConfiguration’ variable, which you’ve selected to be settable at queue time. Create or edit the build pipeline for this YAML file, define the variable on the Variables tab, and then select the option to make it settable at queue time. See https://go.microsoft.com/fwlink/?linkid=865971

steps:
- task: VSBuild@1
  displayName: 'Build solution'
  inputs:
    solution: '$(Parameters.solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'

Publi sh Артефакт YAML

#Your build pipeline references an undefined variable named ‘Parameters.ArtifactName’. Create or edit the build pipeline for this YAML file, define the variable on the Variables tab. See https://go.microsoft.com/fwlink/?linkid=865972

steps:
- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'
    ArtifactName: '$(Parameters.ArtifactName)'

Ответы [ 2 ]

0 голосов
/ 29 февраля 2020

Мне удалось найти два обходных пути для этого. Кажется, проблема связана с задачей «Build Solution» c. Когда сборка собиралась в $(Build.ArtifactStagingDirectory), то она не включала сгенерированные gulp файлы CSS и JS. Но, как в этом сообщении о переполнении стека , я изменил выходной каталог сборки с /p:PackageLocation="$(Build.ArtifactStagingDirectory) на /p:PackageLocation="$(Build.BinariesDirectory), а затем протестировал

Первый обходной путь

Изменен " Publi sh артефакт " задачи " Путь к Publi sh" как $(Build.BinariesDirectory) из $(Build.ArtifactStagingDirectory), включая глотание CSS и JS файлов также.

Второй обходной путь

  1. Я изменил " Build Solution " задачи " Путь to Publi sh "параметр от /p:PackageLocation="$(Build.ArtifactStagingDirectory) до /p:PackageLocation="$(Build.BinariesDirectory), как упоминалось в первой работе вокруг

  2. Создать задачу" Archive $ (Build. BinariesDirectory)"Задача Files для архивирования файлов с $(build.binariesdirectory) до $(Build.ArtifactStagingDirectory), как показано на снимке экрана ниже:

enter image description here

Создайте задачу " Извлечь файл ", чтобы разархивировать ZIP-файл, присутствующий в $(Build.ArtifactStagingDirectory)/GeneratedArtifacts.zip. Он извлечет все сжатые артефакты, такие как .cmd и .zip, необходимые для " Publi sh task", присутствует в GeneratedArtifacts.zip in $(Build.ArtifactStagingDirectory). ЭТО ЭТО !!

Для справки: для второго обходного пути GeneratedArtifacts.zip содержит окончательные файлы, как показано на скриншоте ниже:

enter image description here

Наконец, для первого обхода - publi sh артефакты задача опубликует sh все файлы, представленные в $ (Build.BinariesDirectory) и для второго обходной путь - publi sh артефакты задача опубликует sh все файлы, присутствующие в $ (Build.ArtifactStagingDirectory)

Чтобы быть более точным Ниже приведен скриншот для задачи Publi sh Artifact для первого обходного пути:

enter image description here

Ниже приведен скриншот для Publi sh Артефакт задача для второго обходного пути:

enter image description here

Первый обходной путь кажется чистым и состоит из меньшего количества шагов построения конвейера, поэтому я последовал за ним, но подумал написать второй обходной путь также, потому что это может быть, если пихта Первый обходной путь не работает для кого-то, может быть, второй работает.

0 голосов
/ 28 февраля 2020

Вы должны признать разницу между опубликованным артефактом drop и сгенерированным файлом SampleWebApplication.zip .

Не знаете, какую задачу вы используете для развертывания в Azure Служба приложений, но, как я знаю, связанные задачи развертывания всегда требуют развертывания xx.zip в веб-приложении. То есть, задача развертывания занимает только SampleWebApplication.zip, она не заботится об опубликованном артефакте.

Итак, вам нужно убедиться, что SampleWebApplication.zip содержит css / js папка. Задача развертывания развертывает только xx.zip, не имеет значения, содержит ли артефакт папку css/js. Вы должны сосредоточиться на том, как включить папку css/js при создании xx.zip вместо использования задачи копирования для копирования этих папок в drop артефакт ...

Пожалуйста, отметьте этот документ для более полезной информации, если вы конфигурируете основной проект asp. net. Я думаю, что вы должны включить папку css / js до или во время шага dotnet publish, но не после этого.

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