小编ker*_*707的帖子

如何在 Gitlab CI 中合并同一阶段的跨作业工件?

在 Gitlab CI 工件中,根据生成它们的作业进行隔离,因此在下载时,您只能按作业下载它。

有没有办法下载所有工件,或者将工件传递到其他阶段并从那里上传?基本上是某种合并阶段所有工件的方法。

可能需要它的场景:假设在阶段部署中,我正在使用 10 个不同的并行作业在 10 个不同的服务器上部署我的项目。其中每一个都会生成一些工件。但是,无法从用户界面下载所有这些内容。

那么有人知道解决方法吗?我不是在寻找基于 API 的解决方案,而是在寻找基于 UI 的解决方案或编辑 CI yaml 文件以使其工作。

continuous-integration gitlab gitlab-ci devops

8
推荐指数
1
解决办法
7646
查看次数

如何在 Go 中模拟包方法?

假设我有一个包含以下代码的包:

package paths

type FilePath struct {
    PathA string
}

func (c FilePath) GetPathA() string {
    if err := PathExists(PathA); err != nil {
    return ""
    }
    return PathA + "foo"
}

func PathExists(p string) error {
    // call os and file methods
    return err
}
Run Code Online (Sandbox Code Playgroud)

如何模拟 PathExists 依赖项来测试 FilePath?此外,PathExists许多其他包也正在使用该方法。(我愿意接受重构此代码以使其测试友好的建议,请记住以下几点)

我遇到过几种不同的方法,但对我来说,没有一种方法是直观的或惯用的。

  1. PE := PathExists包中有全局变量;在 中GetPathA,调用err := PE(PathA)并在测试PE中用模拟方法覆盖。

    问题:如果测试包类似于 paths_test,我将必须导出,PE这也允许包的客户端覆盖它。

  2. 在测试中创建PathExists一个字段FilePath并模拟该字段。

    问题:客户端在使用该包时,必须初始化PathExists字段,或者我提供一个表单的构造函数NewFilePath(PathtA string) …

testing unit-testing mocking go

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