I have configured the VSTS agent on my MacBook Pro and it works perfectly when I manually run it (using ./run.sh
).
However when I configure the VSTS agent to run as a service (using ./svc.sh install
and ./svc.sh start
) and queue a new build in VSTS I receive an error (on the signing step) "ANDROID_HOME not set".
I have the following configured in my .bash_profile:
export ANDROID_HOME=/Users/$(whoami)/Library/Android/sdk
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
The path is correct and also running echo $ANDROID_HOME
returns the expected value (in this case /Users/mvanbeusekom/Library/Android/sdk
).
Does anybody know what could be wrong?
An important part of VSTS is the Hosted Agent Pool. Agents are used to run builds, tests and releases. They do the actual work. The Hosted Pool consists of a series of Virtual Machines that are managed by Microsoft.
Android SDK environment variables. ANDROID_HOME. Sets the path to the SDK installation directory. Once set, the value does not typically change, and can be shared by multiple users on the same machine. ANDROID_SDK_ROOT , which also points to the SDK installation directory, is deprecated.
In your agent folder, there is a file named runsvc.sh. Add your export in there. You'll see a commented-out line prompting you where to put your env setup:
# insert anything to setup env when running as a service
export ANDROID_HOME=/Users/$(whoami)/Library/Android/sdk
Make sure to restart the service.
The reason .bash_profile
doesn't work for you is because the service doesn't have access to that when it runs.
I had the same problem and found the solution here: https://github.com/Microsoft/vsts-tasks/issues/1726#issuecomment-219725321
For those developing with Xamarin, you'll typically need this instead:
# insert anything to setup env when running as a service
export ANDROID_HOME=/Users/$(whoami)/Library/Developer/Xamarin/android-sdk-macosx
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With