最近、Homebrewを使用してJenkinsをインストールしました。 MercurialもHomebrewを使用してインストールしました。
ターミナルからhg repoをうまくクローンできます。しかし、私がジェンキンスでの仕事の一環として同じことをしようとすると、失敗します。
だから、仕事で、私はジェンキンスにシェルスクリプトを実行するように言いましたecho $PATH
。案の定、パス/usr/local/bin
そこにいない。ターミナルから同じコマンドを実行すると、そこにあります。
つまり、ターミナルからエコーするときに、Jenkinsが使用しているのと同じPATHをプルするようにPATHを変更する最良の方法は何ですか?
Jenkinsは、これらのテストを実行するためにログインしているのと同じユーザーアカウントから実行しているため、これが発生している理由を理解することはできません。
Jenkinsのlaunchd .plistファイルでは、次を使用してPATH環境変数を設定できます。
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>(insert your path value here)</string>
</dict>
これにより、PATHが必要なものに設定されます。
何らかの理由で、Jenkinsはスレーブに接続するときに/ usr/local/binをPATHに保持しません。
次のいずれかの方法でPATHに追加できます
ユーザーフォルダーに.bashrcファイルを追加する
PATH="/usr/local/bin:${PATH}"
Launchd.confファイルでPATHを設定できます。詳細は here を参照してください。ご了承ください man launchctl
は、「コマンドを$ HOME/.launchd.confまたは/etc/launchd.confに保存して、launchdの起動時に読み取ることができる」と言っているため、ホームディレクトリに「.launchd.conf」を作成して、このファイルのリンクからの指示を使用してください。しかし、launchd.confファイルで私が知っている限り、PATHにディレクトリを追加することはできません。PATHを書き換えることができます。
/etc/paths.dディレクトリを使用したソリューションの here も確認できます
ノードのPATH環境変数を設定しただけでも、Hombrew Mercurialインストールでは機能しないことがわかりました。パスは設定されますが、VCSチェックアウトフェーズではなく、スクリプトビルドフェーズでのみ使用されます。これが私がやったことです。
Manage Jenkins -> Configure System
に移動しますInstallation Directory
については、/usr/local
Executable
パラメータはINSTALLATION/bin/hg
に事前設定されているため、そのままにしておきます。Source Code Management
の下で、追加したMercurialインストールにMercurial Version
を設定します。これで、同じ問題が発生している他の人を助けることができれば幸いです。これで、(デフォルトで)/usr/bin
の内部で何かを実行することは許可されなくなりました。以前はそこにシンボリックリンクを張っていましたが、今は新しい「システム整合性保護」「機能」を使用しているため、それほど簡単ではなく、Macスレーブがヘッドレスの場合はさらに難しくなります。
次のPATH変更では、=の両側にスペースを入れないでください:PATH = "/ usr/local/bin:$ PATH"
MacOSにインストールされているJenkinsの事前構築ステップに追加しました。