I recently started using Gulp.js to package all my CSS and JavaScript into single files, which I then include in my web app. My web app is written in Python (using Flask ).
I obviously don't want to track the Gulp output CSS and JS files using git (since they're build output files).
I deploy my website to Azure Websites using push to deploy. That is, I simply run git push azure master
and Azure automatically figures out that I'm using Python, sets up virtualenv
, installs pip
dependencies and so on. This article describes how to set this up .
This process works great, but now that I've started using Gulp, I want to ensure that the concatenated JavaScript and CSS files are also produced on the server side whenever I deploy the website.
Moreover, in the future, I would like to have Azure run all the tests upon deployment, and only successfully deploy if they all pass.
Sadly, I have yet to find a satisfying solution for this workflow, since I cannot add custom steps to Azure's automatic deployment process.
I have tried writing a custom deployment script using Kudu (as suggested by this blog post ), but doing so disables all the automatic steps Azure normally does; running azure site deploymentscript --python
only generates a very basic Kudu deployment file which doesn't handle reading in the web.config
file, setting up virtualenv
or installing the dependencies. I found no documentation regarding how to do this myself; I have use the default, automatic Azure deployment script (which gets generated server-side when I push the code, so I cannot access it myself) because otherwise stuff like virtualenv and pip dependencies aren't handled.
Is there any workaround available so that I may customize my deployment script (eg to run Gulp) while still correctly deploying Flask?
Since Kudu is open source and available on GitHub, I have brought up this problem in its issue tracker ( link, for anyone interested ). The code owner vas very helpful and pointed me towards a solution.
yourwebsite.scm.azurewebsites.net
. npm
and the appropriate package.json
file.
Here's the fragment of my code handling Gulp.js, for anyone who's interested. Look at the script generated by azure site deploymentscript --node
for examples on how to select the correct Node and npm versions:
selectNodeVersion
echo "Invoking \"$NPM_CMD install\"..."
eval $NPM_CMD install
exitWithMessageOnError "Could not run 'npm install'. Do you have the necessary privileges?"
echo "Finished npm install."
# The path doesn't seem to get set OK. Use this hack to run gulp.
GULP="node_modules/gulp/bin/gulp.js"
echo "Running gulp..."
"$GULP" production
exitWithMessageOnError "Could not run 'gulp'. Did 'npm install' run OK?"
echo "Finished gulp."
Don't forget to actually add a package.json
file containing all the necessary Gulp dependencies to your project. Azure provides Node.js (and npm) but not Gulp.js. Hope this helps!
PS: Do note that this whole process is a bit hacky and that the completely correct way to do this is by using a continuous integration agent.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.