And*_*san 6 python deployment automation azure gulp
我最近开始使用Gulp.js将我的所有CSS和JavaScript打包成单个文件,然后将其包含在我的Web应用程序中.我的网络应用程序是用Python编写的(使用Flask).
我显然不想使用git跟踪Gulp输出CSS和JS文件(因为它们是构建输出文件).
我使用push to deploy将我的网站部署到Azure网站.也就是说,我只是运行git push azure master,Azure自动确定我正在使用Python,设置virtualenv,安装pip依赖项等等.本文介绍如何进行此设置.
这个过程很有效,但是现在我已经开始使用Gulp,我想确保每当我部署网站时,也会在服务器端生成连接的JavaScript和CSS文件.
此外,在将来,我希望Azure在部署时运行所有测试,并且只有在它们全部通过时才能成功部署.
遗憾的是,我还没有为此工作流找到令人满意的解决方案,因为我无法为Azure的自动部署过程添加自定义步骤.
我曾尝试使用Kudu编写自定义部署脚本(正如此博客文章所建议的那样),但这样做会禁用Azure通常执行的所有自动步骤; 运行azure site deploymentscript --python只生成一个非常基本的Kudu部署文件,该web.config文件不处理文件中的读取,设置virtualenv或安装依赖项.我自己没有找到关于如何做到这一点的文件; 我使用默认的自动Azure部署脚本(当我推送代码时会生成服务器端,所以我自己无法访问它),因为不会处理像virtualenv和pip依赖项这样的东西.
有没有可用的解决方法,以便我可以自定义我的部署脚本(例如运行Gulp),同时仍然正确部署Flask?
由于Kudu是开源的并且可以在GitHub上获得,因此我在其问题跟踪器中提出了这个问题(链接,对于任何感兴趣的人).代码所有者非常有帮助,并指出我的解决方案.
yourwebsite.scm.azurewebsites.net.npm和适当的package.json文件.
这是我的代码处理Gulp.js的片段,对于任何感兴趣的人.查看由azure site deploymentscript --node示例生成的脚本,了解如何选择正确的Node和npm版本:
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."
Run Code Online (Sandbox Code Playgroud)
不要忘记实际添加package.json包含所有必需的Gulp依赖项的文件到项目中.Azure提供Node.js(和npm)但不提供Gulp.js. 希望这可以帮助!
PS:请注意,整个过程有点hacky,完全正确的方法是使用持续集成代理.
| 归档时间: |
|
| 查看次数: |
2446 次 |
| 最近记录: |