How to upload directly to the app / play store using fastlane's action 'appcenter_upload' - google-play

I have been trying to use appcenter_upload() in my fastfile to upload our builds to the appcenter and the play / app store. It successfully uploads to the appcenter but it doesn't successfully upload to the stores. It tells me 'Not found, invalid distribution store name, store 'App Store' was not found'.
The arguments I am using look like this:
appcenter_upload(
file: options[:BUILD_OUTPUT],
destinations: "App store",
destination_type: "store",
upload_build_only: true)
It doesn't recognize 'App store' as a name for a store. I have looked through the documentation and this one (link below) shows the 'destinations' as Alpha. I did try alpha but it tells me 'Not found, invalid distribution store name, store 'Alpha' was not found'. Example can be found above and at the link below
(Link: enter image description here)
In the 'fastlane-lugin-appcenter's readme, it says that 'Comma separated list of destination names, use '*' for all distribution groups if destination type is 'group'. Both distribution groups and stores are supported. All names are required to be of the same destination type (default: Collaborators)'
What I am trying to accomplish: upload our builds to the app center (already done, have multiple builds in there) AND have it be uploaded to both the Google Play Console and the App Store Connect.
The main question I have is: What are the values that can be used for 'destinations' when we are trying to upload to a store and not a group of testers within AppCenter? Can anyone help me with this I would REALLY appreciate it, thank you so much in advance!
Fastlane action documentation (repo): https://github.com/microsoft/fastlane-plugin-appcenter/tree/f46cb07ae3fad3cadd57e349c662f80cd769121f
I tried using the arguments suggested here: https://github.com/microsoft/fastlane-plugin-appcenter/blob/f46cb07ae3fad3cadd57e349c662f80cd769121f/lib/fastlane/plugin/appcenter/actions/appcenter_upload_action.rb#L709-L716
It successfully uploads to the app center, but it doesn't recognize the store name so it doesn't upload to the store. We already connected our team's store accounts from within the AppCenter. It is being uploaded through Jenkins so I am not directly uploading it so I don't think that I would need to login with my credentials to send the build.
I expected to have the build upload to the app center (already done) AND have the build upload to the stores as well. The documentation states that I need to simply state the 'destination_type: store' and the 'destinations' as the store's name.
What actually happened was that it uploads only to the app center and it doesn't recognize the store's name so it doesn't upload to the stores. We are trying to automate the process but we are blocked on this step specifically and there isn't too much documentation related to it. (specifically uploading to the stores AS WELL as uploading to the app center.) The readme states that it is possible but I can't get it to work. Any help would be VERY appreciated!!

Related

PWA builder: How to update existing app with Android Package Options

Am using https://www.pwabuilder.com/ to generate .apk file for uploading to Google Play Store.
Was able to successfully Create New and add PWA for first time to the Play Store, however some updates have been made and now need to update the PWA with latest updates.
For updating a existing app through PWAbuilder, need to change Options:
and for the Signing key section, then need to select the Use mine option:
How to get the Key file for the Signing key section?
and where to find the Key alias + Key password + Key store password?
Am having trouble finding answer specifically for this situation so if you can, please also share screenshots to help be more clear & specific.
Okay so I misunderstood and thought this key file and info is found through the Google Play Console, however when reading issue on https://github.com/pwa-builder/PWABuilder/issues/961 I came across the post by user xet7 and that contains 6 steps and I realized with their step 5:
You will get .zip file that has key file like signing.keystore that has random data, and signingKey-readme.txt that has your passwords.
so I went back to my original .zip received from PWAbuilder website during initial uploading to Google Play and found those two files:
In the signing-key-info.txt you will find the info needed for PWAbuilder's Android Package Options to fill in the Signing key section input fields: Key alias + Key password + Key store password
and the signing.keystore is the file we need for the Key file that needs to be included.
Also, make sure to update App version code and update other fields and can hit DONE button!

fastlane send existing build to tesflight external users

We have a lane that submits to the appstore, which handles uploading to the appstore. I'd like to take those already uploaded builds and submit them for external review.
From what I can tell, both the appstore and tesflight actions are expecting an actual ipa to be available to upload. What I'd like to do is to run a lane that will take an already processed build and submit it for external testing with tesflight.
Essentially, I'd like to periodically run a lane that checks if the latest build has been submitted for external testing, and if it hasn't I want to submit it.
There’s no action that does this automatically. However if you look at the relevant source code for pilot you can see that it uses Spaceship to connect to App Store Connect and wait for a build that matches the one just upload. Once it finds it, it submits it for external review if that option is on.
You can use similar code to achieve this, either in your Fastfile or in a new fastlane plug-in.

How can fabrics upload data only when they have the user's consent?

We use fabrics and crashlytics on the macOS platform. Swift development language is used.
We added Fabric.with([Crashlytics.self]) to the applicationDidFinishLaunching, but we found that it would upload the user's data by default.
We want to say that we give users a tick option to upload the log data we need when the user agrees, instead of always uploading it by default. Of course, when the user removes the tick option, it stops uploading relevant information.
In other words, how do we start and stop uploading the log information collected by app manually?
You are manually initializing crashlytics with Fabric.with([Crashlytics.self]) in AppDelegate.swift
You can actually have a check in place before the initialization, to it initializes only if the user checks the tick option.
#if user.tick
Fabric.with([Crashlytics.self])
#endif

Access parse current user from Apple Watch

I am making an application for the Apple Watch.
I successfully linked my watch extension to parse. However, I can't access parse data stored on the phone.(In my case PFUser.currentuser() )
What would be the best way to get my current user?
Parse SDK 1.7.2 is out right now and I feel this is exactly what you are looking for.
It brings full support for sharing data with App Extensions and Apple Watch Apps.
Read more in this blog post http://blog.parse.com/announcements/introducing-local-data-sharing-for-apple-watch-and-app-extensions/
Or in the docs on how to set it up: https://parse.com/docs/ios_guide#extensions/iOS

Download build drop from hosted Team Foundation Service

Using the hosted Team Foundation Service at tfs.visualstudio.com, one has the option in a Build Definition to "Copy build output to the server" which creates a zip of the drop folder that can be downloaded over https via team web access. I really need to download this drop automatically, so I can chain input to the next stage in my build pipeline.
Unfortunately, the drop URL is not obvious, but can be created using the TfsDropDownloader.
TL;DR - I can't get the TfsDropDownloader to work, I'm hoping someone else has used this tool or a similar method to succesfully download a drop from https://tfs.visualstudio.com
Using the command line TfsDropDownloader.exe I can do this:
TfsDropDownloader.exe /c:"https://MYPROJECTNAME.visualstudio.com/DefaultCollection" /t:"ProjectName" /b:"BuildDefinitionName" /u:username /p:password
...and get an empty zip file with the correct build label name of the last successful build e.g. BuildDefinitionName_20130611.1.zip
Running the source code in the debugger, this is because the URL that is generated for downloading:
https://tflonline.visualstudio.com/DefaultCollection/_apis/resources/containers/804/drop/BuildDefinitionName_20130611.1.zip
..returns a content type of application/json, which is unsupported. This exception is swallowed by the application, but not before the empty zip file is created.
Is it possible the REST API on Team Foundation Service has changed in some way so the generated URL is no longer correct?
Note that I am using the "alternate credentials" defined on my Team Foundation Service account (i.e. not my live ID) - using anything else gets me TF30063: not authorized.
I got it working by using alternate credentials, but I also had to access the REST API via a different path.
The current TfsDropDownloader builds a URL that looks like this:
https://project.visualstudio.com/DefaultCollection/_apis/resources/containers/804/drop/BuildDefinitionName_20130611.1.zip
This returns empty JSON whenever I try to use it. I'm definitely authenticated, because if I tweak the URL to:
https://project.visualstudio.com/DefaultCollection/_apis/resources/containers/804/drop
I get a nice JSON listing of every single file in the drop, but no zip.
From spying on the SSL traffic to https://tfs.visualstudio.com with Fiddler I saw that clicking the "Download drop as zip" link I can see that there is another endpoint at:
https://project.visualstudio.com/DefaultCollection/ProjectName/_api/_build/ItemContent?buildUri=vstfs%3a%2f%2f%2fBuild%2fBuild%2f639&path=%2Fdrop
...which does give you a zip. The "vstfs%3a%2f%2f%2fBuild%2fBuild%2f639" portion is the URL encoded BuildUri.
So I've changed my version of GetServerPath in the TfsDropDownloader source to do this:
private static string GetServerPath(TfsConnection collection, IBuildDetail buildDetail)
{
var downloadPath = string.Format("{0}{1}/_api/_build/ItemContent?buildUri={2}&path=%2Fdrop",
collection.Uri,
HttpUtility.UrlPathEncode(buildDetail.TeamProject),
HttpUtility.UrlEncode(buildDetail.Uri.ToString()));
return downloadPath;
}
This works for me for the time being. Hopefully this helps someone else with the same problem!

Resources