小编Ole*_*nko的帖子

gitlab-ci.yml 中的条件变量

根据构建来自的分支,我需要使用稍微不同的命令行参数。特别是我想在从分支构建时上传快照关系工件,并在构建主时释放工件。

有没有办法有条件地改变变量?

我尝试使用像这样的 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)

variables conditional-statements gitlab-ci

9
推荐指数
2
解决办法
1万
查看次数

检测夹具内的测试是否失败

我正在调试间歇性测试失败.为此,我想在测试失败时转储大量调试信息.转储调试的过程非常缓慢,产生大量数据,所以我不想为每个测试都这样做.

我正在使用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符号.我试图挖掘请求和节点对象,但没有运气.

谁知道如何检测测试是否失败?

testing pytest

7
推荐指数
1
解决办法
759
查看次数

asyncio:以亚毫秒为间隔休眠

我正在构建基于树莓派的设备。它将有几个应该同时工作的并发功能。在这种情况下,使用 asyncio 看起来是一个合理的选择(好吧,我可以用 C++ 用线程编写所有这些东西,但 python 代码看起来更紧凑)

其中一项功能是通过 GPIO 脉冲驱动步进电机。这些脉冲的长度应为 5-10 微秒。有没有办法在 asyncio sleep 的亚毫秒间隔内入睡?

python python-asyncio

5
推荐指数
1
解决办法
5880
查看次数