fastlane: Deliver error for App containing an App Clip

New Issue Checklist

Issue Description

Ran deliver this morning and got the following error:

The request cannot be fulfilled because of the state of another resource. - Submit for review errors found. The provided entity is missing a required relationship - You must provide a value for the relationship 'appClipVersion' with this request

It looks like the upload fails due to the app having an App Clip target. Is there a way to define the meta data needed for App Clips (screenshot, title, App Clip experiences, domains, …)?

Command executed
deliver(
  reset_ratings: false,
  submit_for_review: true,
  automatic_release: false,
  phased_release: true,
  force: true, # Skip HTML report verification
  skip_screenshots: false,
  overwrite_screenshots: true,
  ignore_language_directory_validation: true,
  app_version: version_number,
  build_number: build_number,
  skip_binary_upload: true,
  skip_metadata: false,
  metadata_path: "./fastlane/metadata",
  submission_information: {
    add_id_info_uses_idfa: false
  }
)

Environment

I’ve redacted the fastfile and appfile as I don’t think it’s relevant for this issue.

🚫 fastlane environment 🚫

Stack

Key Value
OS 11.0.1
Ruby 2.6.3
Bundler? false
Git git version 2.24.3 (Apple Git-128)
Installation Source /usr/local/bin/fastlane
Host macOS 11.0.1 (20B29)
Ruby Lib Dir /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib
OpenSSL Version LibreSSL 2.8.3
Is contained false
Is homebrew false
Is installed via Fabric.app false
Xcode Path /Applications/Xcode.app/Contents/Developer/
Xcode Version 12.2

System Locale

Error
No Locale with UTF8 found 🚫

fastlane files:

fastlane gems

Gem Version Update-Status
fastlane 2.164.0 🚫 Update available

Loaded fastlane plugins:

Plugin Version Update-Status
fastlane-plugin-badge 1.4.0 ✅ Up-To-Date
fastlane-plugin-bugsnag 1.4.2 🚫 Update available
Loaded gems
Gem Version
did_you_mean 1.3.0
slack-notifier 2.3.2
rouge 2.0.7
xcpretty 0.3.0
terminal-notifier 2.0.0
terminal-table 1.8.0
plist 3.5.0
addressable 2.7.0
multipart-post 2.0.0
word_wrap 1.0.0
colored 1.2
highline 1.7.10
commander-fastlane 4.4.6
faraday_middleware 1.0.0
gh_inspector 1.1.3
rubyzip 2.3.0
security 0.1.3
xcpretty-travis-formatter 1.0.0
uber 0.1.0
declarative-option 0.1.0
representable 3.0.4
retriable 3.1.2
mini_mime 1.0.2
httpclient 2.8.3
google-api-client 0.38.0
nanaimo 0.3.0
colored2 3.1.2
claide 1.0.3
CFPropertyList 3.0.2
atomos 0.1.3
xcodeproj 1.19.0
unicode-display_width 1.7.0
public_suffix 4.0.6
tty-screen 0.8.1
tty-cursor 0.7.1
tty-spinner 0.9.3
babosa 1.0.4
excon 0.78.0
unf_ext 0.0.7.7
unf 0.1.4
domain_name 0.5.20190701
http-cookie 1.0.3
ruby2_keywords 0.0.2
faraday 1.1.0
faraday-cookie_jar 0.0.7
fastimage 2.2.0
json 2.3.1
mini_magick 4.10.1
dotenv 2.7.6
bundler 1.17.3
naturally 2.2.0
simctl 1.6.8
jwt 2.2.2
declarative 0.0.20
multi_json 1.15.0
signet 0.14.0
os 1.1.1
memoist 0.16.2
googleauth 0.14.0
rake 13.0.1
digest-crc 0.6.1
google-cloud-errors 1.0.1
google-cloud-env 1.4.0
google-cloud-core 1.5.0
google-cloud-storage 1.29.1
emoji_regex 3.0.0
aws-eventstream 1.1.0
aws-sigv4 1.2.2
aws-partitions 1.384.0
jmespath 1.4.0
aws-sdk-core 3.109.1
aws-sdk-kms 1.39.0
aws-sdk-s3 1.83.1
forwardable 1.2.0
logger 1.3.0
stringio 0.0.2
ipaddr 1.2.2
openssl 2.1.2
ostruct 0.1.0
strscan 1.0.0
date 2.0.0
fileutils 1.1.0
etc 1.0.1
io-console 0.4.7
zlib 1.0.0
libxml-ruby 3.1.0
rexml 3.1.9
psych 3.1.0
mutex_m 0.1.0
webrick 1.4.2
curb 0.9.10
badge 0.12.0
fastlane-plugin-badge 1.4.0
xml-simple 1.1.5
fastlane-plugin-bugsnag 1.4.2

generated on: 2020-11-20

About this issue

  • Original URL
  • State: open
  • Created 4 years ago
  • Reactions: 3
  • Comments: 43 (24 by maintainers)

Most upvoted comments

I have a wip branch on my fork here. My goal is to add app clips default experience functionality. This not only fixes this error, but allows specifying app clip metadata (similar to how uploading normal app metadata works today).

It contains enough functionality for app clips to allow the following:

  • specify default experience action (PLAY, VIEW, …)
  • specify localized subtitle
  • specify localized default experience header image

I will create a PR and comment here once it passes integration with my own projects.

If anyone wants to use it before I finish the implementation, point your Gemfile towards my repo https://github.com/qatonda/fastlane (matt/app-clips branch) and reference the following example code:

EDIT: Use the instructions in the PR #20300 to use/test until it’s merged.

deliver(
  ...
  app_clip_default_experience_action: "PLAY",
  app_clip_default_experience_subtitle: {
    "en-US": "this is a test from fastlane",
    "es-MX": "está es una prueba de fastlane"
  },
  app_clip_header_images_path: './fastlane/app-clip-header-images'
)

and for the header images:

$ tree app-clip-header-images/
app-clip-header-images
├── en-US
│   └── random-header-image.jpg
└── es-MX
    └── another-header-image.jpg

2 directories, 2 files

@gsavit I’ll consider adding a deliver option like use_previous_version_app_clip_metadata that uses the previous version’s app clip metadata (or uses the templating option) and copies to it to the new version. Does that seem more useful than being able to specify metadata via fastlane?

I’ve created a PR to add App Clips support to spaceship. https://github.com/fastlane/fastlane/pull/19043

You’re right to flag the distinction between the cases. The screenshots overwrite flag is necessary because otherwise it’s an additive operation, right (new screenshots uploaded will just join the preexisting ones)? Whereas App Clip metadata will always be overwritten/replaced by any new data passed. So the fix needed for App Clips is just correct handling of the default case, when no App Clip metadata is explicitly passed.

Yep, I agree! I’ll include with my implementation the default case where there is an app clip, but no app clip metadata specified with deliver.

There seems to be a new error now.

Instead of getting an error with appClipVersion it’s now You must provide a value for the relationship 'appClipDefaultExperience' with this request

@blesson3 I’ve added your changes to our release script, which will run in about ~16h. Will report back if everything worked out.

I’m going to add this on my list this/next week to figure out! I have never made an app clip before so I will have to get a project created with that inside of it first 😇

Just a quick heads up: I’ve been unable to test these changes further, because ASC had trouble the last couple times processing the screenshots, therefore the deliver job would always fail. I’ll report back as soon as that works for us again.

@blesson3 I’ve added your changes to our release script, which will run in about ~16h. Will report back if everything worked out.

@EmDee If you’ve not already done so, use the matt/app-clips-default-experience branch and if you’re already using it run bundle update fastlane to get the latest changes for the branch. I realized that if I force push to a branch, the bundle install with a Gemfile with an old ref pegged will fail the CI with the following error:

Revision 2fac95213b9eabcc395ba66be8c419f987d2c87d does not exist in the repository https://github.com/qatonda/fastlane.git. Maybe you misspelled it?

Pretty sure your setup from earlier will fail with the same error unless updated. I likely won’t force push again today, so it should be safe-ish for your release tonight.

I’ve created a WIP PR https://github.com/fastlane/fastlane/pull/20300 for automating app clips default experience metadata. Please test using this PR instead of matt/app-clips on my forked repo. Direct any issues with those changes to the PR.

I’m in the process of implementing additional app clips related functionality on matt/app-clips, which I’ll use as the nightly-version of my changes.

@fastlane-bot not fixed.

@EmDee There is not at the moment but I will see what we can do for adding that 😊

Awesome! Thanks for all your amazing work here!

@EmDee There is not at the moment but I will see what we can do for adding that 😊