我想创建一个仅在满足以下两个条件时才运行的管道:
我试过了:
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 only和How to run a gitlab-ci.yml job only on a tagged branch? .
我也知道在 gitlab 的问题中有/曾经有过广泛的讨论,有一些解决方案(或类似的解决方案)像这样。
一般的问题似乎是,在 gitlab 中无法确定在给定分支上的提交是否可靠,因为未提供此信息(git 历史记录)。
这个问题是为了在 gitlab CI …
这是 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, 可以被静态类型检查器检测到。
如何在运行代码之前注释我的extension或B.bar以便检测到此问题?
此注释也有助于 IDE 为我提供有关extensionor 的正确建议B.bar。