題名通り危ない。
もしかしたらFastlaneのドキュメントに書いてあるのかもしれない。
またどこ(Fastlane(deliver?) or Apple?)の不具合なのか本記事では追跡はしていない。
何が危ないのか
iTunesConnect上で、配信準備完了となっているバージョン/ビルドが、実際に公開されているものと異なることが発生する。
何故異なる事に気がついたのか
実装/リリースした機能が動作しなかったことで発覚。
また、サーバー側でアプリからのリクエストのヘッダーをロギングしているのだが、
そのログにアプリ側からおくったヘッダー情報内に含めているバージョンやビルドが異なっていることが分かった。
最終的に申請中にFastlaneで申請しているアプリを変更したもの のみ この症状が出ていることまで特定でき、原因判明となった。
どの様な環境/状況で、どのようなFastlaneのlaneを実行したのか
環境
macOS Sierra 10.12.1
➜ ~ ruby --version
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin16]
➜ ~ fastlane --version
fastlane 1.111.0
➜ ~ gym --version
gym 1.12.1
➜ ~ deliver --version
deliver 1.16.1
※12月10日の時点でのバージョンとなる。のでバージョンが若干異なる可能性あり。
ビルド用のlane
アプリをBuild(gym
)してiTunesConnectにUpload(deliver
)するだけ。
lane :build do
gym(scheme: "jp.foo.baaa.bbb", use_legacy_build_api:true)
deliver(force: true,
skip_screenshots:true,
submit_for_review:false,
skip_metadata:true,
app_identifier:scheme_name)
end
TestFlightとSubmit用のlane
Apple側での処理が完了したらこれを実行する。
申請とTestFlightをやってくれる。
lane :submit_test do
Spaceship::Tunes.login('account', 'pw')
Spaceship::Tunes.select_team
begin
app = Spaceship::Tunes::Application.find("jp.fooo.baaaa.aaaa")
v = app.edit_version
v.release_notes["ja"] = "Thank you guys"
v.release_on_approval = 'true'
builds = v.candidate_builds
v.select_build(builds.first)
v.save!
# Testflight
begin
train = app.build_trains["77.1.0"]
# Access all builds for a given train
train.builds.count
build = train.builds.last
# Enable beta testing for a build train
# This will put the latest build into beta testing mode
# and turning off beta testing for all other build trains
train.update_testing_status!(true, 'internal', build)
slack(message: "`#{my_address}` Testflight: #{"jp.fooo.baaaa.aaaa"} ", success: true)
rescue => ex
slack(message: "(2) `#{my_address}` #{"jp.fooo.baaaa.aaaa"} #{ex}", success: false)
end
# Submit
begin
submission = app.create_submission
submission.export_compliance_uses_encryption = false
submission.add_id_info_uses_idfa = false
submission.content_rights_contains_third_party_content = false
submission.content_rights_has_rights = false
# Finalize app submission
submission.complete!
slack(message: "`#{my_address}`: Submit: #{"jp.fooo.baaaa.aaaa"} ", success: true)
rescue => ex
UI.error("(3) Something went wrong: #{ex}")
slack(message: "(3) `#{my_address}` #{"jp.fooo.baaaa.aaaa"} #{ex}", success: false)
end
rescue => ex
UI.error("(1) Something went wrong: #{ex}")
slack(message: "(1) `#{my_address}` #{"jp.fooo.baaaa.aaaa"} #{ex}", success: false)
end
end
end
状況
- 2016年11月24日〜25日に申請
- 2016年12月2日に再度Upload
- 2016年12月6日に発覚
最新版では大丈夫なのか?
不明.
ただし、Rejectすることができるようになった。
https://github.com/fastlane/fastlane/commit/3263ea1e0bdc5fc17de500a5efb8ec26345ac3af
spaceship 1.111.0~
最後に
発覚したとき冷や汗かいた。
きちんとRejectさせてからUploadしてやったほうが安全ということを学習した。