Home

iOS - Continuous Integration with Github & Travis CI

Word count: 911 / Reading time: 6 min
2020/05/20 Share

#Continuous Integration (CI)

Continuous Integration là quá trình hợp nhất tất cả code của các thành viên trong bộ phận phát triển vào một source code chung, nó đảm bảo tất cả các code được đẩy lên không gây ra lỗi và không ảnh hưởng đến hệ thống hiện tại.

Mọi commit đều được hệ thống kiểm tra, và sẽ lập tức thông báo lỗi đến các thành viên trong team khi có lỗi. Quá trình kiểm tra sẽ được thực thi trên một server khác vì vậy các bạn có thể tiếp tục phát triển các tính năng mới, giúp rút ngắn được thời gian phát triển.

Nhìn chung hệ thống CI sẽ làm việc theo kich bản sau:

  • Bạn cấp quyền cho hệ thông CI truy cập vào repository trên github của dự án.
  • Khi có một commit mới, hệ thống CI sẽ pull code mới nhất về để build hoặc chạy test theo script đã config.
  • Khi quá trình build, testing hoàn tất CI sẽ gửi thông báo qua mail hoặc tool chat nào đó cho các member trong team, nếu xảy ra lỗi thì member đó phải fix đến khi build, testing thành công mới được merge.

#Travis CI (CI)

Travis CI được coi như là 1 CI server tool, nó hỗ trợ tất cả tính năng của CI, cho phép người dùng đăng nhập, link tới các repository để build cũng như run test…Travis CI có thể dễ dàng tích hợp với các kho lưu trữ biến như GitHub và Bitbucket, hỗ trợ miễn phí cho các public repository và yêu cầu trả phí đổi với các private repository.

  • Developer sẽ push code lên github
  • Thông qua webhooks, Travis CI sẽ biết được có code mới được commit, nó sẽ pull code đó về
  • Dựa vào file cấu hình .travis.ym travis sẽ tiến hành chạy và thông báo trở ngược lại cho người dùng.

Bỏ qua lý thuyết dài dòng, sau đây mình sẽ demo Travis CI với một public repository:

  1. Tạo một public repository :
  2. Truy cập vào trang chủ Travis-ci.com để tiến hành sign-up với Github

  3. Chọn các tuỳ chỉnh bạn mong muốn sau đó click Authorize travis-ci

  4. Sau khi đã active xong tài khoản Travis-ci, các public repository của bạn sẽ được link tới travis CI, bạn chọn repository tương ứng để chạy CI:
  5. First Travis Build: để có 1 travis-ci build đầu tiên bạn cần viết code test cho repository sau đó tạo file .travis.yml để tạo các kịch bản build.
  • Tại file TravisCIDemoTests.swift ta thêm đoạn code sau:

    1
    2
    3
    4
    func testExample() {
    let fail = false
    XCTAssertTrue(fail, "Test Demo")
    }
  • Tạo file .travis.yml, mở terminal cd vào thư mục của repository:

    1
    2
    touch .travis.yml
    open -a TextEdit .travis.yml
  • Tại file .travis.yml ta tạo các kịch bản build như sau:

    1
    2
    3
    4
    5
    6
    osx_image: xcode10.2
    language: swift
    os: osx
    xcode_project: TravisCIDemo.xcodeproj
    xcode_scheme: TravisCIDemo
    xcode_destination: platform=iOS Simulator,OS=12.2,name=iPhone X

osx_image: chỉ định version xcode.

language: ngôn ngữ build.

xcode_project: chỉ định xcode project build, nếu xử dụng cocoapod thì dùng với .xcworkspace.

xcode_scheme: chỉ định scheme build.

xcode_destination: chỉ định device va os version để build.

Ok tất cả đã đươc config, các bạn tiến hành push các thay đổi đó lên repository.

Kiểm tra tại travis CI ta thấy quá trình build đã được tiến hành và bị fail. Kiểm tra mail ta sẽ thấy một thông báo build CI fail như sau:?

Sửa lại code test cho đúng sau đó push code lên repository:

1
2
3
4
func testExample() {
let fail = true
XCTAssertTrue(fail, "Test Demo")
}

Kết quả là build đã thành công.

#Kết:

Chỉ với một số config cơ bản các bạn đã tích hợp thành công CI vào trong project. Mang đem rất nhiều lợi ích:

  • Phát hiện lỗi sớm
  • Tiết kiệm thời gian phát triển
  • Chủ động hơn trong công việc…
    Hi vọng bài viết có ích với mọi người.
CATALOG
  1. 1. #Continuous Integration (CI)
  2. 2. #Travis CI (CI)
  3. 3. #Kết: