2011-10-18 53 views
7

Tôi có một bậc thầy Jenkins (chạy trên một hộp Linux nhỏ) và một nô lệ Jenkins (chạy trên một máy XP "đúng").Tập tin settings.xml nào được sử dụng bởi jenkins slave?

Tôi đã định cấu hình cả cho tất cả các jib được chạy trên nô lệ Windows XP.

Thật không may, mỗi lần một xây dựng được chạy trên nô lệ đó, xây dựng thất bại do các lỗi sau:

ERROR: Ignore Problem expanding maven opts macros org.jenkinsci.plugins.tokenmacro.TokenMacro 
Found mavenVersion 3.0.3 from file jar:file:/E:/java-ext/apache-maven-3.0.3/lib/maven-core-3.0.3.jar!/META-INF/maven/org.apache.maven/maven-core/pom.properties 
Parsing POMs 
ERROR: Echec à la lecture des POMs 
hudson.util.IOException2: remote file operation failed: C:\hudson\workspace\Autocat at [email protected]:ndx-PC-winXP 
    at hudson.FilePath.act(FilePath.java:752) 
    at hudson.FilePath.act(FilePath.java:738) 
    at hudson.maven.MavenModuleSetBuild$RunnerImpl.parsePoms(MavenModuleSetBuild.java:817) 
    at hudson.maven.MavenModuleSetBuild$RunnerImpl.doRun(MavenModuleSetBuild.java:617) 
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:429) 
    at hudson.model.Run.run(Run.java:1374) 
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:467) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:145) 
Caused by: hudson.remoting.ProxyException: hudson.maven.MavenModuleSetBuild$MavenExecutionException: org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs: 
[FATAL] Non-resolvable parent POM: Failure to find fr.perigee.java:java-parent:pom:0.0.6 in http://tinkerpop.com/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of tinkerpop has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 3, column 10 

Tôi biết lỗi này là do định nghĩa xấu của kho chứa những đồ tạo tác, vì sử dụng kho lưu trữ được định nghĩa trong settings.xml. Vì vậy, câu hỏi của tôi là khá đơn giản: làm thế nào tôi có thể xác định tập tin settings.xml được sử dụng bởi một nô lệ Jenkins?

Trả lời

6

Như mọi khi, giải pháp đơn giản hơn tôi nghĩ là có thể.

slave Jenkins được cấu hình để được chạy bởi Người dùng hệ thống. Kết quả là, để nó sử dụng tệp settings.xml của tôi, tất cả những gì tôi phải làm là thay đổi người dùng liên quan của nó và sự cố đã biến mất!

20

Maven sử dụng cài đặt chung và tệp cài đặt người dùng. Nếu tệp cài đặt người dùng tồn tại, nó sẽ ghi đè tệp toàn cục.

Tìm kiếm toàn cầu được tìm thấy trong %M2_HOME%\conf\, trong khi người dùng ở số %HOME%\.m2\. Ở đây %HOME% có nghĩa là thư mục chính của bất kỳ người dùng nào đang chạy nô lệ Jenkins.

Vì vậy, giải pháp đơn giản nhất, giả sử có thể trong tình huống của bạn, chỉ cần sao chép tệp settings.xml đúng vào thư mục %HOME%\.m2\ trên máy phụ thuộc Jenkins. Ngoài ra, bạn có thể chỉ định tệp settings.xml tùy chỉnh trên dòng lệnh mvn bằng cách sử dụng tùy chọn --settings, vì vậy bạn có thể đặt tệp ở vị trí đã biết (ví dụ C:\) và sau đó yêu cầu Jenkins chuyển cài đặt sang Maven, một cái gì đó như --settings C:\settings.xml.

Ngoài việc tạo một người dùng Windows mới để chạy nô lệ Jenkins, bạn có thể dễ dàng biết nơi nó sẽ tìm kiếm các tệp cấu hình.

+1

Cảm ơn, tôi đã đặt dịch vụ nô lệ thành người dùng cục bộ và cài đặt.xml dưới C: /users/myuser/.m2/ cuối cùng đã được chọn. Bên cạnh đó: Với người dùng hệ thống mặc định và không có cài đặt nào khác, tệp settings.xml trong thư mục cài đặt maven được sử dụng. – Rob

1

Đối với tôi, công việc này có hiệu quả là sử dụng biến -Duser.home.

Tôi đã làm việc này! Tuy nhiên, thay vì nhập nó vào MAVEN_OPTS, trong màn hình cấu hình jenkins, tôi đã nhập nó dưới dạng biến cấp JVM vào máy chủ web của mình.

Đối với tôi, tôi đang sử dụng glassfish trên WinTell, thay vì tomcat. Glassfish bắt đầu dưới dạng dịch vụ cửa sổ. Về cơ bản đã nhập:

JVM tên biến: user.home giá trị JVM: /data/maven-2.2/jenkins

Sau đó, trong thư mục này /data/maven-2.2/jenkins chắc chắn rằng bạn có một bản sao của tệp settings.xml hợp lệ với thông tin proxy được nhập chính xác. Làm như vậy cho phép tôi tách riêng tập tin settings.xml cho các dịch vụ jenkins của tôi, xây dựng v. Đăng nhập tương tác.

Eric

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