1

I use semaphore CI for continuous integration, specifically for Feature tests and Specs in PHP and Ruby. I noticed a deviation from the documentation on caching in one of my projects. The documentation says:

The cache restore command that has zero arguments would lookup cachable elements and try to fetch them from the repository.

$ 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-'.
...

The important part about that is the 3 cache keys:

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

When I implemented the cache restore command and ran the job, this was the output I got:

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

This job was not run against master, but a different branch, let's call it secondary. Notice the slight deviation on the branches:

gems-master-checksum (expected this to be gems-secondary-checksum)
gems-master- (this one is expected)
gems-master- (expected this to be gems-secondary)

For some reason, Semaphore thinks that my branch is master, not secondary. I did some more digging. You can manually specify Cache Keys using the following syntax:

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

But, when running this, it outputs

gems-master-checksum (expected gems-secondary-checksum)

I was able to eventually get it working with the other environment variable:

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

gems-secondary-checksum

The documentation suggests that this shouldn't be the case:

SEMAPHORE_GIT_BRANCH
The value of the SEMAPHORE_GIT_BRANCH environment variable is the name of the GitHub branch that is used in the current job.
In builds triggered by a Pull Request the value of the SEMAPHORE_GIT_BRANCH is the name of the GitHub branch targeted by the Pull Request.

SEMAPHORE_GIT_PR_BRANCH
The value of the SEMAPHORE_GIT_PR_BRANCH environment variable is the name of the GitHub branch from which the Pull Request originated.

Has anyone seen this issue with Semaphore CI? It's not a critical issue, as there are workarounds, but I'm thinking there is an issue with my configuration somewhere, but I can't seem to find anything useful/related.

Tim Lewis
  • 27,813
  • 13
  • 73
  • 102

0 Answers0