This post was most recently updated on May 8th, 2022.2 min read.
This article documents a simple but annoying fix to an issue with Azure DevOps. In this particular case, an incoming webhook (configured as a service connection) would fail to fire, no matter what.
It turns out that it’s a bug in Azure DevOps – who would have thought :) Luckily, there’s a fairly simple workaround available!
A colleague was configuring a new pipeline in Azure DevOps. It was supposed to fire based on an external webhook that was defined as a service connection to the project. No matter what he did, it refused to work – but a similar configuration worked in other projects, so we knew that it SHOULD work.
After some googling, he found a solution (well.. you’ll see), and gave me permission to share it (as I found it so annoying and definitely worth documenting!) 😁
The solution is annoying because it’s not really a solution, but rather a crappy workaround. I’m happy to document any thoughtful workarounds, but this one isn’t that thoughtful. And it’s a bit annoying that Microsoft hasn’t acknowledged this to be a bug – even though it most definitely is one!
I’d hope this worked properly – but bah. we’ll have the workaround.
Anyway – here goes:
Time needed: 30 minutes.
How to fix the Azure DevOps pipeline not getting triggered by an incoming webhook?
- Copy your pipeline YAML and variables somewhere
Grab a copy of your whole pipeline and any variables you might have configured. You’ll need them in a moment!
- Create a new pipeline
Next, You’ll need a new pipeline. And when I say “new pipeline”, it really needs to be the whole pipeline – just creating a new YAML file doesn’t work.
Alternatively, you could create a new pipeline based on the old YAML file.
- Paste your YAML and variables to the new pipeline
Now it’s the time to just paste what you had in the old pipeline, to your new pipeline.
Make sure it’s 100% the same! I’m showing an example of a super simple configuration that didn’t work in the “old” pipeline configuration but did work in the new one below.
And that’s it. A bit stupid and somewhat frustrating, but you got to do what you got to do, right? :)
This is the sample YAML we tried.
trigger: none resources: webhooks: - webhook: <webhook name> # Make sure the casing here is correct! connection: <connection name> # This comes from Service Connections stages: - stage: Echo displayName: Echo jobs: - job: Echo displayName: Echo pool: vmImage: ‘ubuntu-latest’ steps: - script: | echo “running!” displayName: ‘Echo’
This one was finally figured out by a colleague of mine (well, now a former one anyway), with whom we were investigating this case – so the credit goes to him. 😃 I just figured this needs to be documented, and there is no way that Microsoft is going to do it, so…
- Using role claims to target WebSockets - May 24, 2022
- The simplest fixes to “500 (Internal Server Error)” from Azurite - May 17, 2022
- How to solve “Npgsql: 42883: function create_hypertable(…) does not exist”? - May 10, 2022