Open marcoburato opened 5 years ago
This will be a great help for my project an many. Is there a chance for this to be considered in the roadmap?
Let's hope more users are requesting this feature, so we can add it to App Center.
Agree, we could really use this feature as I don't want to be uploading internal test track builds manually and we want to automatically deploy on merges into our testing branch and have the build available ASAP on a range of test devices, not hours or days as implied from Google response when queried where our build was.
"It looks like your closed test is still processing, please note this can take some time and if it takes more than 48 hours, please let us know.
Please be aware an Internal Test should process much quicker and be available in a few minutes.
I hope this helps! If you have any further questions, please let me know. I'm happy to help."
This will be especially great since you can't really group builds together within same application in AppCenter so internal test track could be used for RC builds and AppCenter distribution overall for testing by QA team. Definitely vote for this one.
It looks like publishing to a test track is included in v3 of the Google Play API: https://android-developers.googleblog.com/2019/03/changes-to-google-play-developer-api.html https://developers.google.com/android-publisher/tracks
Any update on if this will be implemented in the near future on AppCenter?
It will a great help. As it will solve the manually push the build to Qa.
Bitrise added this functionality back in March.. https://discuss.bitrise.io/t/support-internal-tests-with-google-play-deploy-step/4525/4
I hope they add the internal test track too, it's quite annoying to manually build only for the internal test track
Any updates on if/whether this feature will be added? Internal testing track is very useful!
@patniko @Oddj0b Can one of you guys give us an update on the status or potential timing of this feature request?
Ugh the alpha track is sooooo annoying! Quite a large delay waiting for builds to be available for testers. Please please please enable the internal track! I helped write a PR for Fastlane using the Play Store API. Really easy to do.
Any updates? when this feature will be supported?
@patniko @Oddj0b Come on guys, it's been 1 year and many people want this done. Not just the ones that searched and voted this ticket, this affects anyone distributing test versions using the Google Play store. Why is this ticket assigned to @Oddj0b if it's not being worked on?
What is equally frustrating is that it is probably about 15 minutes of programming work to do.
I got around it by making my own appcenter-post-build.sh
script that uploads to Google Play
Important notes:
appcenter-post-build.sh
echo "Define Environment Variables"
APPLICATION_VERSION_NAME=3.14
ANDROID_IDENTIFIER=com.yourappname
echo "Sanity check to make sure the .apk is here"
APK_DIRECTORY=$APPCENTER_SOURCE_DIRECTORY/android/app/build/outputs/apk/release/
ls $APK_DIRECTORY
echo "Installing required Python packages"
pip install httplib2 google-api-python-client oauth2client
echo "Uploading APK to Internal Track of Google Play"
python $APPCENTER_SOURCE_DIRECTORY/uploadApk.py -p $ANDROID_IDENTIFIER -a $APK_DIRECTORY/app-release.apk -s $APPCENTER_SOURCE_DIRECTORY/service_account.json -n ${APPLICATION_VERSION_NAME} -v ${APPCENTER_BUILD_ID} -t internal
echo "Completed uploading APK to Android - $ANDROID_IDENTIFIER"
Put this uploadApk.py file in your Source directory uploadApk.py
#!/usr/bin/env python
#
# Copyright 2014 Marta Rodriguez.
#
# Licensed under the Apache License, Version 2.0 (the 'License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Uploads an apk to the alpha track."""
import sys
#required on OSX to prevent the default 'six' library from interfering with the needed newer package,
#as of the 1.4.1 google-api library
sys.path.insert(1, '/Library/Python/2.7/site-packages')
import argparse
import httplib2
import json
from oauth2client.service_account import ServiceAccountCredentials
from oauth2client.client import AccessTokenRefreshError
from googleapiclient.discovery import build
def upload(package, service, apk, track, versionCode, obbFilePath, versionName):
# Create an httplib2.Http object to handle our HTTP requests and authorize it
# with the Credentials. Note that the first parameter, service_account_name,
# is the Email address created for the Service account. It must be the email
# address associated with the key that was created.
credentials = ServiceAccountCredentials.from_json_keyfile_name(
service, ['https://www.googleapis.com/auth/androidpublisher'])
http_auth = credentials.authorize(http=httplib2.Http())
service = build('androidpublisher', 'v3', http=http_auth)
try:
edit_request = service.edits().insert(body={}, packageName=package)
result = edit_request.execute()
edit_id = result['id']
apk_response = service.edits().apks().upload(
editId=edit_id,
packageName=package,
media_body=apk).execute()
obb_response = service.edits().expansionfiles().upload(
apkVersionCode=versionCode,
editId=edit_id,
expansionFileType="main",
packageName=package,
media_body=obbFilePath,
media_mime_type='application/octet-stream').execute()
print apk_response
print 'Version code %d has been successfully uploaded' % apk_response['versionCode']
track_response = service.edits().tracks().update(
editId=edit_id,
track=track,
packageName=package,
body={u'releases': [{
u'name': versionName,
u'versionCodes': [ apk_response['versionCode'] ],
u'releaseNotes': [
{u'language': u'en-US', u'text': 'Bug fixes and improvements'},
],
u'status': u'completed',
}]}).execute()
print 'Track response= "%s"' % (
track_response)
commit_request = service.edits().commit(
editId=edit_id, packageName=package).execute()
print 'Edit commit request= "%s"' % (commit_request)
except AccessTokenRefreshError, e:
print ('The credentials have been revoked or expired, please re-run the '
'application to re-authorize')
raise e
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-p', '--package', required=True, help='The package name. Example: com.android.sample')
parser.add_argument('-s', '--service', required=True, help='The service account json file.')
parser.add_argument('-a', '--apk', required=True, help='The path to the APK file to upload.')
parser.add_argument('-t', '--track', choices=['alpha', 'beta', 'production','rollout','internal'], default='alpha')
parser.add_argument('-v', '--version', required=True, help='The versionCode number (integer)')
parser.add_argument('-e', '--extension', required=True, help='The path to the OBB file to upload.')
parser.add_argument('-n', '--name', required=True, help='The versionCode name')
args = parser.parse_args()
upload(args.package, args.service, args.apk, args.track, args.version, args.extension, args.name)
if __name__ == "__main__":
main()
P.S. If you need to upload a .obb expansion file, just add argument
-e $APPCENTER_SOURCE_DIRECTORY/output/main.${APPCENTER_BUILD_ID}.${ANDROID_IDENTIFIER}.obb
I want this too now, After struggling to understand Google Play Console's open / closed beta and alpha test channels, now that I've started using the internal test I find out this, appcenter doesn't distribute there yet. 😢
On the almost anniversary of this request, I have found an imperfect work around: 1) Use AppCenter to make an alpha build 2) In the Google Play Console: a) release management b) app releases c) Internal Test Track -> Manage d) Create Release button e) Add From Library f) You'll find your alpha release in there
You can just create an internal track release from the alpha channel build. It's not a perfect solution and requires some manual work, but at least you don't have to bypass your CI system with a hand-built release.
We really could use the ability to distribute to an internal test track. Alpha and Beta are pretty useless for internal testing due to the delay.
Google Play review times are now est 7-14 days and Alpha/Beta build uploads reset the waiting times. https://techcrunch.com/2020/03/17/android-app-reviews-may-slow-to-over-a-week-due-to-covid-19-impacts-google-warns-developers
Could we please please ask again to add internal testing to the distribution channels?
Any update on this? When App Center will support internal test track?
Why is this not implemented yet? Can anyone explain it to me?
I think you'd also make the Play Console review team very happy. They get a lot of useless review requests from all the teams like us that also use the process described by @johnnylambada.
@ahdbilal We are on the point to move away from app center if this will not be resolved, our automatic deploy resets the review queue, thus no update is coming through any more.
@ahdbilal We are on the point to move away from app center if this will not be resolved, our automatic deploy resets the review queue, thus no update is coming through any more.
We reached the same conclusion that AppCenter priorities don't align with ours or anyone wanting continuous deployment to test, and we now use DevOps for the build and deployment and store then publish the artifact back to AppCenter.
The way AppCenter has handled this seemingly simple feature request undermines my confidence in AppCenter overall.
It is clear that App Center is on maintenance. They have not fixed a single issue or feature request in almost 2 years and announced they won't be doing so until mid 2021. We are going to look for other solutions. Could be Bitrise, Nevercode, CircleCI (shudder!), or GitHub Actions.
I got around it by making my own
appcenter-post-build.sh
script that uploads to Google Play
Thanks @airman00! Your post build script way works like a charm :) Just have to slightly modify the python script to remove the OBB stuff as I am not using OBB and it is not optional in the python script, it gives error that -e must be set.
@phatmann Do you have a source for the claim that no new features / bugs will be implemented until mid 2021? We're also wondering whether it's time to move elsewhere.
Edit: Apparently it's in their Roadmap 2020:
Just like any software engineering team, as we focused on building and scaling App Center, we accumulated technical debt that can no longer be sustained. Therefore, as we look to what is next, the App Center team will prioritize improving reliability and performance for the service through mid-2021. This means new feature work will be significantly reduced.
I agree that waiting this long for basic features is likely to kill the project 🙁 Did you find some other service you'd recommend?
I was using CircleCI before this so I went back to it. Not ideal, but they had improved the Mac service in the meantime so it worked out for me. And I still had all the config files 😄
maybe in 2021
Please Microsoft - at least provide us an update...
Voted
One more vote for the app center team that this is a pretty important feature.
~1 year ago ... nothing change. Good job MS!
For those wondering what AppCenter is on this, I pinged them via support and just got this response.
Hello Brad, thank you for contacting App Center support. I understand the feature gap here and I've seem this gap has been blocking a lot of our customers. However, currently App Center is under maintenance mode till mid this year and we are working on service reliability, bug fixing and performance improvement. Please see our roadmap here: https://github.com/Microsoft/appcenter#planningWith this being said, I am sorry to say that there's no short term plan for this feature at this moment. Please let me know if you have any further questions.
Thanks @airman00 for your uploadApk script. This solution seems a viable workaround for me until MS has done its homework...
I adapted these a little for my needs:
Feel free use them in your setups as well:
APPCENTER_PLAY_STORE_PUBLISH_TO_INTERNAL_TRACK
and ANDROID_PUBLISHER_CREDENTIALS
in your App Center branch configHope someone can make some use of it!
https://gist.github.com/akaegi/23c5f5cb129fda2c38b62d1dd98dedeb
Voted
+1
So?
This issue has been automatically marked as stale because it has not had any activity for 60 days. It will be closed if no further activity occurs within 15 days of this comment.
ping
Up
ping
+1
Any updates?
UP
I salute the brave warriors here keeping this thread alive, in the meantime, I picked up nodejs and became the lead BE engineer on one of my company project's, got married, had a beautiful baby girl, and lol even the pandemic started after my last comment before this one, so yeah the world has moved on, except for the progress on the issue in this thread.
I salute the brave warriors here keeping this thread alive, in the meantime, I picked up nodejs and became the lead BE engineer on one of my company project's, got married, had a beautiful baby girl, and lol even the pandemic started after my last comment before this one, so yeah the world has moved on, except for the progress on the issue in this thread.
Epic comment you win🤣😂😵
I salute the brave warriors here keeping this thread alive, in the meantime, I picked up nodejs and became the lead BE engineer on one of my company project's, got married, had a beautiful baby girl, and lol even the pandemic started after my last comment before this one, so yeah the world has moved on, except for the progress on the issue in this thread.
Lol 🤣
Taking into account all the comments here, and the needs of the current feature request, it could be awesome to get some updates/comments from the AppCenter team. Almost 3 years this feature request has been opened and looks like it's one of the most discussed.
CC: @Oddj0b
Thank you all for your input! Unfortunately, we are still working on the performance and availability of a service as stated in our rodmap and we do not introduce any new features for now. There is no ETA for this feature at the moment, I will keep this feature request open for future planning.
Describe the solution you'd like Currently it's only possible to distribute an Android app to the Alpha, Beta and Production tracks in Google Play Store. There is no choice for the recent "Internal test track". It should be possible to submit the build to this new track as well.