vsts 中支持自定义Build/Release的过程Task

目标:做一个可以读取 Xamarin.Android 所生成的 APK 的 基本信息的 task ,包括 package(包名) / application label(应用标题 )/version name(版本号)/version code(版本代码)

下面简述流程

1.下载并安装 Visual Studio Code(http://code.visualstudio.com ),当然使用 Visual Studio 或者其它任何开发工具也可以

2.下载并安装最新版本 nodejs(https://nodejs.org),如果是直接安装的 vs 这些应该直接都有了

3.建立自己的项目文件夹,如 d:\code\home

4.通过 npm 安装编译工具 tfx-cli

npm i -g tfx-cli

5.在自己的项目文件夹中建立一个 vss-extension.json 文件,这个文件中说明了当前扩展包的信息,以及扩展包中包含哪些任务

{
"manifestVersion": ,
"id": "zou-tasks",
"name": "Zou Tasks",
"version": "1.0.4",
"publisher": "zoujian",
"targets": [
{
"id": "Microsoft.VisualStudio.Services"
}
],
"description": "Tools for building & publish",
"categories": [
"Build and release"
],
"icons": {
"default": "extension-icon.png"
},
"files": [
{
"path": "extract-xamarin-android-manifest"
}
],
"contributions": [
{
"id": "extract-xamarin-android-manifest",
"type": "ms.vss-distributed-task.task",
"targets": [
"ms.vss-distributed-task.tasks"
],
"properties": {
"name": "extract-xamarin-android-manifest"
}
}
]
}

6.以上面扩展信息中所示,扩展包中包含了一个叫 extract-xamarin-android-manifest(我的任务) 的插件,文件夹结构是这样的

extension-icon.png (vsix的图标)
vss-extension.json

extract-xamarin-android-manifest
  - extract.ps1 (任务的对应脚本,是在task.json中配置的此名称)
  - icon.png (任务的图标)
  - task.json (任务的配置文件)

其中 task.json 是最主要的文件,我当前的这个扩展是读取 Xamarin.Android 的项目,并且读取出生成 apk 的基础信息,包含 application 的 label,packagename,version name,version code

{
"id": "f1821fab-78d1-4c22-a0e4-f98f40fd7079",//任务的唯一id
"name": "extract-xamarin-android-manifest",//任务名称
"friendlyName": "extract xamarin android info",//友好任务名
"description": "extract xamarin android info",
"author": "zoujian",
"helpMarkDown": "[More Information](https://github.com/chsword/zou-vsts-tasks)",//帮助(就是显示时后面的吧号)
"category": "Utility",//类别,工具
"visibility": [
"Build",
"Release"
],
"demands": [
"DotNetFramework"
],
"version": {//版本
"Major": "1",
"Minor": "0",
"Patch": "4"
},
"minimumAgentVersion": "1.83.0",//支持vso agent的版本
"instanceNameFormat": "ExtractXamarinAndroidManifest",//实例名
"groups": [//如果输入参数要分组的话,建一个
{
"name": "output",
"displayName": "Output",
"isExpanded": true
}
],
"inputs": [//各种输入参数
{
"name": "pathXamarinAndroidProject",
"type": "filePath",
"label": "Xamarin Android project Path",
"defaultValue": "",
"required": true,
"helpMarkDown": "Path which Xamarin Android project exisis."
},
{
"name": "configuration",
"type": "string",
"label": "Configuration",
"defaultValue": "$(BuildConfiguration)",
"required": true
},
{
"name": "outputVariable",
"type": "string",
"label": "outputVariable",
"required": true,
"defaultValue": "android",
"groupName": "output",
"helpMarkDown": "Provide a name for the variable for the android info. eg. set the outputVariable 'android', after task running, will return 'android.PackageName','android.ApplicationLabel','android.VersionName','android.VersionCode'."
}
],
"execution": {//实际执行的过程,我这里是执行了一个powershell脚本,有兴趣的同学可以看下,就是读取了apk的AndroidManifest的xml结构
"PowerShell": {
"target": "$(currentDirectory)\\extract.ps1",
"argumentFormat": "",
"workingDirectory": "$(currentDirectory)"
}
}
}

7.要编译为VSIX的话,执行 tfx extension create --manifest-globs vss-extension.json

8.tfs或vso中导入vsix,过程不说述

9.可以直接在tfs中使用了

实际使用时,如此配置参数:

源代码:https://github.com/chsword/zou-vsts-tasks

引用 :

官方task:https://github.com/Microsoft/vsts-tasks

官方文档:https://www.visualstudio.com/zh-cn/docs/build/define/variables

自己开发一个 vsts agent 的 task的更多相关文章

  1. (原创)发布一个c++11开发的轻量级的并行Task库TaskCpp

    TaskCpp简介 TaskCpp是c++11开发的一个跨平台的并行task库,它的设计思路来源于微软的并行计算库ppl和intel的并行计算库tbb,关于ppl和tbb我在前面有介绍.既然已经有了这 ...

  2. 使用Swift开发一个MacOS的菜单状态栏App

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/52054107 ...

  3. 拥抱.NET Core,如何开发一个跨平台类库 (1)

    在此前的文章中详细介绍了使用.NET Core的基本知识,如果还没有看,可以先去了解“拥抱.NET Core,学习.NET Core的基础知识补遗”,以便接下来的阅读. 在本文将介绍如何配置类库项目支 ...

  4. 【如何快速的开发一个完整的iOS直播app】(播放篇)

    原文转自:袁峥Seemygo    感谢分享.自我学习 前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkpl ...

  5. 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务

    [源码下载] 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后 ...

  6. Office365开发系列——开发一个全功能的Word Add-In

    2016年10月我参加了在北京举行的DevDays Asia 2016 - Office 365应用开发”48小时黑客马拉松“,我开发的一个Word Add-In Demo——WordTemplate ...

  7. 用Python3、NetCore、Shell分别开发一个Ubuntu版的定时提醒(附NetCore跨平台两种发布方式)

    汇总系列:https://www.cnblogs.com/dunitian/p/4822808.html#ai Python3 与 C# 基础语法对比:https://www.cnblogs.com/ ...

  8. 基于c++11新标准开发一个支持多线程高并发的网络库

    背景 新的c++11标准出后,c++语法得到了非常多的扩展,比起以往不论什么时候都要灵活和高效,提高了程序编码的效率,为软件开发者节省了不少的时间. 之前我也写过基于ACE的网络server框架,但A ...

  9. Android | 教你如何用华为HMS MLKit 图像分割 SDK开发一个证件照DIY小程序

    Android | 教你如何用华为HMS MLKit 图像分割 SDK开发一个证件照DIY小程序 引子   上期给大家介绍了如何使用如何用华为HMS MLKit SDK 三十分钟在安卓上开发一个微笑抓 ...

随机推荐

  1. 数据结构(C语言第2版)-----数组,广义表,树,图

    任何一个算法的设计取决于选定的数据结构,而算法的实现依赖于采用的存储结构. 之前线性表的数据元素都是非结构的原子类型,元素的值是不可再分的.下面学习的这两个线性表是很特殊的,其中数据元素本身也可能是一 ...

  2. 第二篇:Entity Framework CodeFirst & Model 映射

    前一篇 第一篇:Entity Framework 简介 我有讲到,ORM 最关键的 Mapping,也提到了最早实现Mapping的技术,就是 特性 + 反射,那Entity Framework 实现 ...

  3. 【配置属性】—Entity Framework 对应表字段的类型的设定配置方法

    摘自:http://www.cnblogs.com/nianming/archive/2012/11/07/2757997.html Entity Framework Code First的默认行为是 ...

  4. C#文件或文件夹压缩和解压方法(通过ICSharpCode.SharpZipLib.dll)

    我在网上收集一下文件的压缩和解压的方法,是通过ICSharpCode.SharpZipLib.dll 来实现的 一.介绍的目录 第一步:下载压缩和解压的 ICSharpCode.SharpZipLib ...

  5. 背水一战 Windows 10 (19) - 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定

    [源码下载] 背水一战 Windows 10 (19) - 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定 作者:we ...

  6. Hibernate 更新部分字段的实现

    在Hibernate 中,有时我们只需要更新部分字段,此时如果使用update()方法,会将所有字段都更新,对于没有set的字段,就会设置成NULL,如果这些字段里面有非空的字段就会报错. 解决的方法 ...

  7. 设计模式-观察者模式(Observer Model)

    文 / vincentzh 原文连接:http://www.cnblogs.com/vincentzh/p/6031844.html LZ刚刚开始心热的开启了博客之路,想着记点流水账,可帝都的天都冷成 ...

  8. 十一个行为模式之访问者模式(Visitor Pattern)

    定义: 提供一个作用于某对象结构(通常是一个对象集合)的操作的接口,使得在添加新的操作或者在添加新的元素时,不需要修改原有系统,就可以对各个对象进行操作. 结构图: Visitor:抽象访问者类,对元 ...

  9. html5 video

    先简要概述一下video标签: video:嵌入视频到页面中 1. 声明video标签 单个视频的时候使用src: <video src="http://v2v.cc/~j/theor ...

  10. C#变量、输入、数据类型的自动转换