Как стать автором
Обновить

Комментарии 16

Решение конечно интересное,даже красивое.

Но вот вопрос, а нельзя это было решить силами самого bamboo? И запускать скрипт соответствующий ОС агента? Спрашиваю потому что с bamboo дел не имел.

В Bamboo планы состоят из Stages внутри которых содержатся Job'ы (различных видов), которые и выполняют работу.

Для запуска Python скриптов, создается Script Job. В документации сказано: "Script task is flexible enough to allow the possibility to use: the default shells on Linux (/bin/sh) or Windows (cmd.exe)"

Поскольку перед запуском Python необходимо настроить виртуальное окружение для корректной работы, то требуется выполнить activate.bat в Windows и activate в Linux. Плюс требуется передать скрипту параметры Bamboo, который в Windows ограничивается символами %% а в Linux начинается с $. Абсолютно разный синтаксис.

Так что мне не удалось решить это силами самого Bamboo.

А почему бы не добавить две разные задачи, ограничив их запуск через механизм условий (condition)?

Да, возможно Вы правы, но ..
Механизм условий для задач (Task в терминах Bamboo) работает только с переменными.
Т.е. на уровне агента нужно создать переменную типа bamboo_is_win и bamboo_is_linux. А я не имею доступа к администрированию сервера Bamboo и его агентов.

А powershell не смотрели? Он ведь кросс-платформенный.

Изначально разработка велась на PowerShell - но руководству он пришелся не по душе и было принято решение все переписать на Python.
Я проработал механизм Модулей (библиотек в PowerShell) что позволяло повторно использовать код и ускорить разработку. Но, к сожалению, эта работа не оказалось необходимой в компании.

э...

т.е. из-за самодурства начальства рабочий кросс-платформ заменили на адовые костыли с увеличенной вдвлое вероятностью ошибки?...

БЕГN!!!

НЛО прилетело и опубликовало эту надпись здесь

Эй! не воруйте мои идеи! Это я уже неоднократно указывал и тут где-то тоже.

Код датирован ноябрём 2015 года.

Вот кусочек:

#!/bin/bash
echo ^
echo '
GOTO WIN
'
echo ^
echo `
echo<<comment
<# --------------------------------------------------------------- .cmd ----
comment`

# весь текст далее, начинающийся с решётки, интерпретируется bash и powershell
# как комментарий. В местах, где выполняется код под win cmd (bat), решётки не 
# будут восприниматься как комментарии! Это строки 1-10 и далее с метки WIN и
# до начала кода для powershell.

Файл сохранял как .bat, в линуксе надо дополнительно флаг исполняемого поставить. В итоге там три языка - cmd, bash, powershell. Скрипт сам себя передаёт в powershell в качестве кода powershell в виндах. И просто исполняется в bash под линуксом.

P.S. когда-то хотел статью такую написать, типа "ненормальное программирование". На ресурсе Intel IT Galaxy (закрыт с 2016г) выкладывал, тут что-то так руки и не дошли. А оказывается, я не один такой извращенец :)

зачетненько :))))


Ради таких комментов все еще стоит читать хабр :)

Так я и не говорил, что придумал. Решение взято с stackoverflow. Обидно другое, что решение не заинтересовало читателей habr'a. Технические статьи здесь больше не интересны. В 15 году это бы зашло :(

Тогда и к статьям как-то более требовательно относились. А я не писатель, тяжело даётся. Просто код с комментариями выложить правила запрещают.

Я тоже не писатель. Вторая статья с 14 года. А единый скрипт bash/cmd/ps это красивое решение.

На идеях, изложенных в статье, пишутся скрипты-полиглоты (другие названия: скрипты-гибриды, скрипты-химеры). А еще скрипты - генераторы таких скриптов

https://github.com/ildar-shaimordanov/cmd.scripts/blob/master/cmdize.bat

Вариант с ant и запуском python оттуда еще есть. Но да, в ant будут тоже две условных таски для win и linux

Зарегистрируйтесь на Хабре, чтобы оставить комментарий