Saw a recent announcement from GitLab that the only
and except
syntax for
GitLab CI/CD was going to be deprecated soon in the v13 release.
Amendment: The
only
/except
syntax isn’t actually being deprecated as
pointed out by Jason Yavorska. It’s actually related to a template that
is deprecating said syntax.That one’s on me as I couldn’t find the original notification about this to
verify. I still ported my stuff over and plan to continue to use therules
syntax moving forward as it seems to provide a ton more flexibility that I may
end up utilizing in the future.</em>
Not wanting to be stuck wondering why my builds are erroring out once that
release drops, I figured I should put some time this week to shore up my
projects that are using GitLab CI/CD and make sure I’m on the latest and
greatest syntax.
Unfortunately, the latest and greatest syntax is also a bit more complex and I
was left sifting through the docs a bit more than I would have liked,
considering I would assume that a deprecation of this magnitude would have
justified a bit of a migration guide with before and after syntax to be able to
copy pasta.
Fortunately, at least for my use case, it didn’t take much to port the syntax
over. Keep in mind, my usage is extremely simplistic so your mileage may vary if
you’re looking for some robust guide to every possible scenario.
For me, simply limiting my deploy
stage to only run on master
is more than
sufficient. The syntax looks something like this (truncated of course):
deploy:
stage: deploy
only:
- master
The new syntax is a bit more verbose, but still only 2 lines:
deploy:
stage: deploy
rules:
- if: $CI_COMMIT_BRANCH == "master"
Not a whole lot to it, but as mentioned, I didn’t think their documentation did
a good job with this one, so seemed worth documenting. Especially if I happen to
forget one of my repos and have to remember what the hell I did to get things
working again!