1.
build.sh - это ок, потому что позволяет собирать на машине разраба без докера.
2. В паплайне в гитлабе ты можешь универсально дергать этот
build.sh с правильными параметрами в докер образе, где все окружение
3. Конечным результатом сборки должно быть то, что нужно - докер, мейвен пекедж или как там у тебя доставляется софт. Не надо думать, что все в докере