根据构建来自的分支,我需要使用稍微不同的命令行参数。特别是我想在从分支构建时上传快照关系工件,并在构建主时释放工件。
有没有办法有条件地改变变量?
我尝试使用像这样的 except/only 关键字
stages:
- stage
variables:
TYPE: Release
.upload_common:
stage: stage
tags: ["Win"]
script:
- echo Uploading %TYPE%
.upload_snapshot:
variables:
TYPE: "Snapshot"
except:
- master
upload:
extends:
- .upload_common
- .upload_snapshot
Run Code Online (Sandbox Code Playgroud)
不幸的是,它在构建 master 时跳过了整个上传步骤。
我在这里使用“扩展”模式的原因是我有 win 和 mac 平台,它们使用稍微不同的变量替换语法($ vs %)。我还有一些不同的构建配置 - 调试/发布,32 位/64 位。
下面的代码确实有效,但我不得不重复发布和快照的步骤,一次启用一个。
stages:
- stage
.upload_common:
stage: stage
tags: ["Win"]
script:
- echo Uploading %TYPE%
.upload_snapshot:
variables:
TYPE: "Snapshot"
except:
- master
.upload_release:
variables:
TYPE: "Release"
only:
- master
upload_release:
extends:
- .upload_common …Run Code Online (Sandbox Code Playgroud) 我正在调试间歇性测试失败.为此,我想在测试失败时转储大量调试信息.转储调试的过程非常缓慢,产生大量数据,所以我不想为每个测试都这样做.
我正在使用pytest和yield autouse fixture应该工作得很好
@pytest.yield_fixture(scope="function", autouse=True)
def dump_on_failue(request):
prepare_debug_dump()
yield
if test_failed(request):
debug_dump()
Run Code Online (Sandbox Code Playgroud)
问题是我无法弄清楚如何检测测试是否失败.在pytest网站上已经有一些问题甚至是注意事项:
if request.node.rep_setup.failed:
print ("setting up a test failed!", request.node.nodeid)
elif request.node.rep_setup.passed:
if request.node.rep_call.failed:
print ("executing test failed", request.node.nodeid)
Run Code Online (Sandbox Code Playgroud)
不幸的是,此代码不再起作用.节点对象中没有rep_setup和rep_calls符号.我试图挖掘请求和节点对象,但没有运气.
谁知道如何检测测试是否失败?
我正在构建基于树莓派的设备。它将有几个应该同时工作的并发功能。在这种情况下,使用 asyncio 看起来是一个合理的选择(好吧,我可以用 C++ 用线程编写所有这些东西,但 python 代码看起来更紧凑)
其中一项功能是通过 GPIO 脉冲驱动步进电机。这些脉冲的长度应为 5-10 微秒。有没有办法在 asyncio sleep 的亚毫秒间隔内入睡?