Friday, May 22, 2015

(CI) Hướng dẫn thiết lập Jenkins cho dự án về iOS trên GitHub

Thiết lập Jenkins cho dự án về iOS trên GitHub

Jenkins là một server continuous integration, theo mã nguồn mở vì thế bạn có thể dễ dàng sử dụng và tuỳ chỉnh theo ý bạn. Trang chủ của Jenkins tại đây.
Sau đây là hướng dẫn của mình khi bạn cài đặt Jenkins cho dự án về iOS trên Yosemite.

Cách cài đặt Jenkins:

Bạn vào trang chủ của Jenkins và download gói jenkins theo từng môi trường và cài đặt chúng trên máy của bạn:


Sau khi cài đặt gói jenkins này thành công sẽ tự động chạy jenkins với địa chỉ http://localhost:8080/ bạn có thể thay đổi lại trong config.
Mỗi lần khởi động máy thì jenkins sẽ tự động chạy, nếu jenkins không tự động chạy bạn có thể khởi động jenkins trong thư mục /Applications/Jenkins, bằng cách dùng lệnh khởi động app bằng java -jar.

Mặc định gói jenkins này chỉ chạy trên Java 6, vì thế trên Yosemite dùng Java 8 nên các bạn phải sửa nội dung file "jenkins-runner.sh" trong thư mục "/Library/Application\ Support/Jenkins/" như sau:
- Thêm đoạn này vào:
 export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"  
- Thay 2 dòng cuối file bằng những dòng sau:
 echo "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" $javaArgs -jar "$war" $args
 exec "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" $javaArgs -jar "$war" $args
Bạn có thể xem thêm tại đây.

Cách thiết lập thông tin user:

Sau khi cài xong jenkins thì hệ thống sẽ tự động thêm user jenkins vào vì thế bạn cần cài đặt user đó để có thể thiết lập và chạy dễ dàng.
Bạn mở System References -> Users & Groups. User jenkins có tên là rỗng, vì thế bạn chọn tên user với tên trống đó thay đổi password và avatar cho chúng dễ nhìn.

Sau đó bạn login vào hệ thống theo account jenkins.

- Bạn mở terminal lên và chạy những đoạn lệnh sau:
+ Thiết lập quyền Admin cho user Jenkins:
 sudo dseditgroup -o edit -a jenkins -t user admin

+ Thêm user Jenkins vào nhóm Developer:
 sudo dscl . append /Groups/_developer GroupMembership jenkins

+ Thiết lập tự động login vào user Jenkins (Optional):
 System Preferences > Users & Groups > Login Options > Automatic Login > set to Jenkins > restart CI machine // you should now be logged in as Jenkins

+ Di chuyển file "org.jenkins-ci.plist" từ thư mục"LaunchDaemon" qua thư mục "LaunchAgent" (Optional):
 sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
 mv /Library/LaunchDaemons/org.jenkins-ci.plist /Library/LaunchAgents/
 sudo launchctl load /Library/LaunchAgents/org.jenkins-ci.plist

+ Hiện tại những thiết lập như trên là bạn đang config cho user jenkins. Nếu bạn muốn thiết lập cho user hiện tại bạn đang sử dụng thì thực hiện sửa thông tin trong file "org.jenkins-ci.plist". Lệnh mở file thông qua lệnh sau (Optional):
sudo vim /Library/LaunchAgents/org.jenkins-ci.plist
Nội dung thay đổi như sau:
Sau khi sửa xong bạn lưu lại và dùng lệnh "sudo launchctl unload" và "sudo launchctl load" để load lại thông tin thiết lập mới. Sau đó khởi động lại jenkins.

Cách thiết lập thông số cho Jenkins:

Đầu tiên bạn cần phải cài những plugin cho Jenkins như Github pluginXCode plugin. Bạn chọn tab Manage Jenkins -> Manage Plugins:

Trong màn hình này bạn chon tab 'Avaiable' và ô Filter bạn nhập tên plugin bạn muốn cài đặt vào đó:

Sau khi cài đặt xong bạn nên khởi động lại jenkins và vào trong màn hình "Configure System" để kiểm tra xem XCode plugin có cài thành công hay chưa:
Nếu bạn thấy như hình trên tức là bạn đã cài thành công.

Những plugin hữu ích khi dùng jenkins:
- HTML Publisher plugin: Dùng để thiết lập đường dẫn đến file report của code coverage.
- Cocoapobs plugin: Dùng lệnh cocoapobs trên project.
- MobileCloudThe MobileCloud for Jenkins plugin enables  mobile apps to automatically upload from within the Jenkins build “job” to the MobileCloud Platform, where the app is installed on real mobile devices. It then launches a pre-defined Perfecto Mobile script and generates a detailed report, allowing developers to get early warnings of bugs and correct them prior to the QA stage. By using the MobileCloud Jenkins plugin, organizations can streamline the release cycle by delivering more mature and robust mobile apps to QA for a full mobile application test cycle (functional, performance, UI  testing).


Cách thiết lập dự án iOS trên Github với Jenkins:

Đầu tiên bạn phải có dự án đã được tải lên github. Mình đã có sẵn project, trong bài hướng dẫn code coverage mình viết để làm demo cho bài này. Vì thế mình có thể chạy luôn code coverage trên Jenkins.

Bạn vào màn hình trang chủ jenkins trên localhost, chọn 'New Item' sẽ ra màn hình như sau:
Tại đây bạn nhập tên dự án vào ô 'Item name' và chọp option 'Freestyle project', sau đó nhấn OK. Sau đó sẽ tự động vào màn hình configure để bạn thiết lập cho project này.

Bạn kéo xuống phần Source Code Management, bạn chọn theo Git. Ô Repository URL, bạn có thể nhập url source theo https hay ssh, ở đây mình dùng theo ssh. Sau đó nhấn vào nút Add để thêm key ssh vào đây (bạn có thể nhập theo username và password). Những thông số còn lại để theo mặc định:

Tiếp theo đó bạn kéo xuống phần Build. Nhấn Add build step -> Execute shell sẽ ra màn hình như sau:
Do trong project này mình có viết 1 đoạn script để build và chạy code coverage trong project do đó mình viết shell này để chạy file script đó như sau:
 cd DemoCodeCoverage
 sh build.sh
 open build/reports/coverage/index.html
Sau khi build và chạy code coverage xong mình sẽ tự động mở file html đó bằng câu lệnh shell là open.

Khi config xong hết, bạn nhấp ApplySave. Bạn sẽ ra màn hình của project đó bạn nhấn vào nút Build Now, để jenkins chạy project của bạn. Sau khi chạy xong thành công thì sẽ xuất hiện màn hình như sau:
Trong phần Build History thể hiện trạng thái của bản build này là thành công hay thất bại. Màu xanh dương là thành công, màu đỏ là thất bại. Nếu bạn build bị error hay bạn muốn xem jenkins chạy những gì thì bạn có thể vào trong Console để xem. Bạn nhấn vào từng bản build trong Build History -> Console Output
Bạn có thể thiết lập những tool để kiểm tra chất lượng code trên Jenkins tại đây.

Thế là mình đã config xong. Chúc các bạn thành công.

Công cụ dùng để viết: XCode 6.3, iOS 8.3

Những tài liệu hướng dẫn trên môi trường khác:


Tài liệu tham khảo:

- JENKINS OSX Installer
- JENKINS Starting and Accessing
- JenkinsCI-iOS
- ios-ci-jenkins
- Objective-C-CPD-Language

1 comment:

  1. Chào bạn, mình đang nghiên cứu về đề tài jenkins này.
    Mình đã làm theo các step trên hướng dẫn nhưng không hiểu sao lúc run lại failed hoặc bị đứng.
    không biết bạn có thể giúp mình được không? Cám ơn

    ReplyDelete

Note: Only a member of this blog may post a comment.