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

最新文章

  1. [Java IO]02_字节流
  2. OpenGL渲染流程
  3. android:layout_height、android:layout_width、android:height、android:width的关系与区别
  4. js通过location.search来获取页面传来的参数
  5. swift 创建桥接头文件
  6. [译]ASP.NET 5: New configuration files and containers
  7. tidyr包--数据处理包
  8. bootstrap组件学习
  9. PHP访问,增删改查,小结
  10. linux下C语言获取微秒级时间
  11. sql server多表数据批量更新
  12. Eclipse必须掌握的快捷键
  13. JS 精粹(三)
  14. 常用Linux命令笔记
  15. nginx 项目部署
  16. DICOM中检查时间 CT和增强CT、MR和增强MR
  17. 剑指Offer 60. 把二叉树打印成多行 (二叉树)
  18. Josephu(约瑟夫)问题解析
  19. 极验3.0滑动拼图验证的使用--java
  20. Android VideoView播放网络视频简介(转)

热门文章

  1. 安装Entity Framework【Setup Entity Framework Environment】(EF基础系列篇4)
  2. thinkphp学习简易教程(二) thinkphp连接读取MySQL数据库
  3. MATLAB连接ACCESS数据库
  4. 1、ASP.NET MVC入门到精通——新语法
  5. sqlserver性能调优第一步
  6. MongoDB学习笔记—Linux下搭建MongoDB环境
  7. cocos2d-x3.3 以前版本 工程Xcode6编译时的问题
  8. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q144-Q146)
  9. iOS所有常见证书,appID,Provisioning Profiles配置说明及制作图文教程
  10. sqlite 管理软件