Jenkins「'python' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」


問題その1

Windows10でcron代わりのJenkinsにpythonスクリプトを実行させたらエラー発生!!
python --versionすらエラーになる始末です。

C:\Program Files (x86)\Jenkins\workspace\myjob>python --version  
'python' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

問題その2

これは単純にパスが通ってなかっただけだったのでJenkinsの環境変数にpythonのパスを追加したら解決しました。

ところが次の問題が発生しました。

conda activateした後でbatが終了してしまい、肝心のpythonスクリプトが実行されていないのです。

C:\Program Files (x86)\Jenkins\workspace\auto_twitter>C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3 
Finished: SUCCESS

原因と解決策

conda activateでconda.batを直接呼び出しているため、終了したら元のJenkinsのbat本体も終了していることが原因だったのです。

そこで、conda activate をCALL呼び出しすることで解決しました。

修正前

conda activate

修正後

CALL conda activate

実行結果

conda activate 後のpythonコマンドが動きました。

C:\Program Files (x86)\Jenkins\workspace\auto_twitter>CALL conda activate 

(base) C:\Program Files (x86)\Jenkins\workspace\auto_twitter>python --version  
Python 3.6.8 :: Anaconda, Inc.

おわりに

Jenkinsからpythonを呼ぶだけで まさかパス問題に出くわすとは驚きました。
開発環境で時間を取られると やる気とか いろいろ消耗しますね。。。

環境

Windows10
Jenkins 2.176.2
Anaconda(conda) 4.7.10
Python 3.6.8 :: Anaconda, Inc.

ウチの子供にこんな迷路でひらがなを教えていて、結構よい感じでした。

こちらのサイトで古いですが公開しているので良かったら見てね。

おまけ