2013-07-29 44 views
7

Tôi đang cố gắng xây dựng và đóng gói dự án của mình bằng cách sử dụng triển khai Git của Azure.Grunt không chạy trên trang web Azure

Tôi đã tạo ra các tập tin sau đây

  • .deployment
  • deploy.cmd
  • Gruntfile.js
  • package.json

tập tin .deployment tôi gọi deploy.cmd. deploy.cmd thiết lập môi trường bằng cách thiết lập đường dẫn để bao gồm bản sao đã được kiểm tra của Node.js và npm. Tôi có thể gọi số npm install. Khi tôi gọi grunt, có vẻ như để thực hiện lên đến thông báo tiêu chuẩn đầu tiên, sau đó nó trả về và mã trả về lỗi được thiết lập. Tôi không nhận được bất kỳ thông điệp nào khác. Các lệnh khác dường như chạy tốt.

Tôi đã cố gắng thoát ra khỏi STDERR, không may mắn. Tôi đã thử chạy dưới giao diện điều khiển từ xa thực hiện, không có may mắn ở đó. My Gruntfile.js chạy cục bộ tốt.

Có một số loại nước sốt kỳ diệu mà tôi đang thiếu không?

+0

Khi bạn nói 'Remote Execution console', bạn đang đề cập đến điều gì? Hãy thử khởi chạy Bàn điều khiển Chẩn đoán từ gốc của dịch vụ scm (cùng tên máy chủ với tên git url). Nó có thất bại không? Bạn có thể dán đầu ra chính xác không? Ngoài ra, nếu có một repo tối thiểu bạn có thể chia sẻ, đó sẽ là hữu ích để điều tra. Có thể một cái gì đó đang bị chặn bởi sandbox. –

+0

@DavidEbbo Yea Tôi đang tham khảo Bảng điều khiển chẩn đoán. Nó thất bại ở đó. Tôi chỉ nhận được dấu nhắc C-trở lại. Tôi đang sao chép các tập tin, xóa một số người trong số họ sau khi sao chép chúng (không cần thiết, nhưng một phần của một mô-đun con Git), chạy một vài mẫu và phân tích các biến môi trường. Vì vậy, công cụ khá chuẩn. Phân loại thứ gì bị chặn bởi sandbox? –

+0

Chính xác những gì các khối hộp cát có thể tinh tế. Bạn cũng có thể xem xét Dump Chẩn đoán (https://github.com/projectkudu/kudu/wiki/Investigating-issues#getting-the-diagnostic-dump), có thể có thêm thông tin. Nếu có bất kỳ cách nào bạn có thể chia sẻ một repo tối thiểu mà sẽ cho chúng tôi thấy chính xác những gì bạn đang nhìn thấy, chúng ta sẽ có thể xác định những gì đang xảy ra. –

Trả lời

15

Đây là một chút cũ, nhưng tôi sẽ trả lời nó chỉ trong trường hợp ai đó gặp phải câu hỏi này.


Trước tiên, bạn nên chạy grunt với màu bị tắt, vì cả bảng điều khiển chẩn đoán và nhật ký triển khai đều gặp mã ANSI. Để thực hiện việc này, hãy chạy grunt --no-color. Điều này sẽ đưa thông tin STDOUT trở lại vào Console và vào Nhật ký triển khai.

Thứ hai, tôi không khuyên bạn nên sử dụng các phiên bản đã đăng ký của Nút hoặc NPM. Windows Azure đã có những xây dựng trong môi trường, và đã được cấu hình cho các đường dẫn tạm thời đặc biệt và đường dẫn bộ nhớ cache cần thiết cho cả hai để thực hiện tốt nhất của họ.

Project Kudu là công cụ triển khai cấp nguồn cho Azure Deployments, nhưng bạn đã biết điều này, vì bạn có tệp .deployment. Tuy nhiên, Azure Command Line Tools [npm install azure-cli --global] sẽ giúp bạn dàn dựng một số tập lệnh triển khai tốt hơn sẽ sử dụng cài đặt Node và NPM được cài đặt sẵn của Azure.

azure site deploymentscript –-node 

sẽ lấy cho bạn tập lệnh nút cơ sở đó.

Từ đó, một vài sửa đổi là cần thiết để deploy.sh để làm cho nó thực thi Grunt, đáng tin cậy. Trong phạm vi deploy.sh là phần #Deployment. Thay thế nội dung của nó như sau:

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

này sẽ chạy npm install, tiếp theo là bower install (nếu bower.json tồn tại), tiếp theo là grunt clean common dist (nếu Gruntfile.js tồn tại), và cuối cùng là một KuduSync vào /wwwroot của bạn. (Lưu ý: thay thế 'sạch chung dist' với bất kỳ nhiệm vụ Grunt bạn cần để chạy.)

Có một số vấn đề khác mà bạn có thể gặp phải. Tôi viết điều này trong một số post on my personal blog, bao gồm một số vấn đề bạn có thể gặp phải.

+0

Jay, phương pháp này có thể được sử dụng để làm cho Azure Websites chạy thử nghiệm của tôi với Karma, ngay sau khi tôi triển khai với Git, thay vì phải tự chạy chúng (tương tự Travis-CI)? – pilau

+0

Cảm ơn bạn đã cung cấp ví dụ. Tôi cũng đã xem qua bài đăng trên blog được liên kết nhưng không tìm thấy bất kỳ điều gì liên quan đến vấn đề của tôi. Tôi đã sao chép các bước bower và grunt vào tệp deploy.sh của mình. Khi tôi triển khai, tôi nhận được thông báo lỗi này trong nhật ký triển khai 'grunt-cli: Giao diện dòng lệnh grunt. (v0.1.13) Đã xảy ra lỗi trong quá trình triển khai trang web. grunt không thành công 'Bất kỳ ý tưởng nào? – moke

+0

Phương thức deploymentscript -node trên trang web tạo ra tệp deploy.cmd trong trường hợp của tôi. Điều đó có nghĩa là bài đăng này đã lỗi thời? – Vaibhav

Các vấn đề liên quan