2015-03-18 14 views
5

Tôi đang cố gắng thực hiện mvn release:prepare trên dự án nhiều mô-đun được lưu trữ trên máy chủ Gitlab.Maven và Gitlab: phát hành: chuẩn bị sử dụng sai URL SCM

Các pom.xml cho POM chủ của tôi chứa:

<scm> 
    <connection>scm:git:http://my-git-server.example.com/git/somebody/my-project.git</connection> 
    <url>http://my-git-server.example.com/git/somebody/my-project</url> 
</scm> 

Khi tôi làm mvn release:prepare -DautoVersionSubmodules=true, nó biên dịch tất cả mọi thứ và chạy thử nghiệm, nhưng sau đó không thành công với:

[INFO] Executing: /bin/sh -c cd /home/somebody/git/my-project && git tag -F /tmp/maven-scm-1594218362.commit my-project-1.0.0 
[INFO] Working directory: /home/somebody/git/my-project 
[INFO] Executing: /bin/sh -c cd /home/somebody/git/my-project && git push http://my-git-server.example.com/git/somebody my-project-1.0.0 
[INFO] Working directory: /home/somebody/git/my-project 
... 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare (default-cli) on project iwes-lib-master: Unable to tag SCM 
[ERROR] Provider message: 
[ERROR] The git-push command failed. 
[ERROR] Command output: 
[ERROR] fatal: repository 'http://my-git-server.example.com/git/somebody/' not found 
[ERROR] -> [Help 1] 

Vì vậy, nó là nói cho tôi sự maven-release-plugin cho rằng thư mục cha trong kho lưu trữ Git của tôi là kho lưu trữ.

Thêm developerConnection không giúp ích gì.

Khi cố gắng sử dụng SVN, nó không thành công với "Access Denied:

<scm> 
    <connection>scm:git:http://my-git-server.example.com/git/somebody/my-project.git</connection> 
    <developerConnection>ssh://[email protected]:10022/somebody/my-project.git</developerConnection> 
    <url>http://my-git-server.example.com/git/somebody/my-project</url> 
</scm> 

mang lại cho tôi:.

[INFO] Executing: /bin/sh -c cd /home/jra/Documents/git/my-project && git push ssh://[email protected]:10022/somebody my-project-master-1.0.0 
.... 
[ERROR] Access denied. 

Vì vậy, nó, một lần nữa, sử dụng thư mục cha

thế nào cách nào để buộc plugin phát hành sử dụng URL thực mà tôi nêu ở đó?

+0

Tôi không chắc liệu bạn có tìm được giải pháp hay không cũng làm việc cho bạn – OkieOth

Trả lời

1

EDIT: Các workaround tôi đề xuất ở đây không làm việc cho release:perform, trên thực tế, tôi đã không tìm thấy một giải pháp khả thi cho đến ngày hôm nay. Tôi hiện đang thực hiện việc phát hành theo cách thủ công như tôi sẽ mô tả bên dưới.

Tôi đã tìm hiểu thêm về vấn đề này và tôi nghĩ đó là lỗi. Tôi đã đệ đơn JIRA cho nó: MRELEASE-900

tôi đổ maven-release-plugin và bây giờ đang làm việc phát hành bằng tay theo cách sau (ví dụ: phát hành 1.3.0, phiên bản bản chụp là 1.3.0-SNAPSHOT):

  1. git checkout master && git pull chỉ để đảm bảo
  2. git checkout -b release-1.3 && git push -u origin release-1.3
  3. cd path/to/my/master/project
  4. mvn versions:set, tôi được yêu cầu phải xác định phiên bản mới cho 1.3.0-SNAPSHOT, tôi nhập 1.3.0
  5. git commit -a nên phiên bản mới sẽ được kiểm tra trong
  6. git tag release-1.3.0
  7. git push && git push --tags - Tại thời điểm này, có một thẻ release-1.3.0 tại các chi nhánh release-1.3 nơi tất cả các số phiên bản POM có liên quan 1.3.0
  8. git checkout master
  9. git merge release-1.3 - chưa cam kết, trước tiên tôi cập nhật các phiên bản.
  10. mvn versions:set, thiết lập phiên bản SNAPSHOT mới, theo ước của tôi, đây sẽ là 1.4.0-SNAPSHOT
  11. git commit -a
  12. git push

sau đó tôi có thể tạo một công việc Jenkins hoặc những gì tôi thích trên thẻ release-1.3.0 để xử lý bản phát hành.

- Cũ câu trả lời để tham khảo dưới đây -

Sau khi chọc xung quanh và cố gắng điều khác nhau, tôi đã thực hiện một số tiến bộ: Tôi phải để cho maven-release-Plugin nghĩ rằng my-project.git là một thư mục và thêm một giả tệp vào URL.

Các công trình sau đây:

<scm> 
    <connection>scm:git:http://my-git-server.example.com/git/somebody/my-project.git/.git</connection> 
    <developerConnection>scm:git:http://my-git-server.example.com/git/somebody/my-project.git/.git</developerConnection> 
    <url>http://my-git-server.example.com/git/somebody/my-project</url> 
</scm> 

Và cùng với tSSH:

<scm> 
    <connection>scm:git:http://my-git-server.example.com/git/somebody/my-project.git/.git</connection> 
    <developerConnection>ssh://[email protected]:10022/somebody/my-project.git/.git</developerConnection> 
    <url>http://my-git-server.example.com/git/somebody/my-project</url> 
</scm> 

Bây giờ release:prepare công trình, nhưng release:perform thất bại bởi vì họ muốn tải về từ ssh://[email protected]:10022/somebody/my-project.git/.git.

0

Tôi gặp vấn đề tương tự, trong trường hợp của tôi, plugin được đẩy lên từ xa pom được cập nhật với phiên bản chính xác nhưng khi cố gắng tạo thẻ không thành công vì nó cố gắng đẩy thẻ vào thư mục mẹ.

Đẩy để làm chủ các pom cập nhật với phiên bản đúng

git push [email protected]:parent/project.git refs/heads/master:refs/heads/master 

nhưng khi nó cố gắng để đẩy thẻ

push [email protected]:parent refs/tags/v1.46 

có một người nào đó giải quyết nó?

1

tôi chạy trong cùng một vấn đề với một cuộc gọi như thế

mvn deploy scm:tag 

Tôi đang sử dụng một cài đặt gitlab và nó cũng không cho phép các cuộc gọi như thế này

[INFO] Executing: /bin/sh -c cd /home/user/prog/gitlab/test-user_server && git tag -F /tmp/maven-scm-482134407.commit test-user_server-1.1-SNAPSHOT 
[INFO] Working directory: /home/user/prog/gitlab/test-user_server 
[INFO] Executing: /bin/sh -c cd /home/user/prog/gitlab/test-user_server && git push [email protected]:testplus/test-user_server.git refs/tags/test-user_server-1.1-SNAPSHOT 
[INFO] Working directory: /home/user/prog/gitlab/test-user_server 
[ERROR] Provider message: 
[ERROR] The git-push command failed. 
[ERROR] Command output: 
[ERROR] Permission denied, please try again. 

Vấn đề là thế này gọi

/bin/sh -c cd /home/user/prog/gitlab/test-user_server && git push [email protected]:testplus/test-user_server.git refs/tags/test-user_server-1.1-SNAPSHOT 

Nhưng cuộc gọi này không thực sự cần thiết, vì tôi bắt đầu mvn trong thư mục gốc của git repos của tôi itory. Thay vào đó, lệnh gọi dòng lệnh giống như lệnh bên dưới hoạt động.

git push origin refs/tags/test-user_server-1.1-SNAPSHOT

Vì vậy, tôi sửa đổi cấu hình scm của tôi bên trong pom.xml của tôi thành một chuỗi như sau và nó làm việc cho tôi như một say mê.

<scm> 
    <developerConnection>scm:git:origin</developerConnection> 
</scm> 

Tôi phát triển dưới hệ điều hành Linux và vì vậy tôi chưa thử nghiệm nếu nó hoạt động trên hệ thống Windows.

0

Như một số người đã nói, những cách giải quyết có thể làm cho giai đoạn chuẩn bị của bản phát hành nhưng không phải là giai đoạn thực hiện (trong trường hợp của tôi là nó). Cuối cùng tôi quản lý để có một phiên bản đầy đủ làm việc bằng cách tìm cách chính xác để nhập dữ liệu để đưa thẻ developperConnection:

<scm> 
    <developerConnection>scm:git:[email protected]:groupProject/project.git</developerConnection> 
    <tag>HEAD</tag> 
</scm> 

Nhiều định dạng URL khác đã được chấp nhận trong trường hợp của tôi, nhưng cuối cùng thất bại trong thực hiện hoặc chuẩn bị giai đoạn phát hành (ví dụ: git: ssh: // git @ gitlab ... chẳng hạn có vấn đề này). Tôi không biết liệu giải pháp này có dành riêng cho Gitlab hay có thể là dự án của tôi nhưng tôi đã dành rất nhiều thời gian để tìm giải pháp này ...

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