непонятно, зачем хранить где-то там код в отдельных каталогах, он уже и так есть в репозитории.
что касается уже скомпилированного и собранного проекта, то это реализуется через артефакты сборки: https://docs.gitlab.com/ee/user/project/pipelines/...
поднять экземпляр gitlab-runner, настроить его, прописать в .gitlab-ci.yml работу deploy, которая будет скриптом "выкатывать" изменения в нужное место. дополнительно стоит прописать условия, чтобы изменения выкатывались только из главной ветки главного репозитория.