Tôi đang cố gắng thực thi tập lệnh Python trên máy chủ Windows 2016. Tôi đã cài đặt Win32-OpenSSH trên máy chủ Windows. Kịch bản python dự kiến sẽ có hai biến môi trường ( BITBUCKET_REPO_SLUG
và BITBUCKET_BRANCH
). Chúng đã được đặt mặc định trong đường ống Bitbucket. Tập lệnh python được sao chép vào máy chủ từ xa và sau đó sử dụng SSH, tôi gọi nó từ đường ống Bitbucket.
Khi tôi đang thử lệnh sau trong đường ống Bitbucket của mình ...
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
... Tôi đã nhận được lỗi sau:
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'
Dường như với tôi rằng các biến môi trường Bitbucket không được chuyển sang tập lệnh python (có lẽ vì tôi không chạy nó từ chính đường ống mà vì tôi đã gọi nó trên máy chủ từ xa). Vì vậy, giữ mọi thứ khác, tôi chỉ thay đổi ssh
lệnh như sau:
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
Với thay đổi ở trên, đường ống hiển thị bản dựng thành công và trạng thái trả về ( $?
) luôn in 0. Ngoài ra, cat ./cmd_output
không in gì cả. Như bạn có thể mong đợi, trên máy chủ Windows, tập lệnh python không thực sự chạy.
Nội dung của C:/Users/john.doe/deploy.py
:
import os
...
print(os.environ['BITBUCKET_REPO_SLUG'])
print(os.environ['BITBUCKET_BRANCH'])
...
...
Tôi không chắc chính xác những gì tôi đang làm sai. Bất kỳ trợ giúp sẽ thực sự được đánh giá cao.
echo
trả về 0 và tệp đầu ra trống. :(