Как создать пользовательскую задачу azure devops из основного консольного приложения. net - PullRequest
1 голос
/ 28 апреля 2020

Я хотел бы создать задачу Azure Devops на основе консольного приложения, которое я создал. Задача должна запускаться на Linux агенте сборки, но я не знаю, с чего начать.

Кто-нибудь уже делал что-то подобное уже?

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

azure Задача devops основана на Node.js

из следующих статей

, о которых вы можете многое узнать.

SDK для azure devops - это Node. Возможно, вы можете комбинировать DotNetCoreInstaller и Github и другие задачи. Но среда Node.js

Самый простой способ - использовать Node.js.

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

Нет прямого обработчика задач для ядра. NET. Чтобы выполнить кроссплатформенную задачу, вам необходимо создать небольшой проект с машинописным шрифтом, который использует azure -pipelines-task-lib для вызова вашего исполняемого файла.

У меня очень простой расширение, которое упаковывает исполняемый файл здесь, которое может служить примером структуры расширения:

https://github.com/jessehouwing/azure-pipelines-agent-screenshot

Вам нужно будет изменить следующие вещи:

  • vss-extension. json
    • издатель
    • идентификатор расширения
    • идентификатор вклада
  • задача. json
    • задача id (назначьте новый guid)
    • имя задачи
    • удалите текущий обработчик выполнения и замените его на Node.

A очень простую задачу, которая запускается ping.exe на основе Typescript, можно найти здесь:

https://github.com/jessehouwing/azure-pipelines-demo-ping-task/blob/master/PingTask/ping.ts

Простейшая форма будет выглядеть так:

import tl = require('azure-pipelines-task-lib/task');
import trm = require('azure-pipelines-task-lib/toolrunner');
import { chmodSync } from "fs";   

async function run() {
    try {
        let echoPath = tl.which('ping');

        if (!isWindows) {
            chmodSync(echoPath, "777");
        }

        let ping = tl.tool(echoPath);
        let result: number = await ping.exec();
    }
    catch (err) {
        tl.setResult(tl.TaskResult.Failed, err.message);
    }
}

void run();

Все основные c шагов к Загрузите свою задачу здесь:

Публикация задачи на март Здесь поясняется кетплейс:

...