私のiOSアプリケーションにfastlaneを使用しています。この場合、私は複数のターゲットを持つxcodeプロジェクトを持っています。そのため、私はファストレーンでいくつかの異なる変数を使いたいと思っています。ただし、変数は初期化されていません。Fastlaneが環境変数を初期化していません--env
ターゲットごとにカスタム.envファイルを設定しました。例えば、ターゲット2の.envファイル:
ENV_TARGET_NAME=MyAppName
ENV_TARGET_NAME_SHORT=MyAppNameShort
は.envファイルが.env.Target1と呼ばれ、fastlaneフォルダに設定されています。私はすでに、プロジェクトのルートフォルダにファイルを置いて、これが動作しているかどうかを確認しようとしました。
私fastlaneファイルは、次のようになります。 - [:TARGET_NAME] は、ターゲット名を取得している
fastlane_version "1.109.0"
before_all do
ensure_git_status_clean
skip_docs
end
lane :QA_all do
sh "fastlane QA --env Target1"
sh "fastlane QA --env Target2"
sh "fastlane QA --env Target3"
end
lane :accept_all do
sh "fastlane QA --env Target1"
sh "fastlane QA --env Target2"
sh "fastlane QA --env Target3"
end
lane :live_all do
sh "fastlane QA --env Target1"
sh "fastlane QA --env Target2"
sh "fastlane QA --env Target3"
end
desc "Builing version with TEST environment"
lane :QA do |options|
target_name = ENV['ENV_TARGET_NAME']
/* Rest of the file */
オプションを使用して
を更新します。しかし私は正しいフォルダにipaに移動するためにこれを.shファイルに送ります。
「MyAppName」のようにtarget_nameをハードコードに設定すると、変数が.shファイル内に表示されます。しかし、オプション[:target_name]から変数を設定すると、変数は空になります。なぜこれが起こっているのか誰かのアイデア?
あなたの目標は本当に分かりませんが、希望するオプションを使って ':QA'レーンを呼び出すだけでいいと思います。例えば、 'レーン: QA {TARGET_NAME:ターゲット2}: QA {ターゲット2 TARGET_NAMEを}行うQA_all QA {TARGET_NAME:Target3} 端レーン:QAを行う|オプション| puts "#{options [:target_name}"で何でもしてください " end' –
私の目標は、アプリケーションからのターゲット名を使用して、この値に応じて.ipaをフォルダに書き込むことです。したがって、各ターゲットは.ipaファイルをターゲットとして指定されたフォルダに配置します。私のコードは、target_nameをハードコードに設定しても、環境ファイルから値を取得していないときに機能します。 私が理解しているように、 '#{options [:target_name}'のようなものを使用してターゲット名を取得することは可能でしょうか? 私はそれをもう一度試してみましょう – Maurice
ところで、これを行う方法を誤って入力したので、コード内のオプションを取得するには 'options [:target_name]'だけが必要です。 '#{options [:target_name]}'は、Rubyの文字列でそれを取得します。 –