Tôi hiện đang sử dụng "Số phiên bản Plug-in" của Jenkins để đặt Biến môi trường cho phiên bản xây dựng. Điều này hoạt động tốt trong jenkins nhưng tôi cần một cách để vượt qua điều này để MSBuild để số phiên bản của exe và dll được cập nhật. Tôi đã cố gắng dưới cấu hình nhưng nó không cập nhật được xây dựng phiên bảnSử dụng Biến môi trường phiên bản Jenkins trong bước MSBuild
Trả lời
Môi trường Tên biến nên được viết mà không phần trăm-dấu ('%'), như thế này :
VERSION
ngoài việc đó, tôi nghĩ bạn nên làm tốt.
Cũng có thể xem xét thay đổi
${BUILDS_ALL_TIME}
để
${BUILDS_ALL_TIME, XX}
(điều này sẽ thực thi một hai chữ số build-số với số không hàng đầu)
Đây là một mục tiêu MSBuild thay thế sửa đổi số trong tệp GlobalAssemblyInfo.cs với biến SVN_REVISION từ Jenkins.
Chúng tôi có giải pháp đa dự án trong đó mỗi dự án tham chiếu cùng GlobalAssemblyInfo cho thông tin chung (như phiên bản). Sửa đổi điều này để nó phù hợp với thiết lập của bạn.
Bằng cách có điều kiện Exists mục tiêu thực hiện trên các máy phát triển mà MSBuildCommunityTasks chưa được cài đặt. Trong những trường hợp đó, số phiên bản trong GlobalAssemblyInfo.cs không bị ảnh hưởng.
<Target Name="InjectSVNRevision" Condition="Exists('$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets')">
<!-- When this build is done by the Jenkins CI server; the svn revision number is set in the environment variable SVN_REVISION
This little snippet replaces the revision number in GlobalAssemblyInfo.cs with this svn revision number
-->
<Message Text="Injecting SVN revision number in GlobalAssemblyInfo.cs" />
<FileUpdate Files="GlobalAssemblyInfo.cs"
Multiline="true"
Singleline="false"
Regex="(AssemblyVersion|AssemblyFileVersionAttribute|AssemblyFileVersion)\("([0-9]+\.[0-9]+\.[0-9]+)(\.[0-9]+)?"\)"
ReplacementText="$1("$2.$(SVN_REVISION)")"
Condition="$(SVN_REVISION) != '' "/>
</Target>
Cách dễ nhất tôi đã tìm thấy để thực hiện việc này là sử dụng Change Assembly Version. Sử dụng plugin đó, bạn chỉ cần cung cấp số phiên bản (hoặc biến môi trường được sử dụng) và nó sẽ thay thế nó trong tất cả các tệp AssemblyInfo.cs trong vùng làm việc của bạn.
Một công việc rất nhanh xung quanh việc này là tạo tác vụ PowerShell trước tác vụ msbuild của bạn. Giả sử bạn đã xác định biến VERSION như trên (không có %%). Và bạn đã chọn xóa không gian làm việc trước khi bắt đầu xây dựng.
Đây là mã dành cho tác vụ powershell.
gci -rec -Filter *AssemblyInfo* | ForEach { (Get-Content $_.FullName) | ForEach-Object {$_ -replace "1.0.0.0",$env:VERSION } | Set-Content $_.FullName}
- 1. Làm thế nào để sử dụng các biến Jenkins Môi trường trong kịch bản python
- 2. MSBuild các biến môi trường bắt buộc
- 3. Biến môi trường được sử dụng trong Jenkins bằng Windows Batch Command như thế nào?
- 4. Ghi đè biến môi trường khi chạy trên Jenkins
- 5. Sử dụng các biến môi trường trong Monodevelop với MonoTouch
- 6. Biến môi trường Ruby
- 7. Sử dụng biến môi trường cho tệp .config trong .NET
- 8. Sử dụng biến môi trường trong nhiệm vụ Rake
- 9. Môi trường nô lệ Jenkins Thay đổi làm mới
- 10. Thiết lập biến môi trường trong kịch bản kiến
- 11. Biến môi trường Javascript
- 12. Lấy các biến môi trường sử dụng mã C
- 13. Có thể sử dụng các biến môi trường trong kịch bản lệnh Inno Setup không?
- 14. biến môi trường Sử dụng Windows trong Cài đặt văn bản Sublime file
- 15. Sử dụng các biến môi trường hệ thống trong một kịch bản sql
- 16. Làm thế nào để sử dụng các biến môi trường Windows trong kịch bản Vim?
- 17. NAnt hoặc MSBuild, cái nào tôi nên sử dụng trong môi trường svn?
- 18. Java biến tĩnh trong môi trường cụm
- 19. Biến môi trường trong Python trên Linux
- 20. xây dựng ứng dụng .net trong Jenkins bằng MSBuild
- 21. UNIX, nhận biến môi trường
- 22. Tham chiếu Biến môi trường trong web.xml
- 23. Đặt biến môi trường Node.js trong WebStorm
- 24. Biến môi trường NodeJS trong Grunt
- 25. Biến môi trường đơn điệu
- 26. Biến môi trường PHP và Apache
- 27. Sử dụng C++ trong môi trường nhúng
- 28. đọc biến môi trường bash
- 29. đặt biến môi trường cho kịch bản kiến
- 30. Thay đổi biến môi trường trong eclipse
Vâng tôi đã hiểu điều đó, Ngoài ra có vẻ như phiên bản MSBuild.exe không hỗ trợ/p: theo mặc định. bạn cần phải lộn xộn xung quanh với phần mở rộng MSBuld. Tôi đã kết thúc chỉ viết một ứng dụng giao diện điều khiển để cập nhật AssemblyInfo.cs trước khi xây dựng và gọi nó đi qua trong biến môi trường. Điều này đã được nhanh hơn rối tung xung quanh với phần mở rộng msbuild phức tạp –
Vâng, tôi đã hy vọng bạn DID tìm thấy một cách tốt đẹp để vượt qua các phiên bản để xây dựng, như chúng tôi cũng sử dụng một kịch bản phù hợp cho rằng ... – Gonen