At the moment CD is just me running "eb deploy" every so often which isn't great.
First, try to move any scripts that you might have and any dependency on yours or your team members workstation to a dedicated CI/CD tool (like Jenkins).
Second, from the beginning, make sure to follow the "best practices" on how to handle credentials and secrets. Don't add in plain text any credentials or SSH keys.
Third. from that point on, you can start looking at more complex tooling and/or deployment strategies (canary deployments, blue-green deployments, etc) to make sure updates on your applications won't break production.
CI/CD pipelines don't have to be fancy in order to work properly.
That could distill down to as simple as the single-word command 'pytest' or 'tox' for a Python project, or 'jest' for Javascript (with all configuration bundled in the repo).
Then a platform that provides a straightforward transition from a command-line step to a pipeline job; both GitLab and GitHub offer that through their respective YAML configuration languages.
The nice thing about this - if you're careful - is that it avoids too much vendor lock-in. If needed in future, you can migrate to another service that allows running simple command-line scripts.
Some of this applies to continuous deployment too, but in practice that depends a lot on your infrastructure and service/process management (kubernetes, systemd, etc). It's possible to design that to make command-line CI/CD straightforward too, but a lot easier if you plan for it up-front, and more challenging to migrate to from another architecture.