00:00
好,接下来咱们把这个,呃,我们已经运行完了,然后我们把这个完整的工作流再说一下,就是到目前为止,我们从这个智能合约编写,然后自动编译,自动部署,自动测试,完整的工作流都已经都已经搞定了,对吧?那在实际的工作当中,咱们其实是得把这些再串起来的,那咱们现在的这种方式呢,其实还是相当于自己写了分散的几个脚本,然后自己用node去调编译脚本,调部署脚本,然后用moa去调这个测试脚本,那所以现在我们真正意义上的这个工作流呢,如果用NPM其实是很容易管理起来的,那我们希望的一个工作流是什么?就是我们的合约代码进程要改,改完了之后我们就应该一条命令让它编译。然后就能直接部署,然后就能直接测试,对吧,应该是这样的一个过程,那呃,咱们想一下,就是之前的话,大家用过这个NPM的脚本机制嘛,Npm script用过是吗?就是n PM script其实是非常好用的一个东西,就是可以把大家这个预先定义的这些东西都串起来,那咱们现在怎么样去定义呢?其实非常简单啊,大家可以看一下NPM下面有一个scripts这一个属性,它其实给我们的就是说如果我们在NPNPM里边n PM wrong。
01:35
可以指定后面run哪一个脚本,后边的这个它的值前面的键,那就是我们run的那个命令,后边的值就是我们具体要执行的命令,所以我们直接就可以定义,我们可以定一个NPM,让里面的compare编译,它就代表什么呢?它就代表我们note到scripts下面去找comp JS执行我们编译脚本,那我们还可以去定义一个deploy,那同样就是note去执行deploy脚本,那我们今天做的测试。
02:10
那测试的话,我们可以直接定义Mo test,呃,Test,那这里我们定义的是test文件夹,前面我们在执行的时候,大家可能发现我们是直接就放在外面了,对吧?把这个car.spa.gs直接放在外面了,那如果我们想要让Mo叉自动执行的时候,大家应该能想到我们是不是得把这个要放到test文件夹下面啊,前面跟大家说过啊,把这个放到下面,那么大家看现在我的test文件夹下面其实是有两个,一个test sum,一个卡,对吧?我如果直接去调用Mo的话。后面什么都不带,不指定内容,那么它就直接会扫描我们好好吧,这个他没有找到啊,因为我们定义的那个卡尔杰森还是在对,还是路径还是有问题啊T,我去改一下。
03:15
这个我们就需要返回到上级目录了,对吧?好,现在我们用厂启动一下,看一下结果。稍微有点慢,好好。所以我们大家可以看到现在就是他把我们在test下文件夹下边的所有的文件都执行了一遍,对吧,首先是我们那个car那个文件,然后contract的这个测试,然后测试完成,那下面呢,把我们sum这个也测试了一下,当然我们这里还有个错啊,所以大家可以看到完整的测试结果,那现在呢,我们其实是之前大家是建立了一个test文件夹,对吧?所以我们现在还是把按照我们之前设定的把它放到test文件夹下面来move到test文件夹,那么这个时候我们如果要用moa去启动的话,肯定就得moa test,对吧,因为它默认找的是test文件文件夹。
04:31
这个如果我们去测试一下,肯定就知道会把我们的card这个测试脚本去让一遍,那现在大家可以想到我们如果要想在NPM的scripts里边去定义的话,我们现在就可以直接Mo test了,对吧?所以这是我们现在的就是可以做的一件事情,那另外呢,大家可以看到我还可以定义,这就是n PM scripts里边也是定义的这个。这这就是所谓的钩子对吧,就是可以pre,那就是在测,每次测试之前,我应该保证它要去compare,应该保证它是已经编译完成的,对吧?那当然了,我这里没有去,就是要保证他去deploy,那是因为我们如果要deploy的话,那其实是得起一个稳定的跟那一个起稳定的区块链节点才可以,我们还要拿到部署合约的地址,这个很麻烦,我们还不如直接把它内嵌在里面去部署,对吧?所以说这是我们这这样去做,当然也可以定义lo,就是可以也是让他去执行一下编译,大家可以看到我这里边pre和pre deploy的做法呢,其实已经是用了NPM的命令了。
05:47
就没有直接用noe命令对吧,所以大家可以看到就是NTM在想要执行它的脚本的时候,怎么去执行呢?NTM rock com,这就表示我们要执行NPM的comp脚本,那对应的node里边对应的命令其实就是no script,点好,我们把这一部分放进来啊。
06:14
呃,所以这个时候就是我们一开始让大家还是要做一下初始化,大家如果要是没有做初始化的话,可能这里就会稍微麻烦一点啊,大家看我这里面已经写好了,那那我就不改了,大家看的清楚吗?这个可能有点看不清楚。大家可以看到我这里定义了compare,就是node scripts comp.JS,然后下面定义了pre deploy n PM wrong,先编译,然后再再去部署。那部署的命令呢,就是noe scripts deploy一点JS,那最后就是我们的测试,测试的命令,我这里因为没有全局安装Mo,所以跟那个文本上不一样,大家也要注意看看自己有没有全局,就是把它写到环境变量里面,所以我这里是带了路径的Mo test指定我们的文件夹目录,然后上面在test之前呢,也要NTM wrong content编译,先编译再去做测试啊好,那这个工作流我们用NPM的脚本机制完成了之后,要执行的时候其实就非常简单了,我们想要去。
07:27
Test一下我们现在的这个合约改完了之后怎么样,我们直接MTM。有非常简单的一句,诶,大家看到他一开始其实是在n PM wrong compare对吧。他已经输出了这一句,然后NTM装compare,它的内容其实是node scripts compare JS要执行我们这个脚本,然后大家可以看到前面这就是我们的这个脚本的输出,Saving Jason,对吧?Jason fair to卡点Jason完成了之后呢,他又做了我们的Mo test这个命令。
08:05
最后的结果全部完成,测试成功,所以大家可以看到整个的流程就是这样的啊呃,当然大家也可以我n PM draw draw这个也是可以的,对吧?因为我们定义了deploy之前先要去编译,然后去做部署,大家可以看到这个时候我们可能就会有问题,为什么呢?因为deploy我们要求是必须要起一个。就是我们的以太网节点的环境的,对吧?所以大家可以看到这里deploy已经报错了,他说我们这里呃,Inval的这次RPC,所以如果大家想要去有这样的环境的话,那可能还需要另外去把我们的GALA起一下,对吧。所以那Mo病点病啊好,我另外重新开一个shell,这边我们已经启动就不看了。
09:14
好,那么在这里我们再去NPM。稍微有点慢。好,大家看现在就成功了,对吧,Deploy成功,然后这边也跟纳这边能看到deploy的这个结果,那同样大家可以看我们直接NPM,如果让test,就是重新去NPM,让test的话其实也是可以的,就是我们这里起着一个自己的环境GA纳,或者是起着一个自己的思辨,我们可以访问它的8545端口去做一些操作。另外同时我们可以直接去n PM run test,这个完全不影响大家可以看到,不占用我们的8545端口,所以这样test我们把这个GA纳作为provider直接内嵌在里边,引入纳模块,然后去做测试,这个就非常的方便,不会影响我们外部的环境。
我来说两句