2013-07-29 9 views
7

Azure의 Git 배포를 사용하여 프로젝트를 빌드하고 패키지하려고합니다.Azure 웹 사이트에서 Grunt가 실행되지 않습니다.

나는 다음과 같은 파일

  • Gruntfile.js
  • package.json
  • .deployment 파일 deploy.cmd를 호출 .deployment

  • deploy.cmd
    • 을 만들었습니다. deploy.cmd은 경로를 Node.js 및 npm의 체크 인 복사본을 포함하도록 설정하여 환경을 설정합니다. npm install으로 전화하면됩니다. grunt을 호출하면 첫 번째 표준 출력 메시지까지 실행 된 것으로 나타나고 오류 리턴 코드가 설정됩니다. 나는 그 어떤 다른 메시지를 얻지 못한다. 다른 명령은 정상적으로 작동하는 것 같습니다.

      STDERR을 파이핑 처리했습니다. 운이 없었습니다. 원격 실행 콘솔에서 실행 해 보았습니다. 운이 없었습니다. 내 Gruntfile.js 로컬로 잘 실행됩니다.

      누락 된 일부 마법 소스가 있습니까?

  • +0

    '원격 실행 콘솔'이라고 말하면 무엇을 말하고 있습니까? scm 서비스의 루트 (git url과 동일한 호스트 이름)에서 진단 콘솔을 시작하십시오. 거기서 실패합니까? 정확한 출력을 붙여 넣을 수 있습니까? 또한 공유 할 수있는 최소 레포가있는 경우 조사하는 것이 도움이됩니다. 뭔가가 샌드 박스에 의해 차단 될 가능성이 있습니다. –

    +0

    @DavidEbbo 그래요. 진단 콘솔을 말하는 겁니다. 거기서 실패합니다. C 프롬프트를 되 찾을 수 있습니다. 나는 파일을 복사하고 복사 한 후 일부를 지우고 (필요하지 않지만 힘내 하위 모듈의 일부), 몇 개의 템플릿을 실행하고 환경 변수를 파싱한다. 아주 표준적인 것들. 샌드 박스에 의해 차단되는 것들의 분류는 무엇입니까? –

    +0

    정확히 샌드 박스 블록이 미묘 할 수 있습니다. 더 많은 정보가있는 진단 덤프 (https://github.com/projectkudu/kudu/wiki/Investigating-issues#getting-the-diagnostic-dump)를보고 싶을 수도 있습니다. 자신이보고있는 것을 정확히 볼 수있는 최소한의 레포를 공유 할 수있는 방법이 있다면, 우리는 무슨 일이 일어나고 있는지 파악할 수 있어야합니다. –

    답변

    15

    이것은 조금 오래되었지만 누군가가이 질문을 접할 경우를 대비하여 어쨌든 대답 할 것입니다. 진단 콘솔 및 배포 로그 모두 ANSI 코드로 투쟁


    첫째, 비활성화 색상 꿀꿀을 실행하는 데 도움이됩니다. 이렇게하려면 grunt --no-color을 실행하십시오. 이렇게하면 STDOUT 정보가 다시 콘솔과 배포 로그로 전달됩니다.

    둘째, 노드 또는 NPM의 체크인 버전 사용을 권장하지 않습니다. Windows Azure는 이미 이러한 환경을 구축했으며 이미 최적의 상태로 실행하는 데 필요한 특수 임시 경로와 캐시 경로를 위해 구성되었습니다.

    Project Kudu은 Azure Deployments에 전원을 공급하는 배포 엔진이지만 .deployment 파일이 있기 때문에 이미 알고 있습니다. 그러나 Azure 명령 행 도구 [npm install azure-cli --global]는 Azure의 미리 설치된 노드 및 NPM 설정을 사용하는 몇 가지 배포 스크립트를 준비하는 데 도움이됩니다.

    azure site deploymentscript –-node 
    

    기본 노드 스크립트가 제공됩니다.

    그루트를 안정적으로 실행하려면 몇 가지 수정이 필요합니다 (deploy.sh). deploy.sh 내에 # 배치 섹션이 있습니다. 당신의 /wwwroot에 (bower.json 존재하는 경우) (Gruntfile.js있는 경우)이 grunt clean common dist 다음, bower install 다음 npm install을 실행

    # Deployment 
    # ---------- 
    
    echo Handling node.js grunt deployment. 
    
    # 1. Select node version 
    selectNodeVersion 
    
    # 2. Install npm packages 
    if [ -e "$DEPLOYMENT_SOURCE/package.json" ]; then 
        eval $NPM_CMD install 
        exitWithMessageOnError "npm failed" 
    fi 
    
    # 3. Install bower packages 
    if [ -e "$DEPLOYMENT_SOURCE/bower.json" ]; then 
        eval $NPM_CMD install bower 
        exitWithMessageOnError "installing bower failed" 
        ./node_modules/.bin/bower install 
        exitWithMessageOnError "bower failed" 
    fi 
    
    # 4. Run grunt 
    if [ -e "$DEPLOYMENT_SOURCE/Gruntfile.js" ]; then 
        eval $NPM_CMD install grunt-cli 
        exitWithMessageOnError "installing grunt failed" 
        ./node_modules/.bin/grunt --no-color clean common dist 
        exitWithMessageOnError "grunt failed" 
    fi 
    
    # 5. KuduSync to Target 
    "$KUDU_SYNC_CMD" -v 500 -f "$DEPLOYMENT_SOURCE/dist" -t "$DEPLOYMENT_TARGET" -n "$NEXT_MANIFEST_PATH" -p "$PREVIOUS_MANIFEST_PATH" -i ".git;.hg;.deployment;deploy.sh" 
    exitWithMessageOnError "Kudu Sync to Target failed" 
    

    , 그리고 마지막으로 KuduSync 다음에 그 내용을 교체합니다. (참고 : '깨끗한 공통 dist'를 실행할 필요가있는 어떤 Grunt 작업으로 바꾸십시오.)

    실행할 수있는 몇 가지 다른 문제가 있습니다. 나는 이것을 실행할 수있는 몇 가지 이슈들을 포함하고있는 post on my personal blog에 씁니다.

    +0

    Jay,이 방법을 사용하면 Git과 함께 배포 한 직후 Azure 웹 사이트에서 Karma로 테스트를 실행할 수 있습니다 (Travis-CI와 유사). – pilau

    +0

    예제를 제공해 주셔서 감사합니다. 또한 관련 블로그 게시물을 살펴 보았지만 내 문제와 관련된 내용을 찾지 못했습니다. bower와 grunt 단계를 내 deploy.sh 파일에 복사했습니다. 배포 할 때 배포 로그 'grunt-cli : grunt 명령 줄 인터페이스에서이 오류 메시지가 나타납니다. (v0.1.13) 웹 사이트 배포 중에 오류가 발생했습니다. grunt failed '어떤 아이디어? – moke

    +0

    하늘색 사이트 deploymentscript --node는 내 경우에 deploy.cmd 파일을 생성합니다. 이 게시물은 이제 쓸모가 없다는 것을 의미합니까?! – Vaibhav

    관련 문제