4

シェル スクリプトを実行する Jenkins ジョブがあります。ビルドコマンドフィールドにスクリプトを直接配置すると、完全に機能します。しかし、スクリプトを .sh ファイルに入れてから、Build コマンド フィールドからそれを呼び出すと、次のようになります。

sh $sh_dir/deploy.sh $repo_dir $name $ref $env $site_dir

$sh_dirは環境変数で、残りはジョブ パラメータです。機能しません。単純な最初のコマンドで失敗します

cd $1/$2

繰り返しますが、これはコマンド フィールドに直接入力すると完全に機能しますが、.sh ファイルに入力すると機能しません。.sh ファイル ジョブからの出力は次のとおりです。

Started by user anonymous
Building in workspace /var/lib/jenkins/workspace/deploy
[deploy] $ /bin/sh -xe /tmp/hudson6229756058999358596.sh

+ /var/lib/jenkins/scripts/deploy.sh /home/repos magento master live /home/sites
cd: 1: can't cd to /home/repos/magento

はい、ディレクトリは存在し、はい、所有していjenkinsます。

私はこれを理解しようとして気が狂ってしまいます。

編集: deploy.sh の結果-x:

Started by user anonymous
Building in workspace /var/lib/jenkins/workspace/deploy
[deploy] $ /bin/sh -xe /tmp/hudson3304816709711757032.sh
+ sh -x /var/lib/jenkins/scripts/deploy.sh /home/repos magento develop staging /home/sites
+ cd /home/repos/magento
cd: 1: can't cd to /home/repos/magento
4

3 に答える 3

2

コメントでの議論はチャットに持ち込まれました。

この問題は最終的に、混乱を引き起こしている Windows 行末 (CRLF) であることが判明しました。たとえば/home/repos/magento\r、末尾に CR があるディレクトリは実際には存在しません。Windows CIF 共有フォルダーが潜んでいます。この解決策には、スクリプトをネイティブ Unix (LF のみ) の行末に変換する方法を検討することが含まれます。

于 2012-11-21T16:38:41.200 に答える
0

上記の Matt と同じ問題が発生していましたが、Jenkins (匿名ユーザー) には、ディレクトリ (cd) を変更しようとしていたフォルダーに変更する権限がありませんでした。/Users/Shared.. フォルダーに切り替えると、すべて正常に機能しました。

于 2015-09-23T19:43:37.270 に答える