Сборку фронтенда лучше делать локально. Я, например, обычно для таких вещей использую Ansible.
Приведу пример, как это могло бы выглядеть в виде shell-сценария (можете просто копировать и выполнять команды в командной строке шаг за шагом и смотреть что происходит):
#!/bin/sh
# Создание временной директории
cd "$(mktemp --directory)";
# Клонирование репозитория во временную директорию
git clone https://github.com/symfony/demo .;
# Извлечение ветки для релиза
git checkout master;
# Установка зависимостей фронтенда
npm install
# Сборка фронтенда
node_modules/.bin/encore production
# Загрузка кода из временной директории на сервер при помощи rsync
# Остальные действия производятся уже на сервере