Tinkoff / Nginx-builder

A tool to build deb or rpm package of required Nginx version from the source code, with the ability to connect third-party modules. Nginx parameters are set in the yaml configuration file.
Apache License 2.0
154 stars 28 forks source link

добавить опцию "зачистки поляны" #6

Closed stepansantalov closed 5 years ago

stepansantalov commented 5 years ago

Последующие сборки спотыкаются об оставшиеся от предыдущих артефакты (исходники, пакеты). 1 Хочется иметь возможность все это зачищать (например ./main.py clear -f config.yaml). 2 Хочется иметь возможность "не спотыкаться" об имеющиеся исходники и перезаписывать пакет.

therb1 commented 5 years ago

Скиньте пример лога когда инструмент спотыкается. Чем вы пользуетесь для сборки?

stepansantalov commented 5 years ago

Debian Stretch 9.8

stepan@temmik:~/Nginx-builder$ ./main.py build -f banana-config.yaml -r 0.02 builder - INFO - Parse yaml file: banana-config.yaml builder - INFO - /usr/src/nginx dir already exist builder - INFO - Download scripts for build deb package builder - INFO - Downloading nginx src... builder - INFO - --> http://nginx.org/download/nginx-1.16.0.tar.gz builder - INFO - Downloading 3d-party modules... builder - INFO - Module nginx_cookie_flag will download by branch builder - INFO - -- Done: nginx_cookie_flag builder - INFO - Downloading dependencies builder - INFO - Building .deb package builder - ERROR - Destination path '/usr/src/nginx/debian/modules' already exists stepan@temmik:~/Nginx-builder$ rm -rf /usr/src/nginx/debian/modules stepan@temmik:~/Nginx-builder$ ./main.py build -f banana-config.yaml -r 0.02 builder - INFO - Parse yaml file: banana-config.yaml builder - INFO - /usr/src/nginx dir already exist builder - INFO - Download scripts for build deb package builder - INFO - Downloading nginx src... builder - INFO - --> http://nginx.org/download/nginx-1.16.0.tar.gz builder - INFO - Downloading 3d-party modules... builder - INFO - /usr/src/nginx/modules dir already exist builder - INFO - Module nginx_cookie_flag will download by branch builder - ERROR - Cmd('git') failed due to: exit code(128) cmdline: git clone --branch=master -v https://github.com/AirisX/nginx_cookie_flag_module.git /usr/src/nginx/modules/nginx_cookie_flag stderr: 'fatal: destination path '/usr/src/nginx/modules/nginx_cookie_flag' already exists and is not an empty directory. ' Пока совсем /user/src/nginx не зачистишь, сборка не пойдет. Если не использовать номер ревизии пакета, то собранный пакет не перезапишется.

therb1 commented 5 years ago

Инструмент предполагался для автоматической сборки в динамических окружениях, можете ли вы добавить команду rm -rf /usr/src/nginx первым шагом перед сборкой? Это решило бы вашу проблему 100%. Либо вы можете использовать встроенные средства вашего ci/cd инструмента для очистки рабочей директории перед сборкой пакета. Мы не можем брать на себя ответственность за то что будем удалять что-то из директории /usr/src/nginx

Если у вас остались еще вопросы дайте немного больше информации о своей системе ci/cd и почему вариант с rm -rf для вас не подходит.

stepansantalov commented 5 years ago

Вполне подходит, кажется, я просто сильно начал губу раскатывать ). Хотя, наверное таки о возможности зафорсить эти остановки подумать можно. Спасибо.

therb1 commented 5 years ago

Если что-то делать не "на чистую" появляется очень много "depends on" поэтому свои сборки, к примеру, мы проводим в докер контейнере таким образом мы получаем вполне себе однообразный процесс без проблем. Как говориться, только что залитый и только что почищенный сервера похожи, но в большинстве случаев не идентичны.