-
-
Save GeradeDev/8ee32a9f3ce5b9c1c377f5b2764ac6d3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# $global:apiToken = "APP-TOKEN-GENERATED-BY-YOUR-APPCENTER-ACCOUNT" | |
# $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 | |
} | |
try{ | |
## Login to AppCenter | |
Login | |
## 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 | |
$Host.SetShouldExit(1) | |
exit 1 | |
} | |
else{ | |
## 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 BUILD IS IN PROGRESS | |
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 "geradebbd.co.za/rtc-mobile-uat"){ | |
## 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 $builRelease.id -a $global:appName | |
} | |
else{ | |
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." | |
$Host.SetShouldExit(1) | |
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 | |
} | |
else{ | |
## 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 | |
$Host.SetShouldExit(1) | |
exit 1 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment