Maybe this is new in gitlab. Each project needs to have a description before creating a release. Can you maybe add a check if that value is not emtpy and then do a proper error message? Or pass the error along from the returning response. Currently it silently fails without message. just having the info HTTPError: Response code 422 (Unprocessable Entity).
[root@localhost ci-tools]# curl --header 'Content-Type: application/json' --header "PRIVATE-TOKEN: glpat-XXX" \
--data '{ "tag_name": "v1.0.1", "description": "## [1.0.1](https://gitlab.com/xrow-public/ci-tools/compare/v1.0.0...v1.0.1) (2024-03-03)\n\n\n### Bug Fixes\n\n* Remove ansible.cfg file ([610b0dd](https://gitlab.com/xrow-public/ci-tools/commit/610b0dd3e1383fd24db2151ab523851d89c092f5))\n\n\n\n", "assets": { "links": [] } }' \
--request POST "https://gitlab.com/api/v4/projects/xrow-public%2Fci-tools/releases"
{"message":"Project must have a description"}