pingcode logo
研发管理

5分钟带你玩转PingCode Flow


自2019年底开始,研发自动化产品如雨后春笋般出现。Jira于2019年收购了应用市场中的自动化插件开发商Code Barrel,并于2020年3月基于这款插件发布了自己的Jira Automate。微软也早早发布了Power Platform平台下的Power Automate自动化产品。同样的,Asana、Clickup等产品也在近两年陆续推出了自己的自动化产品。

在2020年10月,我们PingCode团队在调研了市场趋势以及现有客户案例的基础上,正式启动了自己的研发自动化产品Flow,并于2021年5月25日正式对外发布。

自动化工具能够大幅提高研发团队的开发效率,节省人工成本,减少工作失误。在4月12日至5月12日的内测阶段,我们收到了22家客户的内测申请。他们在一个月的内测期间共创建了147条自动化规则,一共执行了55094次,平均每天就有1836条规则运行。假如每条规则人工操作需要1分钟,每天就能够节省约30小时的工作量,将近4个人日。由此可见,自动化对于研发团队的效率提升有多么明显。

在上一篇博客中我们提到,为了能够让研发团队更好的接受自动化工具,需要寻找一款功能强大且易学易用的产品。而PingCode Flow作为国内首款研发自动化工具,在这两方面都有相当不错的表现。下面我们就一起用5分钟的时间,将一个典型的研发场景通过自动化规则实现。同时向您展示PingCode Flow的基本功能和基础操作。

场景:为新项目启动创建对应的任务

研发线启动一个新的项目时,都需要经过项目启动的过程。同一家公司或同一个业务线,需要完成的启动任务基本一致。譬如我们的团队在项目启动的时候需要:

  • 团队组建与角色分配
  • 团队流程与规范的明确
  • 代码仓储、服务器资源和流水线的申请
  • 代码结构搭建

这就是一个非常典型的重复性工作。因为:

  • 重复执行:每一个项目的启动都要创建类似的任务。
  • 无需设计和考虑:创建的任务内容都一样。
  • 容易出错:由于人为疏忽有可能漏掉某些任务。

那么这样的任务就非常适合通过自动化工具去完成。接下来,我们就看一下如何在PingCode Flow中实现这个自动化规则。

第一步:选择一个触发器

触发器
PingCode Flow中,每一条自动化规则都需要一个事件去触发。这个事件可能是用户在PingCode Agile里面设置某个工作项的负责人,也可能是某个成员加入了组织,或者是Github上有一个新的Pull Request被提交了。
而PingCode Flow里面的触发器就对应了这些事件。因此,当我们规划一条自动化规则时,第一件事就是确定触发的事件是什么,进而选择与之对应的触发器。

当前的场景是需要在PingCode Agile中创建项目后,自动创建几个工作项。因此我们选择新建规则,创建自动化规则。

Screen Shot 2021-06-01 at 11.41.28.png

为这个新规则取一个名字,接着选择「创建项目」这个触发器,它会在项目被创建后启动这条规则。点击「确定」创建。

Screen Shot 2021-06-01 at 11.43.42.png

现在我们进入了这个规则的编辑界面,在这里我们将为规则添加所需的操作步骤。

Screen Shot 2021-06-01 at 11.45.47.png

第二步:检查所创建项目的类型

在我们的场景中,不是所有的项目在启动后都需要相关的启动任务。我们只需要对Scrum类型的项目进行自动操作。因此当规则被触发,也就是一个项目被创建后,首先需要检查一下项目的类型是不是Scrum因此要在规则中添加一个「条件」。

条件
当需要对规则运行时的信息进行判断时,可以使用「条件」。我们可以设置条件的具体内容,仅当其满足的时候(判断结果为真时),规则才会继续执行;否则,规则将会在此处终止。针对不同的数据,PingCode Flow提供了不同的条件。
譬如针对一个工作项,可以使用「工作项属性条件」来判断其当前工作项的某个属性是否满足要求。而「子工作项属性条件」会针对当前工作项的子工作项去判断他们的条件是不是满足我们的要求。

通过编辑界面底部的「添加步骤」,我们选择「添加条件」。

Screen Shot 2021-06-01 at 11.55.33.png

由于我们希望检查所创建项目的类型是不是Scrum,因此选择「项目属性条件」。

Screen Shot 2021-06-01 at 11.56.48.png

在「项目属性条件」的配置中选择检查项目的「类型」,选择「等于」操作符,对比的值为「Scrum」。

Screen Shot 2021-06-01 at 11.57.34.png
属性类型操作
条件中用户选择的属性类型不同,可选的比较操作也不一样。当前的例子中,针对项目的类型我们支持「等于」和「不等于」两个操作。而对于工作项的开始时间、截止时间等时间类型的属性,支持的操作除了「等于」和「不等于」,还有「大于」、「小于」和「介于」等等。而对于工作项负责人、优先级等类型,还有「为空」和「非空」这样的比较操作。

有了条件这一步,我们的规则在执行时就会判断当前创建的项目是不是Scrum类型。只有是Scrum项目被创建时,后续的步骤才会执行。

第三步:创建一个史诗

在经过刚才的「项目属性条件」判断后,接下来就是创建一个项目启动工作对应的史诗。在编辑界面下方选择「添加步骤」,然后选择「添加动作」。

动作
我们希望PingCode Flow在某个规则执行的时候要进行的操作叫做「动作」。这个动作可以是设置工作的项目负责人,也可以是对外发送一封邮件。一条规则可以包含一个或多个动作,这些动作是顺序执行的。
Screen Shot 2021-06-01 at 14.05.35.png

我们需要在这个项目中创建一个史诗,也就是一个工作项。因此选择「创建工作项」。

Screen Shot 2021-06-01 at 14.06.53.png

接下来,设置这个工作项的相关属性。这里我们选择工作项类型为「史诗」。工作项所属的项目就是我们在触发器里面获取的这个新创建的项目。因此在「选择项目」的部分,要选择「来自其它步骤」。

Screen Shot 2021-06-01 at 14.09.40.png

然后在「步骤」处选择触发器对应的步骤。

Screen Shot 2021-06-01 at 14.11.03.png

我们的触发器是「创建项目」,这个步骤能够提供给我们的数据(也就是字段)很多。这里我们需要选择这个步骤对应的项目信息。在「字段」部分选择「项目」。这样,这个工作项就会被创建到触发器触发时创建的那个项目里面了。

Screen Shot 2021-06-01 at 14.12.56.png

接下来设置这个工作项的父工作项。由于我们创建的是一个史诗,因此它没有父工作项,直接选择「不指定」就好。最后,设置这个工作项的标题和描述。这里我们直接写「项目启动」。

Screen Shot 2021-06-01 at 14.14.56.png

这样,我们就在规则中完成了第一个动作,也就是工作项的创建。

第四步:在史诗下创建两个特性

下一步,我们需要在这个史诗下创建两个特性,一个对应项目启动中团队和规则的准备工作,另外一个对应了代码仓储、流水线和基础代码的准备工作。首先,和上面一样,选择「创建工作项」这个动作,然后将工作项类型设置为「特性」,所属项目仍旧是触发器中的项目。

Screen Shot 2021-06-01 at 14.18.30.png

与之前不同的,这个特性要被加入到刚才创建的史诗下面。因此这里我们需要指定它的父工作项「来自其它步骤」,选择刚才的「创建工作项」这个步骤,然后选择「工作项」这个字段。

Screen Shot 2021-06-01 at 14.20.09.png

最后,填写工作项标题和描述。

Screen Shot 2021-06-01 at 14.21.20.png

这样我们就完成了第一个特性的创建。接下来完成第二个,也就是和代码仓储流水线申请相关的特性。当然,我们可以像之前一样,在这个步骤后面再创建一个步骤。但是,这两个特性的创建其实是可以同时执行的。因此,我们可以在当前步骤前面添加一条分支,在另一个分支上创建这个新的特性。

分支
PingCode Flow允许在规则中创建分支。一个分支可以同时执行多个步骤,他们之前互不干扰。位于同一分支的步骤顺序执行。
某个分支中的如果有「条件」步骤,那么加入不符合(判断结果为假),也只会终止当前分支后续的步骤,不影响其它分支的执行。分支允许合并。合并后的步骤会在所有分支执行完毕后再开始执行。

我们将鼠标放在刚才创建的步骤之前的箭头处,会有一个加号符号显示。点击这个加号,选择「添加分支」。

Screen Shot 2021-06-01 at 14.27.06.png

这时候我们看到,刚才添加的「创建工作项」被移入到左侧分支中,右侧是新的分支和新的步骤。

Screen Shot 2021-06-01 at 14.44.28.png

类似的,我们添加「创建工作项」这个动作,然后选择工作项类型为「特性」,属于当前的项目且选择创建的史诗为父工作项,填写工作项标题和描述。

Screen Shot 2021-06-01 at 14.46.50.png

至此,我们的规则是这样的。

Screen Shot 2021-06-01 at 14.47.56.png

这个规则里面有三个步骤都叫「创建工作项」,分别对应了创建史诗,以及在史诗下创建两个特性。为了方便后续的操作,可以对他们重命名。点击步骤右侧的更多菜单,选择「重命名」。

Screen Shot 2021-06-01 at 14.51.24.png

重命名后,规则的流程看起来更清晰了。

Screen Shot 2021-06-01 at 14.52.19.png

第五步:特性下创建若干个用户故事

接下来,分别对人员规范和代码流水线这两个特性下创建更具体的用户故事。在分支下添加步骤,需要将鼠标放到分支的最后一个步骤后面,点击加号图标选择「添加动作」。

Screen Shot 2021-06-01 at 14.54.08.png

选择「创建工作项」,选择「用户故事」为工作项类型,指定所属项目为触发器对应的项目,父工作项为上面刚创建的特性。

Screen Shot 2021-06-01 at 14.56.14.png

填写对应的标题与描述。以同样的方法,我们创建几个用户故事来对应不同的具体工作。

Screen Shot 2021-06-01 at 15.00.06.png

在「申请代码仓储和流水线」这一步,由于公司对于代码仓储的名字有固定的格式要求,即必须是

@公司名/项目编号

因此,我们在创建这个工作项时,可以按照这个格式要求直接生成仓储的名字并填写到描述中。展开代码仓储申请这个步骤,选择「描述」部分,点击右侧的「添加动态内容」。

Screen Shot 2021-06-01 at 15.03.45.png
动态内容
规则执行的每个步骤都会涉及到数据的获取和设置。PingCode Flow允许后续的步骤动态引用之前步骤中获取和生成的数据。例如当触发器为「设置工作项负责人」时,这个步骤在执行时就会提供被操作的工作项标题、编号、状态等数据。
后续的步骤就可以使用它们。假如我们添加了「给工作项发评论」这个动作,那么评论的内容就可以引用之前触发器提供的这些数据。
需要注意的是,某个步骤只能引用其之前步骤的产生数据,而不能引用之后的。而且,不能引用另外一个分支内步骤的数据。
其实,不仅是设置工作项标题、描述和发布评论,之前设置工作项项目时,从其它步骤获取的项目理论上讲也是动态数据。是否支持动态数据,是一个研发自动化工具灵活性的重要指标;能否用好动态数据,也是能否设计出高效简洁的自动化规则的关键。

然后我们选择「创建项目」这个步骤里提供的「项目标识」这个动态数据,然后完善工作项描述。

Screen Shot 2021-06-01 at 15.09.58.png

这样,当规则执行到这个步骤时,假设我们创建的项目标识为「FLOW」,那么这个工作项的描述就是

@my-org/FLOW

第六步:发送邮件通知

最后一步,当所有的工作项都创建完毕,也就是说项目启动的相关任务都准备好后,还需要向创建项目的这个人,也就是这个规则的触发者发送一封邮件。由于这个步骤要在所有工作项都创建完后执行,也就是说分支合并之后再执行,因此需要点击编辑页面最下部的「添加步骤」,然后选择「添加动作」。

发送邮件

「发送邮件」这个动作允许向团队成员的邮箱或者任意指定邮箱地址发送一封邮件。邮件的标题和内容由规则设计者指定。这个动作是PingCode Flow付费模块之一,需要您购买团队版或企业版。
Screen Shot 2021-06-01 at 15.15.36.png

选择「发送邮件」,使用动态数据功能添加系统级的规则触发者为收件人。

Screen Shot 2021-06-01 at 15.17.02.png

编辑邮件标题和内容。注意我们这里也使用了动态数据。

Screen Shot 2021-06-01 at 15.19.16.png

到此为止,我们规则的设计工作全部结束,点击右上角的「保存」按钮。

测试:创建新项目

下面,测试一下我们这个规则。切换到PingCode Agile模块中,创建一个新的Scrum项目。

Screen Shot 2021-06-01 at 15.24.21.png

展开需求列表,可以看到项目启动相关的工作项都自动创建好了。

Screen Shot 2021-06-01 at 15.25.28.png

打开「申请代码仓储和流水线」这个用户故事,可以看到,描述中已经为我们生成好了需要申请的代码仓储名字。

Screen Shot 2021-06-01 at 15.26.27.png

同时,作为项目的创建者,也就是这条规则的触发者,我们也收到了系统发过来的邮件。

Screen Shot 2021-06-01 at 15.27.36.png

总结

通过简单的六个步骤,我们就完成了第一条PingCode Flow规则,它能够自动化地帮我们创建项目启动所需要的所有任务,以及按照公司规定生成了代码仓储的名字。如果需要,我们还可以继续丰富这个规则的内容,譬如为各个工作项设置负责人,添加关注者,生成符合规定的流水线名称和资源名称,为项目成员发送提醒等等。

限于篇幅的原因,我们只是基于这个场景演示了所涉及到的PingCode Flow基本操作。除此之外,作为管理员,您还可以将规则启用、禁用、复制、导出和导入,以及查看规则执行的历史记录。

如果您是第一次接触研发自动化产品和PingCode Flow,在手动创建规则之前,我还是强烈建议您浏览一下我们的规则模板。这些模板都是业内成熟的场景,以及我们基于自身的开发经验和内测客户反馈创建的规则。相信已经能够满足您研发团队的一些主要的自动化问题。

最后,希望PingCode Flow能够帮助您提升团队的工作效率,提高研发效能,让您的成员把宝贵的时间和精力专注于实现核心的客户价值中。把那些繁琐的、重复的、无聊的工作就交给我们来处理。

立即注册体验智能化研发管理工具PingCode