Laird Nelson
Laird Nelson

Reputation: 16186

Is there a way to make Gitlab CI run only when I commit an actual file?

New to Gitlab CI/CD.

What is the proper construct to use in my .gitlab-ci.yml file to ensure that my validation job runs only when a "real" checkin happens?

What I mean is, I observe that the moment I create a merge request, say—which of course creates a new branch—the CI/CD process runs. That is, the branch creation itself, despite the fact that no files have changed, causes the .gitlab-ci.yml file to be processed and pipelines to be kicked off.

Ideally I'd only want this sort of thing to happen when there is actually a change to a file, or a file addition, etc.—in common-sense terms, I don't want CI/CD running on silly operations that don't actually really change the state of the software under development.

I'm passably familiar with except and only, but these don't seem to be able to limit things the way I want. Am I missing a fundamental category or recipe?

Upvotes: 1

Views: 1405

Answers (1)

Stefan van Gastel
Stefan van Gastel

Reputation: 4478

I'm afraid what you ask is not possible within Gitlab CI.

There could be a way to use the CI_COMMIT_SHA predefined variable since that will be the same in your new branch compared to your source branch.

Still, the pipeline will run before it can determine or compare SHA's in a custom script or condition.

Gitlab runs pipelines for branches or tags, not commits. Pushing to a repo triggers a pipeline, branching is in fact pushing a change to the repo.

Upvotes: 3

Related Questions