当前位置: 首页 > news >正文

Dynamics 365 DevOps CI/CD之WebResource

      对于D365自身的发布,简单点来说就是Solution的发布,复杂一些会涉及周边集成接口等一系列的发布。如果是单纯的Solution的发布的Azure DevOps商店里有很多工具,比如Power DevOps Tools,这个我之前也有博文转载过相关文章,里面有配置步骤。

     那对于Solution的发布来说,其中包含了很多的组件(Component),其中涉及到代码的如WebResource,Plugin,Action,Custom WorkFlow等。那CI的部分就是需要将这些代码从git repo中拉取最新的发布到D365。

      本篇就以WebResource的发布举例,会使用到另一篇博文中的发布工具skpl,具体工具怎么试用跳转链接查看, 下面介绍下如何构建CI Pipeline

1,新建一个Pipeline, 选择Azure Repos, 选择对应的项目和代码分支

2,如果你的Project中使用到了NuGet包,则需要先下载NuGet tool, 然后添加NuGet restore命令

3, 编译下项目,如果你的项目下只有纯WebResource没有其他,就不需要编译,但很多项目会使用TS写,这时候就需要编辑转化成JS文件,编译是需要Agent的,现在Azure提供了默认的Agent的,如果没有引用其他复杂的第三方组件(这里就需要你自己安装Azure VM来设置编译环境作为Agent了),普通的编译是足够的,

4,然后就是Copy我们的可执行文件,我这的POC比较简单,就拷贝了scripts下的JS文件,Source Folder就是你的Azure Repo中的代码路径,Target Folder就是跑批需要的JS被执行文件的存放地址

$(build.ArtifactStagingDirectory)\Webresources\scripts

 5,继续拷贝spkl执行文件和配置文件(配置文件如何设置见spkl博文介绍),Target Folder就是这两个文件存档的执行地址

$(build.ArtifactStagingDirectory)/spkl

 6,最后一步就是发布Artifact

 设置完上述6步,我们的CI Pipeline就设置完成了,下面来配置CD Release

1, 首先添加我们的CI Artifacts, 并且Enable CD trigger, 即CI执行成功后立即执行CD

 2,接下来配置CD中的Task, Agent还是使用Azure内置的,因为我们的发布需要使用到spkl工具,而这个工具需从NuGet下载,所以我们首先需要下载NuGet Tool

 3, 第二步就是下载spkl了

 4,第三步是删除多余的配置文件,而这个安装目录里的config文件只是个sample无法执行的,而命令行会一直搜索config文件去执行导致报错,所以删掉它

spkl.1.0.640\content

 5,最后一步就是执行命令了,path就是指定到CI阶段生成的执行文件,connection变量就是bat执行命令所需的连接D365的字符串,这里需要用ClientSecret

url=https://xxx.crm5.dynamics.com/;AuthType =ClientSecret;ClientId=xxx;ClientSecret=xxx;AppId = xxx; RedirectUri = app://343fd800-95a9-4f75-9c59-0dde4990de54;

 至此CD配置就完成了,执行下CI看看结果吧,上几张关键的执行图

从repo拉取最新的JS文件,并copy到执行目录

 copy spkl执行文件和配置文件

  CD执行deploy命令,发布到D365

 下图的报错就是在CD阶段要删除spkl默认文件夹下的配置文件的原因

      

http://www.lryc.cn/news/69093.html

相关文章:

  • Linux常用指令及基础配置
  • Linux 服务器上Nvidia相关指令
  • ChatGPT的工作原理是什么?
  • C++进阶——红黑树
  • 什么是NTFS for Mac?2023新版本如何下载
  • Python泰裤辣丨520写一个自动换壁纸软件,将女友照骗放进去送给她
  • CMake: 设置编译选项
  • 美团Java开发一面凉经
  • Java面试知识点(全)-spring面试知识点二
  • 【音视频开发】基础知识:视频封装格式和编码格式
  • OData Web API 一个开放标准的协议
  • PT100温度采集
  • ThinkSystem DM 全闪存阵列 —— 通过全闪存 NVMe 转型加速您的业务
  • SpringCloud------代码demo(二)
  • TCL语法
  • Partial convolution Gated convolution
  • 量化投资 无套利 No-arbitrage
  • 小程序容器助力智能移动门户统一
  • opencv-python相机标定详解
  • 由斯坦福、Nautilus Chain等联合主办的 Hackathon 活动,现已接受报名
  • PBDB Data Service:Measurements of specimens(标本测量)
  • 低调的接口工具 ApiKit
  • opengauss 的回归测试
  • 计算机组成原理基础练习题第四章-计算机的运算方法
  • SpringBoot定时任务里的多线程
  • YOLO V3 SPP ultralytics 第二节:根据yolo的数据集,生成准备文件和yolo的配置文件
  • camunda流程引擎connector如何使用
  • ECO基本概念:pre-mask eco gen patch flow
  • 【初学人工智能原理】【4】梯度下降和反向传播:能改(下)
  • 微信小程序路由传参