我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 的这个问题吗?这不是一个关键问题,因为有解决方法,但我认为我的配置在某处存在问题,但我似乎找不到任何有用/相关的东西。