如何通过SSH在CI上成功部署我的Webapp从而成功完成?

I have a CI pipeline in GitLab that builds my app and puts it in a folder.

What's the proper way to publish it and make some changes on the server where it is deployed?

I am thinking of a "pull" scenario: push the built app to a dedicated repo which I then clone on the target machine and make the necessary scripts run.

I suppose I can "push" the app from the CI server via SSH, but not sure it's the right way.

How do I make it in a proper and not overcomplicated manner?

push the built app to a dedicated repo which I then clone on the target machine and make the necessary scripts run.

That would be done through a post-receive hook set on a bare repo on your server. The hook script would be:

git --git-dir=/path/to/project_root/.git --work-tree=/var/www/http/ checkout -f

You can complete that script with other commands to further modify your deployment.

Your CI should test if the way you build your app is good or not. After build and put in a folder, add a test of this app (functional, by deploying it if it's relevant, or just verify integrity of it). Then, you can choose to merge (and then, as you said, clone the repo on a target machine); this could be done by another CI pipeline, in fact. Pushing the app, for me, is not part of the pipeline nor the code, so it should not be integrated on it.

Gitlab CI gives you a lot of freedom how you want to deploy your app. You can choose to use docker, fabric, puppet, chef, ansible or just plain bash and ssh.

I use fabric + docker myself.