我们在我们的开源项目中使用CircleCI。我们只有一个工作流,就是构建和执行测试用例的cireci配置。我们希望对CircleCI有一个基于批准的触发器,但它仅对具有多个工作流的配置可用。像这样

Workflows: version: 2 build-test- approval-deploy: jobs: - build # your custom job from your config, that build your code - test1: # your custom job;运行测试套件1要求:# test1将不会运行,直到“构建”作业完成。- build - test2: #另一个自定义作业;# test2 is dependent on the success of job ' test1 ' - test1 - hold: # <<<在CircleCI web应用程序中需要手动批准的job。这个键值对将把您的工作流设置为“On Hold”的状态,要求:#我们只在test2成功时运行“Hold”作业- test2 #在审批“Hold”作业时,任何需要“Hold”作业的后续作业都将运行。#在这种情况下,用户手动触发部署作业。-部署:要求:-保持

因为我只有一个这样的工作流程

版本:2.1
工作:
构建:
working_directory: ~ /项目
码头工人:
——图片:circleci /节点:12
步骤:
- - - - - -付款
—执行命令NPM install

如果我只有一个工作流,我如何才能有一个基于审批的触发器?

嗨Harsha,

我仍然建议使用工作流语法甚至适用于单个作业。这样的话,你就可以用类型:批准属性在单个构建作业上。

您的完整配置可能如下所示:

版本:2.1 jobs: build: working_directory: ~/project docker: - image: circleci/node:12 steps: - checkout - run: NPM install workflow: Version: 2 build-workflow: jobs: - build: type: approval

希望这个有帮助。

谢谢你!@muhammed-sayadi,上面的配置可以为单个构建作业获得批准。但是在批准之后,我没有看到构建工作流被触发。
下面是配置文件。

版本:2.1
工作:
构建:
working_directory: ~ /项目
码头工人:
——图片:circleci /节点:12
步骤:
- - - - - -付款
—执行命令NPM install

—执行命令:name: Publish to NPM: | if [-z $CIRCLE_PR_NUMBER];然后npm设置//registry.npmjs.org/:_authToken=$NPM_TOKEN npm publish ~/project else echo "Nothing to publish!

工作流程:
版本:2
构建工作流等:
工作:
——构建:
类型:批准

这是链接CircleCI触发器的特定PR

在这张图片中,你可以看到在批准之后正在执行的步骤。

确实!我只是复制了你正在经历的行为。
我不确定这是不是预期的行为。Circle的人更有资格对此发表评论。

与此同时,我要做的是添加一个额外的工作来保持工作流,并使构建工作依赖于它。虽然不理想,但这确实有效。

查看下面的配置示例:

版本:2.1工作:持有:码头工人:形象:circleci /节点:12步骤:-运行:printf“持有工作等待手动批准”构建:working_directory: ~ /项目码头工人:——形象:circleci /节点:12步骤:——付款——运行:npm安装工作流:版本:2构建工作流等:工作:-持有:类型:批准——构建:要求:-

@muhammed-sayadi谢谢你的解决方案。

CircleCI团队有谁能在这里帮助我们吗,有没有更好的方法来实现这个目标?

1像

@harshavardhanc虽然我不在CircleCI工作,但我相当肯定一份认可工作是没有步骤的。您需要有一个依赖于将运行所需步骤的审批作业的作业。

实际上在配置中在这里您可以删除hold的作业定义,配置应该仍然有效且工作正常。

1像