Я хотел очистить свой кэш CloudFlare во время развертывания конвейера Azure. Cloudflare предлагает API REST для этого, но вместо того, чтобы тащиться со сценариями, я решил посмотреть, как вместо этого я могу написать пользовательскую задачу для этого и опубликовать ее на рынке Visual Studio.
Получите расширение
Расширение Бесплатно на рынке Visual Studio И это Открытый источник на GitHub . Вот скриншот того, как он выглядит в Azure DevOps:
Как я его построил
Я следовал за великим Прогулка на Docs.microsoft Анкет Мне нравится, что инструкции продвигают TypeScript и тестирование, хотя я не собираюсь писать тесты для такой небольшой задачи.
Еще одна сеть уже указал что мне нужно было бы сначала запрашивать API CloudFlare REST, чтобы перевести имя зоны в идентификатор зоны, а затем запросить чистку. Я превратил эти инструкции в TypeScript , скомпилирован в JavaScript и объединил этот JavaScript как vsix extensiion с использованием tfx-cli
Анкет
Над всем Код очень просто. Структура заключается в следующем:
-
- Расширение проявляется, определяет основную информацию о том, что делает экспентион. Справочные документы .
- /images/extension-icon.png
- Значок, представляющий расширение
/cloudflarepurge/ index.ts
- Код, который выполняет задачу. Я не писал TypeScript до V2, поэтому я подозреваю, что обработка ошибок может быть более элегантно написана с асинхронным или аналогичным.
/cloudflarepurge/ task.json
- Определяет, как будут отображаться параметры конфигурации задачи и какие сценарии будут выполняться во время сборки. Справочные документы
Если бы мы просто использовали JavaScript без зависимостей, это было бы так. Однако мы используем TypeScript, поэтому мы также имеем;
- /cloudflarepurge/index.js
TSC
вывод (сгенерированный)
/cloudflarepurge/ package.json
- Nodejs зависимости
/cloudflarepurge/ tsconfig.json
- конфигурация TypeScript
Как только это будет на месте, я упаковал расширение:
npx tfx-cli extension create --rev-version --manifest-globs vss-extension.json
Издательский
Публикация была немного странной — публично опубликовать вашу учетную запись Visual Studio Marketplace, которую должен быть одобрен в качестве издателя кем -то в Microsoft. Это было достигнуто путем введения некоторых подробностей о том, кем я был, и нажав кнопку «Одобрение запроса» (или аналогичное). Я получил одобрение и теперь вы одобрено электронным письмом от кого -то в Microsoft примерно через два дня.
Перед одобрением рынок заблокирует загрузку любого расширения, которое имеет public: true
набор. Пост-утверждение. Загрузитель указал, что мне нужно включить Обзор.md
на общественном расширении. Тем не менее, вы можете указать содержание/детали в вашем vss-extension.json
в, скажем, Readme.md
решить эту проблему:
"content": { "details": { "path": "README.md" } },
Вот и все!
В целом было довольно просто выполнить пользовательский код в выпуске Azure Pipeline и упаковывать его в расширение. Отсюда я хотел бы посмотреть, как такая задача может быть вызвана сборкой Azure Pipeline Yaml, и, чтобы автоматически развернуть обновления для этой задачи для рынка на Commit — у моего коллеги есть Пост об этом Анкет
Оригинал: «https://dev.to/staff0rd/publishing-a-custom-azure-pipelines-release-task-2pd»