What would cause Netlify to ignore [skip ci]/[skip netlify]?

I’m having trouble with the [skip ci] feature. Netlify appears to be ignoring it for me. Is there a reason this could fail?

This stopped working for me since last month and I’ve been watching the forum to see if anyone reports it and so far nobody mentions it, which make me think it’s something on my side.

I’m looking for suggestions on things I could check or what to do to fix this.

P.D. [skip netlify] doesn’t work either.
For the support team, if relevant: My app’s url is https://greenwoodweb.netlify.app

Thanks,
JC

Hey @jcespinoza,
Could you try putting [skip ci] in the commit body instead of the title and seeing if that works? If that doesn’t fix things, we’ll have to investigate further.

Hi @jen, I did as you suggested and it still got built.

As part of my investigation, I went to test on another site and it worked, the commit doesn’t even show up as Skipped in the Deploys tab (is it me or they did show up before?). There are a couple differences however, that one is on Bitbucket and I don’t have Deploy Previews, it’s just one master branch.

So I tried on a Github repo, tried to replicate the issue by opening pull requests and pushing commits to it, but it still works.

With these results, I deduce my Netlify account is fine and that the problem is the repo. I don’t have anything special in the repo’s settings, apart from some Github actions for Azure but I do have a netlify.toml file which looks like this:

[context.production]
  command = "make production"
  [context.production.environment]
    SOME_KEYS="ant their value"

[context.deploy-preview.environment]
    SOME_KEYS="ant their value"

[context.staging.environment]
    SOME_KEYS="ant their value"

I don’t think there’s anything with this file, in fact it’s doing its job very well.

Any ideas? I’m glad the problem is that they’re not being skipped instead of the other way around!

Thanks,
JC

Hey @jcespinoza,
I did some testing as well and found a few things:

  • It doesn’t matter whether [skip ci] is in the commit body or the title; both should work
  • BUT, for a PR, we will only look at the most recent commit. The commit with [skip ci] needs to be the last one in the PR, or the PR needs to have it in the title.
  • A “squash and merge” with [skip ci] in the body will meet the criteria to be skipped. By default, Github’s “squash a merge” includes all of the commit messages, so if one of the commits had [skip ci] in it, the build will be skipped.
  • A “merge commit” will not have previous commit text in it by default, so you would have to add it

Our docs explain:

In the case of multiple commits pushed together, add [skip ci] or [skip netlify] to the most recent commit, and it will apply to all other commits in the push.

Let us know if this helps!

Hi @jen, thanks for your reply.

I agree with your findings and it’s in fact what I had been observing before, unfortunately for this repo it’s not the case.
Now, I 'd like to share something I found today.

I decided to add [skip ci] to the name of the Pull Request as I suspected that it’s what Netlify looks at. And guess what? It wasn’t built.

I did some work, pushed the commit. I didn’t add the [skip ci] keyword but Netlify ignored it anyway. I kinda expected that. So I changed the Pull Request’s name removing the skip keyword.

I made an empty commit and pushed it. It wasn’t built because it was an empty commit and Netlify realized “'there were no changes”; not surprising. The next commits, with actual source changes, did get built (even when I asked it not to with [skip netlify]).

So, this confirms my suspicion that for this repo, what matters is the Pull Request name for some reason. Could it be a bug?

Thanks for the app details!

I think the problem is that you push multiple commits to some PR’s. We ONLY use the message from the first commit for all builds on that PR - so if the message on the first commit in the PR had [skip ci] we’d skip it for the entire PR; if not, for none.