Consider the following hypothetical situation:
JuliaLang/julia repository |
JuliaCI/julia-buildkite repository |
release-1.6 |
buildkite-1.6 |
In other words, suppose that the release-1.6
branch of the JuliaLang/julia
repository is tracking the buildkite-1.6
branch of the JuliaCI/julia-buildkite
repository. More concretely, this means that the release-1.6
branch contains a file named buildkite.version
with the following contents:
Suppose that, currently, the commit history of the buildkite-1.6
branch looks like this:
A
|
B
|
C <--- buildkite-1.6
In other words, the buildkite-1.6
branch currently points to commit C
.
Suppose that a build is started on the release-1.6
branch. Suppose that our build matrix only contains two jobs: package_linux64
and tester_linux64
. The tester_linux64
job cannot start until after the package_linux64
has successfully finished.
So, the package_linux64
job starts, and it pulls the latest version of the buildkite-1.6
branch, which gives it the Buildkite configuration files corresponding to commit C
in the JuliaCI/julia-buildkite
repository.
While the package_linux64
job is still running, someone pushes a new commit to the buildkite-1.6
branch. Now, the commit history of the buildkite-1.6
branch looks like this:
A
|
B
|
C
|
D <--- buildkite-1.6
After the package_linux64
job finishes, the tester_linux64
job starts, and it pulls the latest version of the buildkite-1.6
branch, which gives it the Buildkite configuration files corresponding to commit D
in the JuliaCI/julia-buildkite
repository.
So this has led to a very strange situation, in which two jobs in the same build have used different Buildkite configuration files:
Job |
JuliaCI/julia-buildkite repository |
package_linux64 |
Commit C |
tester_linux64 |
Commit D |
I think that this is a bug. I think we want to enforce the same Buildkite configuration across all jobs in a single build.
Specifically, I think that, in this example, we want to enforce that all jobs in this build use commit C
, because that was the commit to which the buildkite-1.6
branch was pointing when the build first started.