2017-11-15 7 views
0

新しいディレクトリを作成してファイルをそこにコピーしようとしています。だから私は "Execute batch command"という仕事をしています。Jenkinsからmkdirコマンドを実行するとアクセスが拒否される

まず、私は実行しようとしました:robocopy source destination /e
それから私は試しました:mkdir destination。どちらの場合も、私は「アクセスが拒否されました」というメッセージが表示されます。

自分でマニュアルを試してみると、ディレクトリを作成してファイルをコピーすることができます。
宛先はリモートコンピュータの共有フォルダ:\ computerName \ sharedFolder \

誰かがJenkinsのアクセス権を取得する方法を知っていますか?

答えて

0

ジョブを実行するユーザーを調べるには、Jenkinsで「スクラッチ」ジョブを作成します。 1つの "Execute Windows Batchコマンド"ビルドステップを実行し、バッチコマンドのテキストとして "set"を入力します。影響を受けるジョブがWindowsスレーブ上で実行されている場合は、このジョブが同じスレーブ上で実行されていることを確認してください。ジョブを実行します。コンソールには、そのジョブで認識されている環境変数のリストが表示されます。これは、デスクトップのコマンドプロンプトウィンドウに「set」と入力した場合と同じです。相違点は、コマンドウィンドウの "USERDOMAIN"と "USERNAME"に表示されているユーザー名があなた(ログインしているユーザー)になります。コンソール出力では、Jenkinsジョブが実行されているユーザーアカウントになります。

そのユーザーは実際にログイン権を持っていない可能性があります。 Jenkinsジョブが異なるWindows "セッション"で実行され、そのセッションではログインセッションで作成した共有が表示されません。

非常に安全な方法は、あなたの仕事にユーザー名(文字列パラメータ)とパスワード(パスワードパラメータ)のパラメータを追加することです。そのビルドステップの前に実行される同じビルドステップまたは「Windowsバッチコマンドの実行」ステップで、ドライブにアクセスする前に、「@net use:\ computername \ sharename %%/USER:%% /永続性:いいえ "。 (たとえば、 "@net use p:¥COMPUTER¥SHARE%PASSWORD%%USER%/ persistent:no")。 "@"はログにパスワードが表示されないようにします。 (ただし、パスワードはジョブに関連付けられ、「再構築を許可する」が有効になっている場合はJenkinsでエンコードされます。)完了したら(「ネ​​ット使用/削除」)、以前のジョブがドライブ文字を解放せずに失敗した場合に備えて、接続を試みる前にドライブ文字をクリーンアップしてください。

このシナリオでは、ジョブを実行するときに共有にアクセスできるユーザーのユーザー名とパスワードを入力する必要があります。これらの値をあらかじめ入力して隠れたパラメータをエンコードすることもできますが、ユーザのユーザ名とパスワードはジョブ定義にエンコードされ、隠されたパスワードパラメータのデフォルトはJenkinsの設定ファイルで暗号化されません。

Jenkinsサービスセッションでドライブシェアを有効にする方法は確かに安全ですが、あなたの環境によっては、今直面しているブロックを越えてしまうことがあるかもしれません。私はJenkinsの管理者ではない環境でこれらのようなトリックを使用しましたが、Jenkinsの奴隷にはアクセス権(および管理者権限)が非常に限られていました。

+0

ありがとうございます、あなたは素晴らしいです。それは動作しますが、私はパスワードを隠す方法があるのだろうか?または、私はこの仕事のためだけに新しいアカウントを作成する必要がありますか?私は何をすべきだと示唆していますか?おかげでたくさん! – Davis8988

+0

「パスワードを隠す」と言ったら、どういう意味ですか?それはどこにあるべきでないことを示していますか?コマンドの前に "@"を使用した場合、DOSはそのコマンドをエコーし​​ません。パラメータが「パスワード」パラメータの場合、そのジョブの実行の値を暗号化する必要があります。あなたはそれが他のどこかに見えますか? –

+0

環境をダンプする場合(通常は何か)、 "set | findstr -v PASSWORD"のように、 "set | findstr -v(PASSWORD_PARAMETER_NAME)"でパスワードを削除できます。 –

1

私の設定では、Jenkinsスレーブサービスは特定のユーザー(jenkins)の下で実行されます。
これにより、特定のユーザーのアクセス権を簡単に確認できます。
もちろん、ジーンズには、物理​​ディスクと共有の両方のリモートフォルダへの書き込みアクセス権が必要です。

関連する問題