2)It's popular to run your automation through CI tools like Jenkins because it has auditing and logging built in and it's easy to set up.
3) Don't run bower/npm install/update on production because if npm or github go down then your production site will break because a partial code change has taken place. You should build (and test) on a separate server and then copy the code changes over to production.
Really you're looking for a Capistrano for python apps. If you're going to build a deployment tool on your own it's worth looking at their approach. For python, fabric is a fairly standard way to automate code deployments. The good news is that you're on the right path. Having automated deployment procedures will give devs a lot more time back AND remove a whole class of errors
I've moved my current company's deployment from manual line by line ftp deployment to an automated build and deploy using Jenkins to trigger ansible playbooks. Given the choice, I'd probably just use capistrano or fabric instead of building from scratch. I'd estimate that we've saved several months of work per a year in both deployment time and in debugging production issues.