As Velu says, you can script the export and import of "content porter" packages via the Import/Export service API. Essentially, all the core functionality of Content Porter has gradually moved to the server, and the Content Porter client is just user interface. Things that were tricky using the client don't magically become easy with the service, but it can be automated.
On the plus side, much of the Content Porter's complexity is in dependency management. Traditional software releases using Content Porter usually involve switching off the dependency management and managing dependencies yourself. This is the area where you should be having a long hard think about what you are trying to do. Possible strategies include:
- Always export everything
- Ensure that any items you depend on are present in the same package
- Use multiple packages, ensuring that depended-on items are imported first
Dependency strategy is enough of a subject in itself that you could probably ask specific questions here about these issues when you run into them.
You don't have to use Content Porter or the Import/Export API. TBBs etc, are either text items or binary items, and you can create and update these using the standard core service or webdav. This is likely only to be interesting for local edge cases, particularly as the Content Porter translates Tcm URIs backwards and forwards to WebDAVUrls as necessary, and while you could do that yourself it might feel like reinventing the wheel.
For some kinds of assets, such as Workflow, Events or any kind of extension that needs to be installed on the server, you could consider XCopy deployment or building Windows installers, the latter particularly if you want to do a GAC install. (Maybe these updates will be infrequent enough that it isn't a priority to make it part of your CI/CD setup.) You might also want to look at creating your own Alchemy plugins.
This whole area is of huge interest right now, as many Tridion customers make the transition to more modern development practices. Your question, as it stands, isn't detailed enough to ask more than "is it possible". The answer is yes, but we're all busy trying to figure out exactly how. Each situation will be different, but our community can be hugely powerful in helping to coalesce around shared good practice. I hope you'll be asking more detailed and specific questions as you get deeper into it.