2012-07-24 25 views
38

Một trong các dự án xây dựng TeamCity v7.0 của tôi dựa vào việc sử dụng sự khác biệt giữa nhánh phát triển hiện tại và nhánh chính để xác định những gì cần phải chạy. Tôi đã viết một tập lệnh nhỏ sử dụng một cái gì đó như:Sử dụng lệnh git trong TeamCity Build Bước

git diff origin/master..origin/QA --name-only --diff-filter=AM | DoSomethingWithThoseFiles 

Thật không may, nhật ký xây dựng chỉ ra rằng git diff không hoạt động. Khi tôi đi vào thư mục buildAgent/work cho dự án này, tôi thấy rằng không có thư mục .git, vì vậy nó không thể thực hiện các thao tác git được yêu cầu.

Tôi đã đặt teamcity.git.use.local.mirrors=true trong tệp buildAgent.properties như được đề cập tại TW-15873, nhưng điều đó dường như không giúp ích gì.

Tôi có thể làm gì để danh sách các tệp được thay đổi giữa hai nhánh trong một tập lệnh cho bước xây dựng của tôi không?

+1

Đã có giải pháp cho việc này chưa? Tôi cũng gặp khó khăn này khi sử dụng TeamCity 8.1. Tôi đang sử dụng chế độ kiểm tra VCS "Tự động về đại lý" nhưng điều đó dường như không giúp đỡ. Thư mục .git vẫn bị thiếu. – user24601

Trả lời

45

Thử thay đổi chế độ thanh toán VCS thành "Luôn kiểm tra tệp trên tác nhân" như được ghi trong tài liệu here. Điều đó sẽ cho phép truy cập tập lệnh xây dựng vào thư mục .git.

+3

Điều đó đã cho tôi một phần của con đường, nhưng làm khác biệt giữa nguồn gốc/Master và các chi nhánh hiện tại không hoạt động. Thay vào đó, có vẻ như nó chỉ nhận ra một chi nhánh SINGLE cục bộ hoặc từ xa! Tôi nghĩ rằng TC đang làm điều gì đó sôi nổi-- nhân bản một bản sao hoặc một cái gì đó bất thường. "git fetch" ném một lỗi rằng buildAgent/system/git/git-14CE2659.git dường như không phải là kho lưu trữ git, mặc dù repo hiện tại nằm trong buildAgent/work/blah. –

+1

Cảm ơn bạn! Câu trả lời này đã trả lời một câu hỏi mà tôi có: http://stackoverflow.com/questions/17555931/how-do-i-get-teamcity-to-create-the-git-directory-when-cloning-a-repo-for-build –

+0

Thật không may, có vẻ như nếu bạn cần truy cập xác thực ssh, ví dụ để đẩy các thay đổi cho repo git từ xa, nó không hoạt động vì TeamCity xóa các khóa ssh sau khi tìm nạp. https://confluence.jetbrains.com/display/TCD9/SSH+Keys+Management –

7

Câu trả lời của @Mike Two là chính xác, bạn cần phải định cấu hình gốc VCS để sử dụng chế độ Thanh toán Tự động trên tác nhân-không- trên máy chủ. Tài liệu TC không đề cập đến cài đặt bắt buộc này được ẩn theo mặc định là 'nâng cao'. Vì vậy, đây là một hình ảnh của những gì để tìm kiếm.

Advanced Settings

FYI, cụ thể lỗi bước Solution VS2013 của tôi là từ MSBuild, như dưới đây. Tôi đang sử dụng TeamCity Enterprise 9.0 EAP mới nhất (xây dựng 31963). [PreBuildEvent] Exec [14:21:55][Exec] git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\MYPROJECT\bin\Debug\version.txt" [14:21:55][Exec] fatal: Not a git repository (or any of the parent directories): .git [14:21:55][Exec] C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1131, 5): error MSB3073: The command "git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\Higgens\bin\Debug\version.txt"" exited with code 128. [14:21:55]

// chỉnh sửa; Tôi không biết cách thêm điều này vào nhận xét.

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