1

semaphore CI用于持续集成,特别是 PHP 和 Ruby 中的功能测试和规范。我注意到我的一个项目中关于缓存的文档存在偏差。文档说:

具有零参数的cache restore命令将查找可缓存元素并尝试从存储库中获取它们。

$ cache restore
==> Detecting project structure and storing it into the cache.

* Detected Gemfile.lock.
* Fetching 'vendor/bundle' directory with cache keys 'gems-your-branch-checksum,gems-master-,gems-your-branch-'.
...

重要的部分是 3 个缓存键:

gems-your-branch-checksum
gems-master-
gems-your-branch-

当我执行cache restore命令并运行作业时,得到的输出如下:

* Detected Gemfile.lock.
* Fetching 'vendor/bundle' directory with cache keys 'gems-master-checksum,gems-master-,gems-master-'.
...

这项工作不是针对master,而是针对不同的分支,我们称之为secondary注意树枝上的细微偏差:

gems-master-checksum(预计会这样gems-secondary-checksum) (预计会这样
gems-master-
gems-master-(预计会这样gems-secondary

出于某种原因,Semaphore 认为我的分支是master,而不是次要的。我做了更多的挖掘。您可以使用以下语法手动指定缓存键:

cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock)

但是,当运行它时,它会输出

gems-master-checksum(预计gems-secondary-checksum

我最终能够让它与其他环境变量一起工作:

cache restore gems-$SEMAPHORE_GIT_PR_BRANCH-$(checksum Gemfile.lock)

gems-secondary-checksum

文档表明不应该是这种情况:

SEMAPHORE_GIT_BRANCH
SEMAPHORE_GIT_BRANCH 环境变量的值是当前作业中使用的 GitHub 分支的名称。
在由拉取请求触发的构建中,SEMAPHORE_GIT_BRANCH 的值是拉取请求所针对的 GitHub 分支的名称。

SEMAPHORE_GIT_PR_BRANCH
SEMAPHORE_GIT_PR_BRANCH 环境变量的值是发起拉取请求的 GitHub 分支的名称。

有人见过 Semaphore CI 的这个问题吗?这不是一个关键问题,因为有解决方法,但我认为我的配置在某处存在问题,但我似乎找不到任何有用/相关的东西。

4

0 回答 0