【问题标题】:How to create a custom azure devops task from a .net core console app如何从 .net 核心控制台应用程序创建自定义 azure devops 任务
【发布时间】:2020-05-06 17:09:53
【问题描述】:

我想基于我创建的控制台应用创建 Azure Devops 任务。 该任务应该在 Linux 构建代理上运行,但我不知道如何开始。

其他人做过类似的事情吗?

【问题讨论】:

    标签: azure-devops azure-pipelines azure-pipelines-build-task


    【解决方案1】:

    azure devops 任务基于 Node.js

    来自以下文章

    你可以知道很多关于创建任务的知识。

    azure devops task 的 SDK 是 Node.js。 也许,你可以把DotNetCoreInstaller和Github等任务结合起来。 但是,环境是 Node.js

    最简单的方法是使用 Node.js。

    【讨论】:

      【解决方案2】:

      .NET 核心没有直接的任务处理程序。因此,为了创建跨平台任务,您需要创建一个使用 azure-pipelines-task-lib 调用可执行文件的小型 typescript 项目。

      我有一个非常简单的扩展,在这里打包一个可执行文件,可以作为扩展结构的一个例子:

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

      您需要更改以下内容:

      • vss-extension.json
        • 出版商
        • 扩展 ID
        • 贡献 ID
      • task.json
        • 任务 ID(给它一个新的 guid)
        • 任务名称
        • 删除当前执行处理程序并将其替换为节点之一。

      可以在这里找到一个基于 Typescript 运行 ping.exe 的非常简单的任务:

      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();
      

      启动任务的所有基本步骤都在这里:

      这里解释了向市场发布任务:

      【讨论】:

        猜你喜欢
        • 2018-05-14
        • 1970-01-01
        • 2021-02-03
        • 2018-06-28
        • 1970-01-01
        • 2019-09-26
        • 1970-01-01
        • 2021-08-09
        • 1970-01-01
        相关资源
        最近更新 更多