2015-02-06 4 views
6

최근에 내을 사용하여 모든 CSS와 JavaScript를 단일 파일로 패키지화 한 다음 웹 응용 프로그램에 포함 시켰습니다. 내 웹 응용 프로그램은 파이썬으로 작성되었습니다 (플라스크 사용).Azure 웹 사이트에 사용자 정의 설치

분명히 git 출력 CSS와 JS 파일을 git (출력 파일을 빌드하기 때문에)를 사용하여 추적하고 싶지는 않습니다.

푸시를 사용하여 내 웹 사이트를 Azure 웹 사이트에 배포합니다. 즉, 간단히 git push azure master을 실행하고 Azure가 자동으로 파이썬을 사용하고 있다고 생각하고 virtualenv을 설정하고 pip 종속성 등을 설치합니다. This article describes how to set this up.

이 프로세스는 훌륭하지만, 이제는 Gulp를 사용하기 시작 했으므로 웹 사이트를 배포 할 때마다 연결된 JavaScript 및 CSS 파일도 서버 측에서 생성되도록하고 싶습니다.

또한 Azure는 배포시 모든 테스트를 실행하고 모든 테스트가 통과되면 성공적으로 배포하기를 원합니다.

아쉽게도 Azure의 자동 배포 프로세스에 사용자 지정 단계를 추가 할 수 없기 때문에 슬프게도이 워크 플로에 대한 만족스러운 솔루션을 찾지 못했습니다.

Kudu (this blog post에 의해 제안 된대로)을 사용하여 사용자 지정 배포 스크립트를 작성하려고했지만 Azure가 일반적으로 수행하는 모든 자동 단계가 비활성화됩니다. azure site deploymentscript --python을 실행하면 web.config 파일에서 읽기를 처리하지 않는 매우 기본적인 Kudu 배포 파일 만 생성되며 virtualenv을 설정하거나 종속 파일을 설치합니다. 이 작업을 직접 수행하는 방법에 대한 문서가 없습니다. virtualenv와 pip dependencies 같은 것들은 다룰 수 없기 때문에 나는 디폴트의 자동 Azure 배치 스크립트를 사용한다. (코드를 누를 때 생성 된 서버 측 정보를 얻을 수 있으므로 직접 접근 할 수 없다.)

Flask를 올바르게 배포하면서 배치 스크립트 (예 : Gulp 실행)를 사용자 정의 할 수있는 해결 방법이 있습니까?

답변

7

Kudu는 오픈 소스이며 GitHub에서 사용할 수 있으므로 문제 추적기 (link, for anyone interested)에서이 문제를 제기했습니다. 코드 소유자는 매우 도움이되었고 해결책을 제시해주었습니다.

  1. 사이트의 Kudu 서비스 (yourwebsite.scm.azurewebsites.net)에 액세스하십시오.
  2. 도구> 배포 스크립트 다운로드를 클릭하고 코드에 대해 배포 스크립트 Azure가 생성되도록합니다 (Flask 앱에만 국한되지 않음).
  3. (선택 사항) 스크립트는 Windows 배치 스크립트입니다. 나는 Bash에 이식했다. 왜냐하면 나는 그것에 익숙하기 때문에 Azure 웹 사이트에서도 지원한다.
  4. Gulp/Grunt를 사용하여 빌드하고, 테스트를 실행하고, 실패 할 경우 배포를 실패 (0이 아닌 오류 코드로 종료)합니다. Gulp/Grunt와 같은 항목이 있는지도 먼저 확인해야합니다. npm과 적절한 package.json 파일을 사용하여 설치됩니다.
    • KuduSync가 리포지토리에서 새 파일을 복사하기 전에 배포를 실패로 표시해야합니다. 그렇지 않으면 예를 들어 웹 루트 폴더에서 끝납니다. 당신의 시험은 실패했습니다.

여기에 관심있는 사람을위한 Gulp.js을 처리하는 내 코드의 조각입니다. 올바른 노드 및 NPM 버전을 선택하는 방법에 대한 예제 azure site deploymentscript --node에 의해 생성 된 스크립트 봐 :

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." 

하는 것은 실제로 프로젝트에 필요한 모든 꿀꺽 종속성을 포함하는 package.json 파일을 추가하는 것을 잊지 마십시오. Azure는 Node.js (및 npm)를 제공하지만 Gulp.js는 제공하지 않습니다. 희망이 도움이!

피씨 :이 전체 프로세스는 약간 해키하며,이를 수행하는 완전히 올바른 방법은 연속 통합 에이전트를 사용하는 것입니다.

관련 문제