Jenkins を使用して継続的インテグレーション ビルドを行っています。同じ構成コードの多くを持つジョブがかなりあります。私は、ビルドの前後に実行したい共通のスクリプト ファイルにこれをすべて引き出している最中です。
XcodeビルドコマンドとJenkinsビルドの両方がそれらを見ることができるように、そのスクリプト内でいくつかの環境変数を設定する方法を理解できませんでした。
これが可能かどうか誰にもわかりますか?
Jenkins を使用して継続的インテグレーション ビルドを行っています。同じ構成コードの多くを持つジョブがかなりあります。私は、ビルドの前後に実行したい共通のスクリプト ファイルにこれをすべて引き出している最中です。
XcodeビルドコマンドとJenkinsビルドの両方がそれらを見ることができるように、そのスクリプト内でいくつかの環境変数を設定する方法を理解できませんでした。
これが可能かどうか誰にもわかりますか?
あなたが求めることを正確に行うことは不可能です。プロセスは、別のプロセスの環境変数を変更できません。ビルドの前後と実際のステップは、異なるプロセスで実行されます。
ただし、共通の環境変数を設定するスクリプトを作成し、そのスクリプトをすべてのビルド間で共有できます。
最初にシェルを呼び出してスクリプト内のコマンドを実行し、次に xcodebuild を呼び出します。
# Note the dot in the beginning of the next line. It is not a typo.
. set_environment.sh
xcodebuild myawesomeapp.xcodeproj
スクリプトは次のようになります。
export VARIABLE1=value1
export VARIABLE2=value2
ジョブがスクリプトをどの程度正確に共有するかは、環境とユース ケースによって異なります。あなたはできる
Apple の Technical Q&A QA1067から、ファイルを作成/Users/YOU/.MacOSX/environment.plist
して必要な環境変数を入力すると、すべてのプロセス (ユーザーがホーム ディレクトリにある environment.plist ファイルを使用して起動) がこれらの環境変数を取得するようです。新しく起動されたプロセスが変数を取得する前に、コンピューターを再起動する (または、ログアウトして再度ログインする) 必要がある場合があります。
この記事では、Xcode がこれらの変数をビルド フェーズ スクリプトにも渡すことも主張しています。まだテストしていませんが、次回 MacBook を再起動したときに、動作するかどうかをお知らせします。
http://developer.apple.com/library/mac/#/legacy/mac/library/qa/qa1067/_index.htmlから
Q: How do I set environment for all processes launched by a specific user?
A: It is actually a fairly simple process to set environment variables for processes launched by a specific user.
ユーザーがログインするたびに loginwindow が検索する特別な環境ファイルがあります。環境ファイルは ~/.MacOSX/environment.plist です (大文字と小文字が区別されることに注意してください)。'~' は、関心のあるユーザーのホーム ディレクトリです。ターミナルを使用して (mkdir .MacOSX と入力して) .MacOSX ディレクトリを自分で作成する必要があります。環境ファイルも自分で作成する必要があります。環境ファイルは実際には XML/plist 形式です (ファイル名の末尾に .plist 拡張子を必ず追加してください。そうしないと機能しません)。