Конвейер ci, создающий артефакт для приложения-функции, не содержит функций

У меня есть приложение-функция, я хочу развернуть функции в этом приложении-функции.

Я создал конвейер CI и CD в Azure Devops, все это приводит к отсутствию функций в приложении-функции.

вот как выглядит мой CI yaml

trigger: none

pool:
  vmImage: 'windows-latest'

steps:
- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    projects: '*.csproj'
- task: DotNetCoreCLI@2
  inputs:
    command: publish
    arguments: '--configuration Release --output publish_output'
    projects: '*.csproj'
    publishWebProjects: false
    modifyOutputPath: false
    zipAfterPublish: false
- task: ArchiveFiles@2
  displayName: "Archive files"
  inputs:
    rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
    includeRootFolder: false
    archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
- task: PublishPipelineArtifact@1
  inputs:
    targetPath: $(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip
    artifactName: 'adofunc'

Я считаю, что проблема в артефакте. Я попытался загрузить этот артефакт и развернуть zip-архив с помощью az functionapp deployment source config-zip -g <resource_group> -n <app_name> --src <zip_file_path> после установки SCM_DO_BUILD_DURING_DEPLOYMENT в значение true, также не получилось никаких функций.

Я вручную настроил другое функциональное приложение с функциями, загрузил контент с портала и сравнил zip-архив, они сильно отличались.

Я пытался использовать PublishBuildArtifacts@1 вместо PublishPipelineArtifact@1 в конвейере, ничего не изменилось, все тот же старый сломанный почтовый индекс и без функций.

1. Добавьте задачу CmdLine@2 перед ArchiveFiles@2. В задаче запустите cd`publish_output` и dir, чтобы проверить, находятся ли ваши функции в папке publish_output. 2. Вы также можете создать и опубликовать свой проект на своем локальном компьютере с помощью интерфейса командной строки dotnet. Архивируйте папку publish_output и разверните ее с помощью Azure CLI. Тогда вы сможете узнать, связано ли это с вашим проектом.

Ziyang Liu-MSFT 25.07.2024 11:21

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

Ziyang Liu-MSFT 25.07.2024 11:46

структура папок — это просто папка с .sln и приложением-функцией > папка приложения-функции с .cs и .csproj, настройки приложения — это настройки приложения по умолчанию

nevermonday 29.07.2024 08:52

должен ли zip-архив содержать разные файлы .cs? потому что причина, по которой я думал, что проблема в почтовом индексе, заключается в том, что в нем нет ни одной функции. но там есть functionapp.deps.jsonfunctionapp.dllfunctionapp.exefunctionapp.pdbfunctionapp.json

nevermonday 29.07.2024 08:55

«Предполагается ли, что zip-архив будет содержать разные файлы .cs» — zip-архив не будет содержать файлы .cs. Там будет папка .azurefunctions. Внутри него будут function.deps.json, functionapp.dll и т. д.

Ziyang Liu-MSFT 29.07.2024 09:43

Судя по текущей ситуации, с вашим файлом yaml все в порядке. Чтобы узнать, связано ли это с вашим проектом. пожалуйста, создайте и опубликуйте свой проект на своем локальном компьютере, используя тот же CLI dotnet. Архивируйте папку publish_output и разверните ее с помощью Azure CLI. Если при локальной сборке и развертывании возникает та же проблема, мы можем подтвердить, что с вашим проектом что-то связано. И тогда мы сможем сосредоточиться на этом.

Ziyang Liu-MSFT 29.07.2024 09:49

Я сделал dotnet publish -c Release -o publish_output. содержимое publish_output, насколько я вижу, точно такое же, как и артефакт, который производит конвейер. Так что да, я тоже думаю, что с моим конвейером ci все в порядке. Я пытаюсь развернуть файл public_output.zip с помощью az functionapp deployment source config-zip -g <resource_group> -n <app_name> --src <zip_file_path>, возвращается Getting scm site credentials for zip deployment Starting zip deployment. This operation can take a while to complete ... Deployment endpoint responded with status code 202, и в моем приложении-функции ничего не происходит.

nevermonday 29.07.2024 10:51

Проблема связана с самим вашим проектом. Как вы создали свой проект? Следите ли вы за официальным документом ?

Ziyang Liu-MSFT 29.07.2024 13:11

Вы правы, с проектом что-то не так. Я все воссоздал и теперь вроде работает. Что странно, ведь раньше с этим проектом проблем не было. Только сейчас, когда я развертываю его в другой среде, он не работает. В любом случае, похоже, что с моим ci и cd все в порядке. Спасибо за указатели.

nevermonday 29.07.2024 13:50

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

Ziyang Liu-MSFT 29.07.2024 14:03
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
10
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Основная причина и решение: Вопрос вызван самим вашим проектом. Следование официальному документу для создания нового проекта решает проблему.

В случае любой подобной проблемы вы можете создать и развернуть приложение-функцию локально, чтобы проверить, вызвана ли она вашим проектом или конвейером Azure.

Официальные документы для справки:

Другие вопросы по теме

Функция Azure с проблемой сети речи Azure AI (WS_OPEN_ERROR_UNDERLYING_IO_OPEN_FAILED)
Ошибка конвейера приложения-функции Azure для Key Vault: имя параметра не может быть пустым
Как создать функцию Azure, которая развертывает мой сценарий бицепса из учетной записи хранения Azure
Попытка подключиться к базе данных SQL — поставщик: поставщик TCP, ошибка: 26 — ошибка при обнаружении указанного сервера/экземпляра
Монитор хранилища функциональных BLOB-объектов Azure
Обработка WorkerErrorEvent для среды выполнения: dotnet-isolated, workerId: dotnet-isolated. Ошибка: System.TimeoutException: время ожидания операции истекло
Скрипты для уведомления об очереди недоставленных писем
Как скачать файл в учетную запись хранения Azure из приложения-функции
Функция, запускаемая Blob-объектом, работает локально, но не развертывается (не вызывается)
Получение статуса активности федерального пользователя Microsoft Graph API