2016-08-04 15 views
7

Tôi đang cố gắng tạo luồng công việc Jenkins bằng cách sử dụng một Jenkinsfile. Tất cả những gì tôi muốn làm là theo dõi nhánh 'phát triển' để thay đổi. Khi một thay đổi xảy ra, tôi muốn nó để git tag và hợp nhất để làm chủ. Tôi đang sử dụng GitSCM Bước nhưng điều duy nhất mà nó xuất hiện để hỗ trợ là git clone. Tôi không muốn phải ra ngoài để làm thẻ/hợp nhất nhưng tôi thấy không có cách nào xung quanh nó. Có ai biết nếu điều này là có thể? Tôi đang sử dụng BitBucket (on-prem) cho máy chủ Git của tôi.Có thể Git hợp nhất/đẩy bằng cách sử dụng đường ống Jenkins

Trả lời

13

Hiện tại, không thể vì plugin GitPublisher, plugin trước đây chịu trách nhiệm gắn thẻ/hợp nhất/đẩy vào công việc tự do, chưa được cập nhật để tương thích với đường ống Jenkins. Bạn có thể theo dõi vấn đề đó trên cả số pipeline plugins compatibility page và số GitPublisher Jira issue chuyên dụng. Vì vậy, có vẻ như tùy chọn duy nhất bạn có là thực sự bao gồm các lệnh gắn thẻ/hợp nhất của bạn ... Tuy nhiên, lưu ý rằng bạn vẫn có thể hưởng lợi từ một số khả năng tích hợp của Jenkins như sử dụng thông tin đăng nhập cho repo Git của bạn , làm cho nó khá đơn giản để sau đó gắn thẻ/hợp nhất theo nhu cầu của bạn.

Ví dụ ra trả phòng:

git url: "ssh://[email protected]:12345/your-git-project.git", 
    credentialsId: 'jenkins_ssh_key', 
    branch: develop 

Sau đó tag/merge/đẩy sẽ là khá đơn giản:

sh 'git tag -a tagName -m "Your tag comment"' 
sh 'git merge develop' 
sh 'git commit -am "Merged develop branch to master' 
sh "git push origin master" 

Tôi hy vọng rằng một ngày nào đó GitPublisher sẽ được phát hành trong một phiên bản đường ống tương thích , nhưng bây giờ cách giải quyết này nên làm.

+3

Thật sao? Khi tôi thử câu trả lời ở trên (bằng cách sử dụng chứng chỉ ssh chỉ sống ở trên) và cố gắng làm bất cứ điều gì liên lạc với điều khiển từ xa, tôi đã cho phép từ chối (công khai). ' nó có thể kiểm tra mã từ git như trên, nhưng thông tin đăng nhập không được lưu trữ –

+0

Hãy tiếp tục với vấn đề cụ thể của bạn về [câu hỏi dành riêng] của bạn (http://stackoverflow.com/q/39237910/702954) – Pom12

6

Nếu những gì bạn đang sau là những thông tin git bạn có thể sử dụng plugin SSH Agent như trong liên kết này: https://issues.jenkins-ci.org/browse/JENKINS-28335?focusedCommentId=260925&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-260925

sshagent(['git-credentials-id']) { 
    sh "git push origin master" 
} 
+0

điều này vẫn còn yêu cầu tên người dùng và mật khẩu – vinay

+0

Hãy chắc chắn rằng bạn đã đăng nhập thông qua SSH kích hoạt trên git của bạn và bạn đã thêm các khóa SSH chính xác để Jenkins của bạn.Điều này đã làm việc cho tôi và 6 người khác mà không cần bất kỳ cấu hình bổ sung nào. –

0

Trong trường hợp của tôi, tôi đã buộc phải làm việc với HTTPS. Tôi đã giải quyết nó bằng cách:

  1. Tạo thông tin đăng nhập tên người dùng/mật khẩu bitbucketUsernamePassword.
  2. Sử dụng thông tin xác thực đó để thanh toán.
  3. Đặt thông tin xác thực.helper trước khi thanh toán.
  4. Làm chi nhánh thanh toán git để nhận điều khiển từ xa theo dõi chi nhánh tại địa phương.

Sau đó, tôi có thể đẩy mọi thứ với git push sau đó.

Như thế này:

sh 'git config --global credential.helper cache' 
sh 'git config --global push.default simple' 

checkout([ 
    $class: 'GitSCM', 
    branches: [[name: branch]], 
    extensions: [ 
     [$class: 'CloneOption', noTags: true, reference: '', shallow: true] 
    ], 
    submoduleCfg: [], 
    userRemoteConfigs: [ 
     [ credentialsId: 'bitbucketUsernamePassword', url: cloneUrl] 
    ] 
]) 
sh "git checkout ${branch}" //To get a local branch tracking remote 

Sau đó, tôi có thể làm những việc như:

sh 'git push' 
Các vấn đề liên quan