Comments 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)?
А powershell не смотрели? Он ведь кросс-платформенный.
Изначально разработка велась на PowerShell - но руководству он пришелся не по душе и было принято решение все переписать на Python.
Я проработал механизм Модулей (библиотек в PowerShell) что позволяло повторно использовать код и ускорить разработку. Но, к сожалению, эта работа не оказалось необходимой в компании.
Эй! не воруйте мои идеи! Это я уже неоднократно указывал и тут где-то тоже.
Код датирован ноябрём 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 это красивое решение.
echo off
goto(){
# Linux code here
uname -o
}
goto $@
exit
:(){
rem Windows script here
echo %OS%
exit
На идеях, изложенных в статье, пишутся скрипты-полиглоты (другие названия: скрипты-гибриды, скрипты-химеры). А еще скрипты - генераторы таких скриптов
https://github.com/ildar-shaimordanov/cmd.scripts/blob/master/cmdize.bat
Вариант с ant и запуском python оттуда еще есть. Но да, в ant будут тоже две условных таски для win и linux
Как скрестить Коня и Трепетную лань