How to execute shell command or call URL on new gitlab issue?
That's mostly what gitlab webhooks are for I think.

For your case that would be an issue event and you'll have to create something to parse the posted json and do whatever is needed on your CalDav infra to match your needs.