From 597aa186f2a4d32a75ad8735652a92e5162cefae Mon Sep 17 00:00:00 2001 From: Anatoly Bolshakov Date: Thu, 26 Nov 2020 13:25:38 +0300 Subject: [PATCH] Added docs for bundle task to readme (#211) * Added docs for bundle task to readme * Added notes about using secure files for keeping json auth file * Fixed links format --- baseREADME.md | 58 +++++++++++++++++++++++++++-- images/bundle-advanced-options.png | Bin 0 -> 4553 bytes images/bundle-app-id.png | Bin 0 -> 10713 bytes images/bundle-release-notes.png | Bin 0 -> 10080 bytes 4 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 images/bundle-advanced-options.png create mode 100644 images/bundle-app-id.png create mode 100644 images/bundle-release-notes.png diff --git a/baseREADME.md b/baseREADME.md index 99b79131..2804c3c0 100644 --- a/baseREADME.md +++ b/baseREADME.md @@ -96,7 +96,7 @@ Allows you to release an update to your app on Google Play, and includes the fol ![Service Endpoint](images/auth-with-endpoint.png) Note that in order to use the JSON Auth File method, the JSON file you get from the developer console needs to be checked into your source repo. - + Please also note that from the point of security it's preferrable to store it as [Secure file](https://docs.microsoft.com/azure/devops/pipelines/library/secure-files) and download using [Download Secure File task](https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/download-secure-file). 2. **APK Path** *(File path, Required)* - Path to the APK file you want to publish to the specified track. @@ -166,7 +166,7 @@ Allows you to promote a previously released APK from one track to another (e.g. ![Promote task](images/promote-task.png) -1. **JSON Key Path** *(File path)* or **Service Endpoint** - The credentials used to authenticate with Google Play. This can be acquired from the [Google Developer API console](https://console.developers.google.com/apis) and provided either directly to the task (via the `JSON Auth File` authentication method), or configured within a service endpoint that you reference from the task (via the `Service Endpoint` authentication method). Note that in order to use the JSON Auth File method, the JSON file you get from the developer console needs to be checked into your source repo. +1. **JSON Key Path** *(File path)* or **Service Endpoint** - The credentials used to authenticate with Google Play. This can be acquired from the [Google Developer API console](https://console.developers.google.com/apis) and provided either directly to the task (via the `JSON Auth File` authentication method), or configured within a service endpoint that you reference from the task (via the `Service Endpoint` authentication method). Note that in order to use the JSON Auth File method, the JSON file you get from the developer console needs to be checked into your source repo. Please note that from the point of security it's preferrable to store it as [Secure file](https://docs.microsoft.com/azure/devops/pipelines/library/secure-files) and download using [Download Secure File task](https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/download-secure-file). 2. **Package Name** *(String, Required)* - The unique package identifier (e.g. `com.foo.myapp`) that you wish to promote. @@ -182,7 +182,7 @@ Allows you to increase the rollout percentage of an app that was previously rele ![Increase task](images/increase-task.png) -1. **JSON Key Path** *(File path)* or **Service Endpoint** - The credentials used to authenticate with Google Play. This can be acquired from the [Google Developer API console](https://console.developers.google.com/apis) and provided either directly to the task (via the `JSON Auth File` authentication method), or configured within a service endpoint that you reference from the task (via the `Service Endpoint` authentication method). Note that in order to use the JSON Auth File method, the JSON file you get from the developer console needs to be checked into your source repo. +1. **JSON Key Path** *(File path)* or **Service Endpoint** - The credentials used to authenticate with Google Play. This can be acquired from the [Google Developer API console](https://console.developers.google.com/apis) and provided either directly to the task (via the `JSON Auth File` authentication method), or configured within a service endpoint that you reference from the task (via the `Service Endpoint` authentication method). Note that in order to use the JSON Auth File method, the JSON file you get from the developer console needs to be checked into your source repo. Please note that from the point of security it's preferrable to store it as [Secure file](https://docs.microsoft.com/azure/devops/pipelines/library/secure-files) and download using [Download Secure File task](https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/download-secure-file). 2. **Package Name** *(String, Required)* - The unique package identifier (e.g. com.foo.myapp) of the app you wish to increase the rollout percentage for. @@ -191,3 +191,55 @@ Allows you to increase the rollout percentage of an app that was previously rele ## Contact Us * [Report an issue](https://github.com/Microsoft/google-play-vsts-extension/issues) + +### Google Play - Release Bundle + +Allows you to release an app bundle to Google Play, and includes the following options: + +1. **JSON Key Path** *(File path)* or **Service Endpoint** - The credentials used to authenticate with Google Play. This can be acquired from the [Google Developer API console](https://console.developers.google.com/apis) and provided either directly to the task (via the `JSON Auth File` authentication method), + + ![JSON Auth File](images/auth-with-json-file.png) + + or configured within a service endpoint that you reference from the task (via the `Service Endpoint` authentication method). + + ![Service Endpoint](images/auth-with-endpoint.png) + + Note that in order to use the JSON Auth File method, the JSON file you get from the developer console needs to be checked into your source repo. + Please note that from the point of security it's preferrable to store it as [Secure file](https://docs.microsoft.com/azure/devops/pipelines/library/secure-files) and download using [Download Secure File task](https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/download-secure-file). + + +2. **Application id** *(String, Required)* - The application id of the bundle you want to release, e.g. com.company.MyApp. + + ![Application id](images/bundle-app-id.png) + +3. **Bundle path** *(File path, Required)* - Path to the bundle (.aab) file you want to publish to the specified track. Wildcards can be used. For example, **/*.aab to match the first APK file, in any directory. + +4. **Track** *(String, Required)* - Track you want to publish the bundle to. + +5. **Roll out release** *(Boolean, Optional)* - Roll out the release to a percentage of users. + +6. **Update metadata** *(Boolean, Optional)* - An IETF language tag identifying the language of the release notes as specified in the BCP-47 document. Default value is _en-US_. + +7. **Release notes (file)** *(File path, Required if visible)* - Path to the file specifying the release notes (change log) for the APK you are publishing. + + ![Release Notes](images/bundle-release-notes.png) + +8. **Language code** *(String, Required if visible)* - An IETF language tag identifying the language of the release notes as specified in the BCP-47 document. Default value is _en-US_. + +9. **Deobfuscation path** *(String, Optional)* - The path to the proguard mapping.txt file to upload. + +10. **Rollout fraction** *(String, Optional)* - The percentage of users the specified APK will be released to for the specified 'Track'. It can be increased later with the 'Google Play - Increase Rollout' task. + +11. **Metadata root directory** *(String, Required)* - The path to the metadata folder with the fastlane metadata structure. + +12. **Upload deobfuscation file (mapping.txt)** *(Boolean, Optional)* - Select this option to attach your proguard mapping.txt file to the primary APK. + +#### Advanced Options + +1. **Replace version codes** *(String, Optional)* - Specify version codes to replace in the selected track with the new APKs: all, the comma separated list, or a regular expression pattern. + + ![Advanced Options](images/bundle-advanced-options.png) + +2. **Version code list** *(String, Required if visible)* - The comma separated list of APK version codes to be removed from the track with this deployment. Available options are: *All*, *List* - comma separated list of version codes, *Regular expression* - a regular expression pattern to select a list of APK version codes to be removed from the track with this deployment, e.g. _.\\*12?(3|4)?5_ + +3. **Version code pattern** *(String, Required if visible)* - The regular expression pattern to select a list of APK version codes to be removed from the track with this deployment, e.g. .*12?(3|4)?5 diff --git a/images/bundle-advanced-options.png b/images/bundle-advanced-options.png new file mode 100644 index 0000000000000000000000000000000000000000..c57e33ab1e8268455bbab58611aa26fcc03972f3 GIT binary patch literal 4553 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 literal 0 HcmV?d00001 diff --git a/images/bundle-app-id.png b/images/bundle-app-id.png new file mode 100644 index 0000000000000000000000000000000000000000..80d3af50b71c4d5dd44ecdb7d5a784e021a5c0f1 GIT binary patch literal 10713 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 literal 0 HcmV?d00001 diff --git a/images/bundle-release-notes.png b/images/bundle-release-notes.png new file mode 100644 index 0000000000000000000000000000000000000000..aa1c35b5c5797e09b582013d9b1b084c63eb569b GIT binary patch literal 10080 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 Xy}b0Yt!O=M0D$g8BhA_e&QJdz5|hb( literal 0 HcmV?d00001