2015-03-12 6 views
5

В нашей компании у нас есть действительно мощные серверы построения на основе Linux (двойной Xeon с 40 ядрами) и не очень мощные ноутбуки win7. Мы строим наш продукт на языке C/C++ для эзотерического процессора. Компилятор существует только в Linux. Я могу редактировать мой git repo с помощью Qt Creator. Он работает и довольно быстро и все. Но я не могу создать источник на нашем ноутбуке. У нас есть основное git-репо, и я могу клонировать одно и то же репо на свой ноутбук и наш сервер сборки. Я хочу достичь этого, когда я нажимаю кнопку сборки, мой код волшебным образом строится на сервере сборки. Я сделал доказательство концептуального решения, где мой скрипт сборки делает git diff на моем репо и scp его на сервер сборки, чем на ssh, чтобы создать сервер, применяя этот diff на серверной репо, чем запуск и ожидание компиляции. Но это решение не настолько безупречное доказательство. Я думаю, что существует более подходящий метод/метод. Итак, как я могу создать свой git-репо на внешнем сервере?Как я могу создать локальный репозиторий git на внешнем сервере?

+0

Один из распространенных методов заключается в том, что на сервере-репо есть пост-приемный крючок, вы нажимаете на это репо, и он выполняет проверку и управляет сборкой. – jthill

+0

Независимо от того, как вам удается создать сервер сборки для создания ваших источников, было бы неплохо получить какую-либо обратную связь до того, как вы ее совершите? Возможно, есть кросс-компилятор, который работает на вашем ноутбуке? – flup

ответ

4

Если вы можете нажать на bare repo на сервере сборки, то вы можете связать с этой голой репо post-receive hook (.git/hooks/post-receive), который будет:

  • фотографии код

    #!/bin/sh 
    git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f 
    
  • триггер компиляции.

Таким образом, вам не придется обращаться с разницей самостоятельно.
Вам нужно всего лишь связать с кнопкой build действие, чтобы направить вашу ветку на голый репо сервера сборки, а хук post-receive сделает все остальное.

+0

Проверьте код с чистого репо? –

+0

@ Промышленный антидепрессант, который является идеей: голое репо позволяет вам нажимать на него, но из чистого репо вы можете проверить его содержимое на рабочем дереве, расположенном в любом месте, где хотите, и использовать это рабочее дерево для строительства. – VonC

+0

Я попробую это, хорошо выглядит для меня. Я не знал, что могу проверить голый репо на рабочем месте. –

2

Вы можете перейти на forking Workflow, где каждый разработчик в компании имеет публичное публичное репо, являющееся вилкой официального центрального хранилища.

Затем, когда вы хотите создать свои изменения, вы нажимаете их (ветку или хозяин) на свое личное публичное репо.

Сервер сборки не только клонирует официальное центральное хранилище, но и ваше публичное репо. Поэтому, когда вы нажимаете на свое личное публичное репо, сервер сборки объединяет изменения и делает личную сборку для вас. Точно так же, как это, вероятно, уже делается для официального центрального хранилища?

Обратите внимание, что это не тоже отличается от ответа @VonC, просто фокусируется немного на рабочем процессе. Личный публичный репо вполне может быть на сервере сборки, как предлагает @VonC. Или это может быть где-то еще. Пока это достаточно простое место, чтобы сервер сборки и вы и ваши коллеги могли его найти.

+0

Выглядит интересно, я определенно буду играть с этим подходом. –

2

Рассмотрите возможность интеграции http://jenkins-ci.org/ в рабочий процесс, чтобы позаботиться о процессе сборки, используя «git post-receive hook» для запуска сборки (как предложено @VonC).

Если вы хотите использовать «Рабочий процесс Forking Workflow», как предлагается @flup, вы можете взглянуть на http://gitlab.com, который обеспечивает простой способ управления запросами на вытягивание/слияние, хранилища fork и добавление крючков.

Смежные вопросы