We never really use anything other than
TARGET_BUILD_TYPE=release -- in AOSP changing that flag is effectively a no-op.
TARGET_BUILD_VARIANT=eng or runtime flags tend to control more debug-like features, but in general it's problematic to turn on any sort of "debug" for everything in a build (doesn't fit in the partitions, too slow on device, yet another cross-cutting feature that isn't regularly tested, etc).
We also tend to avoid using `lunch` (or even envsetup.sh) at all for automation -- it's only setting ~3 variables that the build actually uses (TARGET_PRODUCT / TARGET_BUILD_VARIANT / TARGET_BUILD_APPS, plus TARGET_BUILD_TYPE=release). So much of our automation just does:
build/soong/soong_ui.bash --make-mode TARGET_PRODUCT=my_product TARGET_BUILD_VARIANT=userdebug droid dist <other things to build>
Which is roughly equivalent to:
source build/envsetup.sh && lunch my_product-userdebug && m dist
- Dan