RE: D365FO: module menu is missing
                     
                    
                      
                        It seems that you don't have all your code in the source control. That's why the build is failing in the build environment.
You should really only create deployable packages in the build environment, to be sure to build only code that is in the source control.
If the build in your build environment gives you errors, and in the development environment it doesn't, the correct procedure is to check in all stuff in the development environment, not create a deployable package in the dev environment.
If you don't have all your code in the source control, you will be in trouble sooner or later.
Anyway, you are right that deployable packages are the best way to distribute modifications in other environments. Actually they're the only way, except for the development environments.