Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
# $global:appName = "THE NAME OF THE APP IN APPCENTER (You can find this in the URL of the app. eg: account/app-name)"
# $global:branchName = "THE BRANCH YOU HAVE CONFIGURED TO BUILD (eg feature/addAuth)"
function Login(){
appcenter login --token $global:apiToken
## Login to AppCenter
## Get configured branches
$configuredBranches = appcenter build branches list -a $global:appName --output json | ConvertFrom-Json
## Only branches configured on AppCenter can be built
## If branch is not configured, exit with a failure
if(($configuredBranches | Where-Object { $_.sourceBranch -eq "$global:branchName" } | Measure-Object).Count -eq 0){
Write-Host "The branch $global:branchName has not been configured yet. Please do so on Appcenter." -ForegroundColor Red
Write-Host "The branch $global:branchName has not been configured yet. If the branch has been configured, manually start the first build for the CLI to pick it up." -ForegroundColor Red
exit 1
## Kick off a new build
appcenter build queue --app $global:appName -b $global:branchName
Write-Host "Build has been queued on AppCenter"
$buildComplete = $false;
while ($buildComplete -eq $false) {
## Get the latest status for the build that was just queued
$buildStatus = appcenter build branches show -a $global:appName -b $global:branchName --output json | ConvertFrom-Json
## If the build status is completed
if($buildStatus.status -eq "completed"){
## Build has completed
if($buildStatus.result -eq "succeeded"){
Write-Host "Build has complete and the app is being processed on the Playstore"
## If this is a UAT build, notify collaborators of new build
if($global:appName -eq ""){
## Get all releases
$releases = appcenter distribute releases list -a $global:appName --output json | ConvertFrom-Json
## Get the release for this build
$builRelease = $releases | Where-Object { $_.version -eq "$($buildStatus.buildNumber)" }
## If there was a release for this build, notify collaborators
if(!($null -eq $builRelease)){
Write-Host "Distributing and notifying collaborators of new build available for testing"
appcenter distribute releases add-destination -d "Collaborators" -t "group" -r $ -a $global:appName
Write-Host "No release for build. Collaborators will not be notified."
elseif($buildStatus.result -eq "failed"){
## If the build failed on AppCenter, exit CI job with a failure
Write-Host "Build failed on AppCenter. Please login to AppCenter to view the logs."
exit 1
elseif($buildStatus.result -eq "canceled"){
##Build was canceled on AppCenter
Write-Host "Build was canceled on AppCenter."
## Break out of while loop
$buildComplete = $true
## Notify CI logs that build is still in progress
Write-Host "Build is still in progress"
## sleep for 15 seconds before checking for status again
Start-Sleep -Seconds 15
}catch {
Write-Host $_.Exception
exit 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment