小编Kou*_*und的帖子

Gitlab CI:仅为受保护分支上存在的标记提交运行管道作业

我想创建一个仅在满足以下两个条件时才运行的管道:

  • 标签是指给定的提交
  • 提交存在于任何受保护的分支(即 master)
  • 可选:无论何时将标记的未受保护分支合并(使用合并请求)到受保护分支或将标记添加到受保护分支,都应运行该作业。

我试过了:

publish:
  stage: publish
  script:
    - echo "Publish!"
  rules:
    # Only publish if tag given and commit is present on a protected branch
    - if: '$CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"'
Run Code Online (Sandbox Code Playgroud)

不作为任何工作$CI_COMMIT_TAG设置$CI_COMMIT_REF_PROTECTED设置为true。

我知道类似的问题:Gitlab ci run job on master with release tag onlyHow to run a gitlab-ci.yml job only on a tagged branch? .

我也知道在 gitlab 的问题中有/曾经有过广泛的讨论,有一些解决方案(或类似的解决方案)像这样

一般的问题似乎是,在 gitlab 中无法确定在给定分支上的提交是否可靠,因为未提供此信息(git 历史记录)。

这个问题是为了在 gitlab CI …

tags conditional-statements gitlab-ci

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

Python 键入:将“**kwargs”从一个函数复制到另一个函数

这是 Python 扩展或包装函数中的常见模式,用于**kwargs将所有关键字参数传递给扩展函数。

即采取

class A:
    def bar(self, *, a: int, b: str, c: float) -> str:
       return f"{a}_{b}_{c}"
   

class B(A):
    def bar(self, **kwargs):
        return f"NEW_{super().bar(**kwargs)}"


def base_function(*, a: int, b: str, c: float) -> str:
    return f"{a}_{b}_{c}"


def extension(**kwargs) -> str:
    return f"NEW_{base_function(**kwargs)}"
Run Code Online (Sandbox Code Playgroud)

现在调用extension(not_existing="a")orB().bar(not_existing="a")会导致TypeError, 可以被静态类型检查器检测到。

如何在运行代码之前注释我的extensionB.bar以便检测到此问题?

此注释也有助于 IDE 为我提供有关extensionor 的正确建议B.bar

python python-typing

6
推荐指数
1
解决办法
2732
查看次数