Я намагаюся виконати скрипт Python на сервері Windows 2016. У мене є Win32-OpenSSH встановлений на сервері Windows. Сценарій python очікує два змінні середовища ( BITBUCKET_REPO_SLUG
і BITBUCKET_BRANCH
) бути присутнім. Вони вже встановлені за замовчуванням у конвеєрі Bitbucket. Скрипт python копіюється на віддалений сервер, а потім використовує SSH, я викликаю його з конвеєра Bitbucket.
Коли я спробував наступну команду в моєму конвеєрі Bitbucket ...
scp <copy_python_script_to_win_server> # Works fine
echo $BITBUCKET_REPO_SLUG # Prints the repo name
echo $BITBUCKET_BRANCH # Prints the branch name
ssh john.doe@xx.yyy.zzz.xyz 'C:/Python/bin/python.exe C:/Users/john.doe/deploy.py' >> ./cmd_output
echo $?
cat ./cmd_output
... Я отримую таку помилку:
Traceback (most recent call last):
File "C:/Users/john.doe/deploy.py", line 16, in <module>
print(os.environ['BITBUCKET_REPO_SLUG'])
File "C:\Python\lib\os.py", line 669, in __getitem__
raise KeyError(key) from None
KeyError: 'BITBUCKET_REPO_SLUG'
Мені здалося, що змінні середовища Bitbucket не передаються сценарію python (швидше за все, тому, що я не працював з конвеєра, а тому, що я його викликав на віддаленому сервері). Таким чином, зберігаючи все інше, як це, я тільки змінив ssh
команду:
ssh john.doe@xx.yyy.zzz.xyz 'set BITBUCKET_REPO_SLUG=$BITBUCKET_REPO_SLUG; set BITBUCKET_BRANCH=$BITBUCKET_BRANCH; C:/Python/bin/python.exe C:/Users/john.doe/deploy.py' >> ./cmd_output
Зі вказаними вище змінами конвеєр показує успішне збирання та статус повернення ( $?
) завжди друкує 0. Також, cat ./cmd_output
нічого не друкує. Як можна очікувати, на сервері Windows скрипт python не працює.
Зміст C:/Users/john.doe/deploy.py
:
import os
...
print(os.environ['BITBUCKET_REPO_SLUG'])
print(os.environ['BITBUCKET_BRANCH'])
...
...
Я не впевнений, що я роблю неправильно. Будь-яка допомога дійсно буде оцінена.
echo
повернув 0 і вихідний файл був порожнім. :(