Yêu cầu Dec 13th, 2023 6:00 p.m. 154 0 2
  • 154 0 2
+2

Cấu hình pipeline trong jenkin để pull code php về?

Chia sẻ
  • 154 0 2

Chào các bạn!

Mình mới tìm hiểu jenkin để cấu hình CI/CD. Mình đang vướng tình huống như sau:

  • Jenkin cài trên server nội bộ A.
  • Code triển khai trên server nội bộ B.
  • Gitlab cài trên server nội bộ C.
  • Server A, B và C thông kết nối với nhau (sử dụng hệ điều hành Centos 7). Giờ cấu hình pipeline trong jenkin như thế nào để nhấn build thì pull code từ server C (gitlab) về server B (deploy code)?

P/s: mình mới tìm hiểu được jenkin và code deploy trên cùng 1 server (test ở window).

Cảm ơn các bạn!

2 CÂU TRẢ LỜI


Đã trả lời Dec 14th, 2023 4:11 a.m.
+1

Để cấu hình pipeline trong Jenkins để nhấn build thì pull code từ server C (gitlab) về server B (deploy code), bạn cần thực hiện các bước sau:

Tạo một pipeline mới trong Jenkins. Trong pipeline, thêm bước Git để lấy code từ GitLab. Trong bước Git, chỉ định URL của repository GitLab và tên của branch mà bạn muốn lấy. Thêm bước Deploy để triển khai code trên server B. Trong bước Deploy, chỉ định lệnh mà bạn muốn chạy để triển khai code. Ví dụ, pipeline sau sẽ lấy code từ repository GitLab có tên my-project trên branch master và triển khai code trên server B bằng lệnh git pull origin master && make deploy:

pipeline {

agent any stages {

stage('Git') {

  steps {

    git(url: 'https://gitlab.com/my-user/my-project.git', branch: 'master')
  }
}
stage('Deploy') {

  steps {

    sh 'git pull origin master && make deploy'
  }
}

} }

Để chạy pipeline, bạn có thể nhấn nút Build Now trên trang pipeline.

Chi tiết về cách cấu hình từng bước trong pipeline như sau:

Bước 1: Tạo một pipeline mới trong Jenkins

Để tạo một pipeline mới, bạn có thể nhấp vào nút New Item trên trang Jenkins và chọn Pipeline.

Bước 2: Trong pipeline, thêm bước Git để lấy code từ GitLab

Để thêm bước Git, bạn có thể nhấp vào nút Add Stage và chọn Git.

Trong bước Git, bạn cần chỉ định URL của repository GitLab và tên của branch mà bạn muốn lấy.

Bước 3: Trong bước Git, chỉ định URL của repository GitLab và tên của branch mà bạn muốn lấy

Để chỉ định URL của repository GitLab, bạn có thể sử dụng biến GIT_URL.

Để chỉ định tên của branch, bạn có thể sử dụng biến GIT_BRANCH.

Ví dụ:

git(url: "env.GITURL",branch:"{env.GIT_URL}", branch: "{env.GIT_BRANCH}")

Bước 4: Thêm bước Deploy để triển khai code trên server B

Để thêm bước Deploy, bạn có thể nhấp vào nút Add Stage và chọn Deploy.

Trong bước Deploy, bạn cần chỉ định lệnh mà bạn muốn chạy để triển khai code.

Ví dụ:

sh 'git pull origin master && make deploy'

Bước 5: Chỉ định lệnh mà bạn muốn chạy để triển khai code

Lệnh mà bạn chạy trong bước Deploy sẽ phụ thuộc vào cách bạn triển khai code của mình.

Ví dụ, nếu bạn triển khai code bằng Docker, bạn có thể sử dụng lệnh sau:

docker build -t my-app .

docker run -d -p 8080:8080 my-app

Hy vọng hướng dẫn này sẽ giúp bạn cấu hình pipeline trong Jenkins để nhấn build thì pull code từ server C (gitlab) về server B (deploy code).

Chia sẻ
Dec 16th, 2023 3:49 a.m.

Cảm ơn @dovannam115 ! Mình đang hiểu hướng dẫn của bạn là server cài jenkin và server deploy là một nên trong cấu hình pipeline chỉ cần pull code từ gitlab về là được. Do cùng server nên các câu lệnh khai báo trong pipeline sẽ thực hiện bình thường.

Nhưng mình đang bị vướng ở chỗ: server cài jenkin khác server deploy code thì trong cấu hình pipeline viết gì?

Avatar Nam Do @dovannam115
Dec 20th, 2023 7:58 a.m.

Đúng vậy, nếu server cài Jenkins và server deploy là một thì trong cấu hình pipeline chỉ cần pull code từ GitLab về là được. Do cùng server nên các câu lệnh khai báo trong pipeline sẽ thực hiện bình thường.

Nếu server cài Jenkins khác server deploy code, thì trong cấu hình pipeline cần thêm bước copy hoặc upload code từ server cài Jenkins lên server deploy.

Ví dụ, nếu server cài Jenkins có địa chỉ IP là 192.168.1.10, server deploy có địa chỉ IP là 192.168.1.20, thì bạn có thể thêm bước copy code như sau:

pipeline {

agent any

stages {

stage('Git') {

  steps {

    git(url: 'https://gitlab.com/my-user/my-project.git', branch: 'master')
  }
}
stage('Deploy') {
  steps {
    sh 'scp -r $WORKSPACE/* root@192.168.1.20:/var/www/html'
  }
}

} }

Trong bước Deploy, câu lệnh scp -r $WORKSPACE/* root@192.168.1.20:/var/www/html sẽ copy tất cả các file trong workspace của Jenkins lên server deploy có địa chỉ IP là 192.168.1.20, vào thư mục /var/www/html.

Ngoài ra, bạn cũng có thể sử dụng các công cụ khác để copy hoặc upload code, chẳng hạn như FTP, SFTP, rsync, v.v.

Dưới đây là một số lưu ý khi cấu hình pipeline cho trường hợp server cài Jenkins khác server deploy:

  • Đảm bảo rằng server cài Jenkins có quyền truy cập vào server deploy.
  • Đảm bảo rằng server deploy có đủ không gian lưu trữ để chứa code.
  • Đảm bảo rằng server deploy có các quyền cần thiết để thực thi các câu lệnh khai báo trong pipeline.

Chúc bạn thành công!

Đã trả lời Jan 26th, 5:35 a.m.
0

Bạn tìm hiểu về kỹ thuật theo keyword using-agent hoặc agents and distributed builds trong jenkins để deploy với các server khác nhau với jenkins.

Link bài viết using-agent: https://www.jenkins.io/doc/book/using/using-agents/

Khóa học thì mình theo bên linkedin learning về agents and distributed builds: Jenkins Essential Training - tác giả Michael Jenkins bạn có thể tham khảo

Chúc bạn thành công

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí