Decouple!
CI should just build container images and do testing. CircleCI, Github Actions, Gitlab, Travis... Jenkins if you don't have any other choice..
CD should manage the deployment of that compiled code into a working environment.. Renovate Bot, Argo CD/Rollouts, Flux.. Ansible if you're still doing things the old way..
If you are still stuck doing stuff the old ways (bare metal, VMs, ansible, etc), packer is great for building immutable images so you can hopefully dump config management entirely.