Just some freeform thoughts from your question.
For perspective, I run a large enterprise DevOps team that has automated build & deployment for a wide range of large scale services (which run over k8s/AWS primarily). That doesn't necessarily mean I'm good at things, haha (always check your sources) - but I think we're in a very good spot personally =). But the advice comes from practical experience and lots of time spent iterating at least.
- When we hire people we really don't care what CI/CD tool they knew, or what "automation" tool they knew. We just care that they know one well and can explain some pipelines and their challenges in depth.
- Note that if you're not in k8s, deployment usually involves terraform, cloud formation, ansible, or one of many other tools on top of your CI/CD engine.
- So, rather than overthinking which tool to learn (they evolve constantly), my recommendation is pick a mainstream one and focus on a "hard use case" so that you have to do something complex in it that forces you to learn.
- We use GitLab CI, and previously Jenkins. People in the industry also seem to like Spinnaker, CircleCI, and the equivalent cloud tools (AWS and Azure have all their own). GitHub Actions is also huge now.
- I don't think tools just do CI or CD. That's a very arbitrary line. CD just means your pipeline pushed to production (in a hopefully validated and safe manner). Jenkins can do that, GitLab can do that, any of those tools can. They're free form and you tell them what to do.
- Having everything in one tool is revolutionary and makes life 1000 times easier. E.g. GitLab, GitHub, etc are going all in to do code, wikis, testing, container and artifact registries, deployment, monitoring, even things like incident management. It's amazingly helpful and goes far beyond "CI and CD". More tools = more integration issues and more sprawl and a greater chance you miss or get lazy about something / waste time coding integrations.
- For getting started, anything really works again. I might recommend GitHub actions, GitLab, or Jenkins. The first 2 may be a little better as they have more tools in them. With Jenkins you'll need external artifact registries and such. But Jenkins is good as it is super common still.
FYI, I don't know much about Jenkins vs JenkinsX, so ignoring that part :).