circleci - 如何使自定义命令始终使用`when:always`运行
问题描述
我有一个圈配置,其中包括以下自定义命令:
remove-circle-ip:
description: "remove current Circle CI box IP from inbound security group rules for DB"
steps:
- aws-white-list-circleci-ip/remove:
tag-key: circleci
tag-value: whitelistmeplease
port: 5432
我在工作中使用如下:
jobs:
test:
docker:
- image: nikolaik/python-nodejs:python3.8-nodejs12
environment:
AWS_DEFAULT_REGION: us-east-2
steps:
- setup
- install-python-deps
- add-circle-ip
- run:
name: run tests
command: |
poetry run coverage run --source='.' manage.py test
- run:
name: remove circle IP
command: remove-circle-ip
when: always
即使在它之前运行的测试失败,我也希望运行删除圈子 IP 的步骤。我似乎无法弄清楚这个的语法。以前,我只是用来- remove-circle-ip
运行命令而不是放置run
块,即:
jobs:
test:
docker:
...
steps:
- setup
- ...
- add-circle-ip
- ...
- remove-circle-ip
但不知道如何指定when: always
我是否这样做。
但是现在,当切换到将我的命令作为run
块的一部分调用时,它失败了"remove-circle-ip: command not found"
那么,即使之前的步骤失败,我怎样才能让这个命令始终运行呢?
解决方案
我对 CircleCI 还很陌生,所以可能有更好的方法可以做到这一点,或者根本不应该这样做,但是(在我加入之前)我正在从事的项目已经做过类似的事情。它是通过使每一步都报告成功来实现的,无论它实际上是成功还是失败,这允许最后的命令始终运行。这些命令都是终端命令,所以它们只是|| true
在最后。我不确定您将如何使用更复杂的命令或使用内置命令来实现这一目标。
在我们的例子中,可能失败的步骤是可选的,我们不在乎它们是否真的失败了。但是,如果您想报告失败,我认为您应该能够将上一步的失败存储在某处,并添加报告它的最后一步。
推荐阅读
- c - 我的 C 代码没有正确计算单词和句子,而是计算 char
- python - 无法计算得到跟随集
- java - 带有检查异常的 Java 8 流
- java - 线程转储:要查找什么来确定负责 100% CPU 的线程?
- c - 为什么 MPI_Comm_size 的返回值是有符号的?
- asp.net - RouteCreationException 但我找不到错误
- python - Python2 和 Python3
- javascript - 获取/设置函数作为类的属性(TypeScript)
- python - 插入成员 - 代码:400,消息:缺少必填字段:成员
- scala - 如何对列求和并将求和列添加到 Spark DataFrame?