Python có thể được sử dụng để tích hợp không?

Khi tự viết mã, ưu tiên duy nhất là làm cho nó hoạt động. Tuy nhiên, làm việc trong một nhóm các nhà phát triển phần mềm chuyên nghiệp mang đến vô số thách thức. Một trong những thách thức đó là phối hợp nhiều người làm việc trên cùng một mã

Làm thế nào để các nhóm chuyên nghiệp thực hiện hàng chục thay đổi mỗi ngày trong khi vẫn đảm bảo mọi người đều phối hợp nhịp nhàng và không có gì bị hỏng?

Trong hướng dẫn này, bạn sẽ

  • Tìm hiểu các khái niệm cốt lõi đằng sau tích hợp liên tục
  • Hiểu lợi ích của tích hợp liên tục
  • Thiết lập một hệ thống tích hợp liên tục cơ bản
  • Tạo một ví dụ Python đơn giản và kết nối nó với hệ thống tích hợp liên tục

Tiền thưởng miễn phí. 5 Suy nghĩ về Làm chủ Python, một khóa học miễn phí dành cho các nhà phát triển Python cho bạn thấy lộ trình và tư duy mà bạn sẽ cần để đưa các kỹ năng Python của mình lên một tầm cao mới

Tích hợp liên tục là gì?

Tích hợp liên tục [CI] là thực hành xây dựng và kiểm tra thường xuyên từng thay đổi được thực hiện đối với mã của bạn một cách tự động và sớm nhất có thể. Nhà phát triển và tác giả nổi tiếng Martin Fowler định nghĩa CI như sau

“Tích hợp liên tục là một phương pháp phát triển phần mềm trong đó các thành viên trong nhóm tích hợp công việc của họ thường xuyên, thông thường mỗi người tích hợp ít nhất hàng ngày - dẫn đến nhiều lần tích hợp mỗi ngày. Mỗi tích hợp được xác minh bằng một bản dựng tự động [bao gồm cả thử nghiệm] để phát hiện lỗi tích hợp nhanh nhất có thể. " [Nguồn]

Hãy giải nén cái này

Lập trình là lặp đi lặp lại. Mã nguồn tồn tại trong một kho lưu trữ được chia sẻ bởi tất cả các thành viên trong nhóm. Nếu bạn muốn làm việc trên sản phẩm đó, bạn phải có một bản sao. Bạn sẽ thực hiện các thay đổi, kiểm tra và tích hợp chúng trở lại repo chính. Rửa sạch và lặp lại

Cách đây không lâu, những tích hợp này rất lớn và cách nhau hàng tuần [hoặc hàng tháng], gây đau đầu, lãng phí thời gian và mất tiền. Được trang bị kinh nghiệm, các nhà phát triển bắt đầu thực hiện những thay đổi nhỏ và tích hợp chúng thường xuyên hơn. Điều này làm giảm khả năng gây ra xung đột mà bạn cần giải quyết sau này

Sau mỗi lần tích hợp, bạn cần xây dựng mã nguồn. Xây dựng có nghĩa là chuyển đổi mã cấp cao của bạn sang định dạng mà máy tính của bạn biết cách chạy. Cuối cùng, kết quả được kiểm tra một cách có hệ thống để đảm bảo các thay đổi của bạn không gây ra lỗi

Loại bỏ các quảng cáo

Tại sao tôi nên quan tâm?

Ở cấp độ cá nhân, tích hợp liên tục thực sự là về cách bạn và đồng nghiệp sử dụng thời gian của mình

Sử dụng CI, bạn sẽ tốn ít thời gian hơn

  • Lo lắng về việc giới thiệu một lỗi mỗi khi bạn thực hiện thay đổi
  • Sửa lỗi do người khác gây ra để bạn có thể tích hợp mã của mình
  • Đảm bảo mã hoạt động trên mọi máy, hệ điều hành và trình duyệt

Ngược lại, bạn sẽ dành nhiều thời gian hơn

  • Giải quyết các vấn đề thú vị
  • Viết mã tuyệt vời với nhóm của bạn
  • Cùng tạo ra những sản phẩm tuyệt vời mang lại giá trị cho người dùng

Nghe như thế nào?

Ở cấp độ nhóm, nó tạo ra một nền văn hóa kỹ thuật tốt hơn, nơi bạn mang lại giá trị sớm và thường xuyên. Cộng tác được khuyến khích và các lỗi được phát hiện sớm hơn nhiều. Tích hợp liên tục sẽ

  • Giúp bạn và nhóm của bạn nhanh hơn
  • Giúp bạn tự tin rằng bạn đang xây dựng phần mềm ổn định với ít lỗi hơn
  • Đảm bảo rằng sản phẩm của bạn hoạt động trên các máy khác, không chỉ máy tính xách tay của bạn
  • Loại bỏ rất nhiều chi phí tẻ nhạt và cho phép bạn tập trung vào những gì quan trọng
  • Giảm thời gian giải quyết xung đột [khi những người khác nhau sửa đổi cùng một mã]

Khái niệm cốt lõi

Có một số ý tưởng và thực tiễn chính mà bạn cần hiểu để hoạt động hiệu quả với tích hợp liên tục. Ngoài ra, có thể có một số từ và cụm từ bạn không quen thuộc nhưng lại được sử dụng thường xuyên khi nói về CI. Chương này sẽ giới thiệu cho bạn những khái niệm này và biệt ngữ đi kèm với chúng

Kho lưu trữ nguồn đơn

Nếu bạn đang cộng tác với những người khác trên một cơ sở mã duy nhất, thông thường bạn sẽ có một kho lưu trữ mã nguồn được chia sẻ. Mọi nhà phát triển làm việc trong dự án đều tạo một bản sao cục bộ và thực hiện các thay đổi. Khi họ hài lòng với những thay đổi, họ sẽ hợp nhất chúng trở lại kho lưu trữ trung tâm

Việc sử dụng các hệ thống kiểm soát phiên bản [VCS] như Git đã trở thành tiêu chuẩn để xử lý quy trình công việc này cho bạn. Các nhóm thường sử dụng một dịch vụ bên ngoài để lưu trữ mã nguồn của họ và xử lý tất cả các phần chuyển động. Phổ biến nhất là GitHub, BitBucket và GitLab

Git cho phép bạn tạo nhiều nhánh của kho lưu trữ. Mỗi nhánh là một bản sao độc lập của mã nguồn và có thể được sửa đổi mà không ảnh hưởng đến các nhánh khác. Đây là một tính năng thiết yếu và hầu hết các nhóm đều có một nhánh chính [thường được gọi là nhánh chính] đại diện cho trạng thái hiện tại của dự án

Nếu bạn muốn thêm hoặc sửa đổi mã, bạn nên tạo một bản sao của nhánh chính và làm việc trong nhánh phát triển mới của mình. Khi bạn đã hoàn tất, hãy hợp nhất những thay đổi đó trở lại nhánh chính

phân nhánh Git

Kiểm soát phiên bản không chỉ chứa mã. Tài liệu và kịch bản thử nghiệm thường được lưu trữ cùng với mã nguồn. Một số chương trình tìm kiếm các tệp bên ngoài được sử dụng để định cấu hình các tham số và cài đặt ban đầu của chúng. Các ứng dụng khác cần lược đồ cơ sở dữ liệu. Tất cả các tệp này sẽ được đưa vào kho lưu trữ của bạn

Nếu bạn chưa bao giờ sử dụng Git hoặc cần ôn lại, hãy xem phần Giới thiệu về Git và GitHub dành cho Nhà phát triển Python của chúng tôi

Tự động hóa bản dựng

Như đã đề cập trước đó, xây dựng mã của bạn có nghĩa là lấy mã nguồn thô và mọi thứ cần thiết để thực thi mã đó và dịch mã đó sang định dạng mà máy tính có thể chạy trực tiếp. Python là một ngôn ngữ thông dịch, vì vậy “bản dựng” của nó chủ yếu xoay quanh việc thực thi thử nghiệm hơn là biên dịch

Chạy các bước đó theo cách thủ công sau mỗi thay đổi nhỏ rất tẻ nhạt và tốn thời gian quý báu cũng như sự chú ý từ việc giải quyết vấn đề thực tế mà bạn đang cố gắng thực hiện. Một phần quan trọng của tích hợp liên tục là tự động hóa quy trình đó và đưa nó ra khỏi tầm mắt [và ra khỏi tâm trí]

Điều đó có ý nghĩa gì đối với Python? . Nếu bạn đã sử dụng thư viện, gói hoặc khung không đi kèm với thư viện chuẩn của Python [hãy nghĩ đến bất kỳ thứ gì bạn cần để cài đặt với

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
5 hoặc
"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
6], thì Python cần biết về điều đó để chương trình biết nơi cần tìm khi tìm thấy

Bạn lưu trữ danh sách các gói đó trong

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
7 hoặc Pipfile. Đây là những phần phụ thuộc vào mã của bạn và cần thiết để xây dựng thành công

Bạn sẽ thường nghe cụm từ “phá công trình. ” Khi bạn phá vỡ bản dựng, điều đó có nghĩa là bạn đã tạo ra một thay đổi khiến sản phẩm cuối cùng không sử dụng được. Đừng lo. Nó xảy ra với tất cả mọi người, ngay cả những nhà phát triển cấp cao dày dặn kinh nghiệm trận chiến. Bạn muốn tránh điều này chủ yếu vì nó sẽ cản trở những người khác làm việc

Toàn bộ quan điểm của CI là để mọi người làm việc trên một cơ sở ổn định đã biết. Nếu họ sao chép một kho lưu trữ đang phá vỡ bản dựng, thì họ sẽ làm việc với một phiên bản mã bị hỏng và sẽ không thể giới thiệu hoặc kiểm tra các thay đổi của họ. Khi bạn làm hỏng bản dựng, ưu tiên hàng đầu là sửa nó để mọi người có thể tiếp tục công việc

Giới thiệu một thay đổi đột phá cho nhánh chính

Khi quá trình xây dựng được tự động hóa, bạn nên cam kết thường xuyên, thường là nhiều lần mỗi ngày. Nó cho phép mọi người nhanh chóng tìm hiểu về các thay đổi và thông báo nếu có xung đột giữa hai nhà phát triển. Nếu có nhiều thay đổi nhỏ thay vì một vài cập nhật lớn, thì việc xác định lỗi bắt nguồn từ đâu sẽ dễ dàng hơn nhiều. Nó cũng sẽ khuyến khích bạn chia công việc của mình thành các phần nhỏ hơn, dễ theo dõi và kiểm tra hơn.

Loại bỏ các quảng cáo

Kiểm tra tự động

Vì mọi người đang cam kết thay đổi nhiều lần mỗi ngày, điều quan trọng cần biết là thay đổi của bạn không vi phạm bất kỳ điều gì khác trong mã hoặc gây ra lỗi. Ở nhiều công ty, kiểm thử giờ đây là trách nhiệm của mọi nhà phát triển. Nếu bạn viết mã, bạn nên viết bài kiểm tra. Ở mức tối thiểu, bạn nên kiểm tra mọi chức năng mới bằng một bài kiểm tra đơn vị

Chạy thử nghiệm tự động, với mọi thay đổi được cam kết, là một cách tuyệt vời để bắt lỗi. Một thử nghiệm không thành công sẽ tự động khiến bản dựng bị lỗi. Nó sẽ thu hút sự chú ý của bạn đến các vấn đề được phát hiện khi thử nghiệm và bản dựng không thành công sẽ khiến bạn sửa lỗi mà bạn đã giới thiệu. Các bài kiểm tra không đảm bảo rằng mã của bạn không có lỗi, nhưng nó bảo vệ bạn trước rất nhiều thay đổi bất cẩn

Tự động thực hiện kiểm tra giúp bạn yên tâm hơn vì bạn biết máy chủ sẽ kiểm tra mã của bạn mỗi khi bạn cam kết, ngay cả khi bạn quên thực hiện cục bộ

Sử dụng Dịch vụ Tích hợp Liên tục Bên ngoài

Nếu một cái gì đó hoạt động trên máy tính của bạn, nó sẽ hoạt động trên mọi máy tính chứ? . Đó là một lời bào chữa sáo rỗng và một trò đùa nội bộ giữa các nhà phát triển để nói rằng, “Chà, nó đã hoạt động trên máy của tôi. ” Làm cho mã hoạt động cục bộ không phải là kết thúc trách nhiệm của bạn

Để giải quyết vấn đề này, hầu hết các công ty đều sử dụng dịch vụ bên ngoài để xử lý việc tích hợp, giống như sử dụng GitHub để lưu trữ kho lưu trữ mã nguồn của bạn. Các dịch vụ bên ngoài có các máy chủ để xây dựng mã và chạy thử nghiệm. Chúng hoạt động như màn hình cho kho lưu trữ của bạn và ngăn bất kỳ ai sáp nhập vào nhánh chính nếu những thay đổi của chúng phá vỡ quá trình xây dựng

Hợp nhất các thay đổi sẽ kích hoạt máy chủ CI

Có rất nhiều dịch vụ như vậy ngoài kia, với nhiều tính năng và giá cả khác nhau. Hầu hết đều có một bậc miễn phí để bạn có thể thử nghiệm với một trong các kho lưu trữ của mình. Bạn sẽ sử dụng một dịch vụ có tên là CircleCI trong một ví dụ ở phần sau của hướng dẫn

Thử nghiệm trong môi trường dàn dựng

Môi trường sản xuất là nơi cuối cùng phần mềm của bạn sẽ chạy. Ngay cả sau khi xây dựng và thử nghiệm thành công ứng dụng của bạn, bạn không thể chắc chắn rằng mã của mình sẽ hoạt động trên máy tính mục tiêu. Đó là lý do tại sao các nhóm triển khai sản phẩm cuối cùng trong môi trường bắt chước môi trường sản xuất. Khi bạn chắc chắn rằng mọi thứ hoạt động, ứng dụng sẽ được triển khai trong môi trường sản xuất

Ghi chú. Bước này phù hợp với mã ứng dụng hơn mã thư viện. Bất kỳ thư viện Python nào bạn viết vẫn cần được kiểm tra trên máy chủ bản dựng để đảm bảo chúng hoạt động trong các môi trường khác với máy tính cục bộ của bạn

Bạn sẽ nghe mọi người nói về bản sao của môi trường sản xuất này bằng các thuật ngữ như môi trường phát triển, môi trường dàn dựng hoặc môi trường thử nghiệm. Người ta thường sử dụng các từ viết tắt như DEV cho môi trường phát triển và PROD cho môi trường sản xuất

Môi trường phát triển nên sao chép các điều kiện sản xuất càng giống càng tốt. Thiết lập này thường được gọi là DEV/PROD chẵn lẻ. Giữ cho môi trường trên máy tính cục bộ của bạn giống với môi trường DEV và PROD nhất có thể để giảm thiểu sự bất thường khi triển khai ứng dụng

Thử nghiệm trong một bản sao của môi trường sản xuất

Chúng tôi đề cập đến điều này để giới thiệu cho bạn vốn từ vựng, nhưng việc triển khai liên tục phần mềm cho DEV và PROD lại là một chủ đề hoàn toàn khác. Quá trình này được gọi là triển khai liên tục [CD]. Bạn có thể tìm thêm tài nguyên về nó trong phần Các bước tiếp theo của bài viết này

Lượt của bạn

Cách tốt nhất để học là làm. Bây giờ bạn đã hiểu tất cả các thực tiễn thiết yếu của tích hợp liên tục, vì vậy đã đến lúc bắt tay vào tạo toàn bộ chuỗi các bước cần thiết để sử dụng CI. Chuỗi này thường được gọi là đường dẫn CI

Đây là hướng dẫn thực hành, vì vậy hãy kích hoạt trình soạn thảo của bạn và sẵn sàng thực hiện các bước này khi bạn đọc

Chúng tôi cho rằng bạn biết những điều cơ bản về Python và Git. Chúng tôi sẽ sử dụng Github làm dịch vụ lưu trữ và CircleCI làm dịch vụ tích hợp liên tục bên ngoài của chúng tôi. Nếu bạn không có tài khoản với các dịch vụ này, hãy tiếp tục và đăng ký. Cả hai đều có bậc miễn phí

Loại bỏ các quảng cáo

Định nghĩa vấn đề

Hãy nhớ rằng, trọng tâm của bạn ở đây là thêm một công cụ mới vào vành đai tiện ích của bạn, tích hợp liên tục. Đối với ví dụ này, bản thân mã Python sẽ đơn giản. Bạn muốn dành phần lớn thời gian để tiếp thu các bước xây dựng quy trình thay vì viết mã phức tạp

Hãy tưởng tượng nhóm của bạn đang làm việc trên một ứng dụng máy tính đơn giản. Nhiệm vụ của bạn là viết một thư viện các hàm toán học cơ bản. cộng, trừ, nhân và chia. Bạn không quan tâm đến ứng dụng thực tế, bởi vì đó là những gì đồng nghiệp của bạn sẽ phát triển, sử dụng các chức năng từ thư viện của bạn

Tạo một Repo

Đăng nhập vào tài khoản GitHub của bạn, tạo một kho lưu trữ mới và gọi nó là CalculatorLibrary. Thêm một README và. gitignore, sau đó sao chép kho lưu trữ vào máy cục bộ của bạn. Nếu bạn cần thêm trợ giúp về quy trình này, hãy xem hướng dẫn của GitHub về cách tạo kho lưu trữ mới

Thiết lập môi trường làm việc

Để những người khác [và máy chủ CI] sao chép các điều kiện làm việc của bạn, bạn cần thiết lập một môi trường. Tạo một môi trường ảo ở đâu đó bên ngoài repo của bạn và kích hoạt nó

$ # Create virtual environment
$ python3 -m venv calculator

$ # Activate virtual environment [Mac and Linux]
$ . calculator/bin/activate

Các lệnh trước hoạt động trên macOS và Linux. Nếu bạn là người dùng Windows, hãy kiểm tra bảng Nền tảng trong tài liệu chính thức. Thao tác này sẽ tạo một thư mục chứa bản cài đặt Python và yêu cầu trình thông dịch sử dụng nó. Bây giờ chúng tôi có thể cài đặt các gói biết rằng nó sẽ không ảnh hưởng đến cài đặt Python mặc định của hệ thống của bạn

Viết một ví dụ Python đơn giản

Tạo một tệp mới có tên là

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
8 trong thư mục cấp cao nhất của kho lưu trữ của bạn và sao chép đoạn mã sau

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term

Đây là một ví dụ cơ bản chứa hai trong số bốn chức năng chúng ta sẽ viết. Khi chúng tôi đã thiết lập và chạy đường dẫn CI của mình, bạn sẽ thêm hai chức năng còn lại

Hãy tiếp tục và cam kết những thay đổi đó

$ # Make sure you are in the correct directory
$ cd CalculatorLibrary
$ git add calculator.py
$ git commit -m "Add functions for addition and subtraction"

Thư mục CalculatorLibrary của bạn sẽ có các tệp sau ngay bây giờ

CalculatorLibrary/
|
├── .git
├── .gitignore
├── README.md
└── calculator.py

Tuyệt vời, bạn đã hoàn thành một phần chức năng được yêu cầu. Bước tiếp theo là thêm các bài kiểm tra để đảm bảo rằng mã của bạn hoạt động theo cách mà nó phải làm.

Viết bài kiểm tra đơn vị

Bạn sẽ kiểm tra mã của mình theo hai bước

Bước đầu tiên liên quan đến linting—chạy một chương trình, được gọi là kẻ nói dối, để phân tích mã cho các lỗi tiềm ẩn.

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
9 thường được sử dụng để kiểm tra xem mã của bạn có tuân theo kiểu viết mã Python tiêu chuẩn hay không. Linting đảm bảo mã của bạn dễ đọc đối với phần còn lại của cộng đồng Python

Bước thứ hai là thử nghiệm đơn vị. Một bài kiểm tra đơn vị được thiết kế để kiểm tra một chức năng hoặc đơn vị mã. Python đi kèm với một thư viện kiểm tra đơn vị tiêu chuẩn, nhưng các thư viện khác tồn tại và rất phổ biến. Ví dụ này sử dụng

$ # Make sure you are in the correct directory
$ cd CalculatorLibrary
$ git add calculator.py
$ git commit -m "Add functions for addition and subtraction"
0

Một tiêu chuẩn thực hành đi đôi với thử nghiệm là tính toán độ bao phủ của mã. Độ bao phủ của mã là phần trăm mã nguồn được “bao phủ” bởi các bài kiểm tra của bạn.

$ # Make sure you are in the correct directory
$ cd CalculatorLibrary
$ git add calculator.py
$ git commit -m "Add functions for addition and subtraction"
0 có phần mở rộng,
$ # Make sure you are in the correct directory
$ cd CalculatorLibrary
$ git add calculator.py
$ git commit -m "Add functions for addition and subtraction"
2, giúp bạn hiểu phạm vi mã của mình

Đây là những phụ thuộc bên ngoài và bạn cần cài đặt chúng

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
2

Đây là những gói bên ngoài duy nhất bạn sẽ sử dụng. Đảm bảo lưu trữ các phần phụ thuộc đó trong tệp

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
7 để những người khác có thể sao chép môi trường của bạn

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
4

Để chạy kẻ nói dối của bạn, hãy thực hiện như sau

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
5

Tùy chọn

$ # Make sure you are in the correct directory
$ cd CalculatorLibrary
$ git add calculator.py
$ git commit -m "Add functions for addition and subtraction"
4 cung cấp cho bạn thông tin tổng quan về số lần một lỗi cụ thể đã xảy ra. Ở đây chúng tôi có hai vi phạm PEP 8, vì
"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
9 mong đợi hai dòng trống trước định nghĩa hàm thay vì một. Hãy tiếp tục và thêm một dòng trống trước mỗi định nghĩa hàm. Chạy lại
"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
9 để kiểm tra xem các thông báo lỗi không còn xuất hiện nữa

Bây giờ là lúc để viết các bài kiểm tra. Tạo một tệp có tên

$ # Make sure you are in the correct directory
$ cd CalculatorLibrary
$ git add calculator.py
$ git commit -m "Add functions for addition and subtraction"
7 trong thư mục cấp cao nhất của kho lưu trữ của bạn và sao chép đoạn mã sau

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
0

Những thử nghiệm này đảm bảo rằng mã của chúng tôi hoạt động như mong đợi. Nó còn lâu mới mở rộng vì bạn chưa kiểm tra khả năng lạm dụng mã của mình, nhưng hiện tại hãy giữ cho nó đơn giản

Lệnh sau chạy thử nghiệm của bạn

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
1

$ # Make sure you are in the correct directory
$ cd CalculatorLibrary
$ git add calculator.py
$ git commit -m "Add functions for addition and subtraction"
0 xuất sắc trong khám phá thử nghiệm. Bởi vì bạn có một tệp có tiền tố
$ # Make sure you are in the correct directory
$ cd CalculatorLibrary
$ git add calculator.py
$ git commit -m "Add functions for addition and subtraction"
9, nên
$ # Make sure you are in the correct directory
$ cd CalculatorLibrary
$ git add calculator.py
$ git commit -m "Add functions for addition and subtraction"
0 biết rằng nó sẽ chứa các bài kiểm tra đơn vị để nó chạy. Các nguyên tắc tương tự áp dụng cho tên lớp và phương thức bên trong tệp

Cờ

CalculatorLibrary/
|
├── .git
├── .gitignore
├── README.md
└── calculator.py
1 cung cấp cho bạn đầu ra đẹp hơn, cho bạn biết bài kiểm tra nào đã vượt qua và bài kiểm tra nào không thành công. Trong trường hợp của chúng tôi, cả hai bài kiểm tra đều vượt qua. Cờ
CalculatorLibrary/
|
├── .git
├── .gitignore
├── README.md
└── calculator.py
2 đảm bảo rằng
$ # Make sure you are in the correct directory
$ cd CalculatorLibrary
$ git add calculator.py
$ git commit -m "Add functions for addition and subtraction"
2 chạy và cung cấp cho bạn báo cáo về phạm vi mã cho
"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
8

Bạn đã chuẩn bị xong. Cam kết tệp thử nghiệm và đẩy tất cả những thay đổi đó vào nhánh chính

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
9

Ở cuối phần này, thư mục CalculatorLibrary của bạn sẽ có các tệp sau

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
0

Tuyệt vời, cả hai chức năng của bạn đều đã được kiểm tra và hoạt động bình thường

Loại bỏ các quảng cáo

Kết nối với CircleCI

Cuối cùng, bạn đã sẵn sàng thiết lập quy trình tích hợp liên tục của mình

CircleCI cần biết cách chạy bản dựng của bạn và mong muốn thông tin đó được cung cấp ở một định dạng cụ thể. Nó yêu cầu một thư mục

CalculatorLibrary/
|
├── .git
├── .gitignore
├── README.md
└── calculator.py
5 trong repo của bạn và một tệp cấu hình bên trong nó. Tệp cấu hình chứa hướng dẫn cho tất cả các bước mà máy chủ bản dựng cần thực hiện. CircleCI hy vọng tệp này được gọi là
CalculatorLibrary/
|
├── .git
├── .gitignore
├── README.md
└── calculator.py
6

Tệp

CalculatorLibrary/
|
├── .git
├── .gitignore
├── README.md
└── calculator.py
7 sử dụng ngôn ngữ tuần tự hóa dữ liệu, YAML và có thông số kỹ thuật riêng. Mục tiêu của YAML là để con người có thể đọc được và hoạt động tốt với các ngôn ngữ lập trình hiện đại cho các tác vụ thông thường hàng ngày

Trong tệp YAML, có ba cách cơ bản để biểu diễn dữ liệu

  • Ánh xạ [cặp khóa-giá trị]
  • Trình tự [danh sách]
  • Vô hướng [chuỗi hoặc số]

Nó rất đơn giản để đọc

  • Thụt đầu dòng có thể được sử dụng cho cấu trúc
  • Dấu hai chấm tách các cặp khóa-giá trị
  • Dấu gạch ngang được sử dụng để tạo danh sách

Tạo thư mục

CalculatorLibrary/
|
├── .git
├── .gitignore
├── README.md
└── calculator.py
5 trong repo của bạn và tệp
CalculatorLibrary/
|
├── .git
├── .gitignore
├── README.md
└── calculator.py
6 với nội dung sau

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
1

Một số từ và khái niệm này có thể xa lạ với bạn. Ví dụ: Docker là gì và hình ảnh là gì?

Bạn có nhớ vấn đề mà các lập trình viên gặp phải khi thứ gì đó hoạt động trên máy tính xách tay của họ nhưng lại không hoạt động ở nơi nào khác không?

Một máy ảo giả vờ là toàn bộ máy tính của chính nó. Nó thậm chí sẽ có hệ điều hành riêng. Trên hệ điều hành đó, bạn triển khai ứng dụng hoặc cài đặt thư viện của mình và chạy thử

Các máy ảo chiếm rất nhiều tài nguyên, điều này đã khơi nguồn cho việc phát minh ra các thùng chứa. Ý tưởng tương tự như vận chuyển container. Trước khi container vận chuyển được phát minh, các nhà sản xuất phải vận chuyển hàng hóa với nhiều kích cỡ, bao bì và phương thức khác nhau [xe tải, tàu hỏa, tàu thủy]

Bằng cách tiêu chuẩn hóa container vận chuyển, những hàng hóa này có thể được chuyển giữa các phương thức vận chuyển khác nhau mà không có bất kỳ sửa đổi nào. Ý tưởng tương tự áp dụng cho các thùng chứa phần mềm

Bộ chứa là một đơn vị mã nhẹ và các phụ thuộc thời gian chạy của nó, được đóng gói theo cách tiêu chuẩn hóa, vì vậy chúng có thể nhanh chóng được cắm vào và chạy trên HĐH Linux. Bạn không cần phải tạo toàn bộ hệ điều hành ảo như với một máy ảo

Các bộ chứa chỉ sao chép các phần của hệ điều hành mà chúng cần để hoạt động. Điều này làm giảm kích thước của chúng và giúp chúng tăng hiệu suất lớn

Docker hiện là nền tảng container hàng đầu và thậm chí nó còn có thể chạy các container Linux trên Windows và macOS. Để tạo Docker container, bạn cần có Docker image. Hình ảnh cung cấp bản thiết kế cho vùng chứa giống như lớp cung cấp bản thiết kế cho đối tượng. Bạn có thể đọc thêm về Docker trong hướng dẫn Bắt đầu của họ

CircleCI duy trì hình ảnh Docker dựng sẵn cho một số ngôn ngữ lập trình. Trong tệp cấu hình trên, bạn đã chỉ định một hình ảnh Linux đã cài đặt sẵn Python. Hình ảnh đó sẽ tạo ra một vùng chứa trong đó mọi thứ khác xảy ra

Hãy xem lần lượt từng dòng của tệp cấu hình

  1. """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    20. Mọi
    CalculatorLibrary/
    |
    ├── .git
    ├── .gitignore
    ├── README.md
    └── calculator.py
    
    6 đều bắt đầu bằng số phiên bản CircleCI, được sử dụng để đưa ra cảnh báo về các thay đổi vi phạm

  2. """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    22. Các công việc đại diện cho một lần thực hiện bản dựng và được xác định bởi một tập hợp các bước. Nếu bạn chỉ có một công việc, nó phải được gọi là
    """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    23

  3. """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    23. Như đã đề cập trước đó,
    """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    23 là tên công việc của bạn. Bạn có thể có nhiều công việc, trong trường hợp đó chúng cần có tên duy nhất

  4. """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    26. Các bước của một công việc xảy ra trong một môi trường được gọi là người thi hành. Trình thực thi phổ biến trong CircleCI là bộ chứa Docker. Đó là môi trường thực thi được lưu trữ trên đám mây nhưng vẫn tồn tại các tùy chọn khác, chẳng hạn như môi trường macOS

  5. """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    27. Hình ảnh Docker là một tệp được sử dụng để tạo bộ chứa Docker đang chạy. Chúng tôi đang sử dụng một hình ảnh có Python 3. 7 cài sẵn

  6. """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    28. Kho lưu trữ của bạn phải được kiểm tra ở đâu đó trên máy chủ xây dựng. Thư mục làm việc đại diện cho đường dẫn tệp nơi kho lưu trữ sẽ được lưu trữ

  7. """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    29. Khóa này đánh dấu sự bắt đầu của danh sách các bước sẽ được thực hiện bởi máy chủ bản dựng

  8. """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    40. Bước đầu tiên máy chủ cần làm là kiểm tra mã nguồn ra thư mục làm việc. Điều này được thực hiện bởi một bước đặc biệt gọi là
    """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    40

  9. """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    42. Việc thực thi các chương trình hoặc lệnh dòng lệnh được thực hiện bên trong phím
    """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    43. Các lệnh shell thực tế sẽ được lồng trong

  10. """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    44. Giao diện người dùng CircleCI hiển thị cho bạn mọi bước xây dựng dưới dạng phần có thể mở rộng. Tiêu đề của phần được lấy từ giá trị được liên kết với khóa
    """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    44

  11. """
    Calculator library containing basic math operations.
    """
    
    def add[first_term, second_term]:
        return first_term + second_term
    
    def subtract[first_term, second_term]:
        return first_term - second_term
    
    43. Phím này đại diện cho lệnh chạy qua trình bao. Biểu tượng ________ 147 xác định rằng những gì tiếp theo là một tập lệnh theo nghĩa đen, mỗi lệnh một dòng, chính xác như bạn thấy trong tập lệnh shell/bash

Bạn có thể đọc tài liệu tham khảo cấu hình CircleCI để biết thêm thông tin

Quy trình của chúng tôi rất đơn giản và bao gồm 3 bước

  1. Kiểm tra kho lưu trữ
  2. Cài đặt các phụ thuộc trong môi trường ảo
  3. Chạy kẻ nói dối và kiểm tra trong khi ở trong môi trường ảo

Bây giờ chúng tôi có mọi thứ chúng tôi cần để bắt đầu đường ống của mình. Đăng nhập vào tài khoản CircleCI của bạn và nhấp vào Thêm dự án. Tìm repo CalculatorLibrary của bạn và nhấp vào Set Up Project. Chọn Python làm ngôn ngữ của bạn. Vì chúng tôi đã có một

CalculatorLibrary/
|
├── .git
├── .gitignore
├── README.md
└── calculator.py
6, chúng tôi có thể bỏ qua các bước tiếp theo và nhấp vào Bắt đầu xây dựng

CircleCI sẽ đưa bạn đến bảng điều khiển thực thi cho công việc của bạn. Nếu bạn làm theo tất cả các bước một cách chính xác, bạn sẽ thấy công việc của mình thành công

Phiên bản cuối cùng của thư mục CalculatorLibrary của bạn sẽ trông như thế này

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
2

Xin chúc mừng. Bạn đã tạo quy trình tích hợp liên tục đầu tiên của mình. Bây giờ, mỗi khi bạn đẩy đến nhánh chính, một công việc sẽ được kích hoạt. Bạn có thể xem danh sách các công việc hiện tại và trước đây của mình bằng cách nhấp vào Công việc trong thanh bên CircleCI

Loại bỏ các quảng cáo

Thực hiện thay đổi

Đã đến lúc thêm phép nhân vào thư viện máy tính của chúng tôi

Lần này, trước tiên chúng ta sẽ thêm một bài kiểm tra đơn vị mà không cần viết hàm. Không có mã, bài kiểm tra sẽ thất bại, điều này cũng sẽ khiến công việc CircleCI thất bại. Thêm đoạn mã sau vào cuối

$ # Make sure you are in the correct directory
$ cd CalculatorLibrary
$ git add calculator.py
$ git commit -m "Add functions for addition and subtraction"
7 của bạn

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
3

Đẩy mã vào nhánh chính và thấy công việc thất bại trong CircleCI. Điều này cho thấy rằng tích hợp liên tục hoạt động và theo dõi bạn nếu bạn mắc lỗi

Bây giờ hãy thêm mã vào

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
8 để vượt qua bài kiểm tra

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
4

Đảm bảo có hai khoảng trống giữa hàm nhân và hàm trước đó, nếu không mã của bạn sẽ không kiểm tra được kẻ nói dối

Công việc sẽ thành công lần này. Quy trình viết bài kiểm tra không đạt trước rồi thêm mã để vượt qua bài kiểm tra này được gọi là phát triển theo hướng kiểm tra [TDD]. Đó là một cách tuyệt vời để làm việc vì nó khiến bạn phải suy nghĩ trước về cấu trúc mã của mình

Bây giờ hãy thử nó một mình. Thêm một bài kiểm tra cho hàm chia, thấy nó không thành công và viết hàm để kiểm tra vượt qua

thông báo

Khi làm việc trên các ứng dụng lớn có nhiều bộ phận chuyển động, có thể mất một lúc để công việc tích hợp liên tục chạy. Hầu hết các nhóm thiết lập quy trình thông báo để cho họ biết nếu một trong các công việc của họ thất bại. Họ có thể tiếp tục làm việc trong khi chờ công việc chạy

Các tùy chọn phổ biến nhất là

  • Gửi email cho mỗi bản dựng không thành công
  • Gửi thông báo lỗi đến kênh Slack
  • Hiển thị lỗi trên bảng điều khiển hiển thị cho mọi người

Theo mặc định, CircleCI sẽ gửi cho bạn một email khi công việc không thành công

Bước tiếp theo

Bạn đã hiểu những kiến ​​thức cơ bản về tích hợp liên tục và thực hành thiết lập đường dẫn cho một chương trình Python đơn giản. Đây là một bước tiến lớn trong hành trình trở thành nhà phát triển của bạn. Bạn có thể tự hỏi mình, "Bây giờ thì sao?"

Để giữ cho mọi thứ đơn giản, hướng dẫn này lướt qua một số chủ đề lớn. Bạn có thể phát triển bộ kỹ năng của mình rất nhiều bằng cách dành thời gian tìm hiểu sâu hơn về từng chủ đề. Dưới đây là một số chủ đề bạn có thể xem xét thêm

Quy trình công việc Git

Còn nhiều điều về Git hơn những gì bạn đã sử dụng ở đây. Mỗi nhóm nhà phát triển có quy trình làm việc phù hợp với nhu cầu cụ thể của họ. Hầu hết trong số chúng bao gồm các chiến lược phân nhánh và một thứ gọi là đánh giá ngang hàng. Họ thực hiện các thay đổi trên các nhánh tách biệt với nhánh

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
51. Khi bạn muốn hợp nhất những thay đổi đó với
"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
51, các nhà phát triển khác trước tiên phải xem xét các thay đổi của bạn và phê duyệt chúng trước khi bạn được phép hợp nhất

Ghi chú. Nếu bạn muốn tìm hiểu thêm về các quy trình công việc khác nhau mà các nhóm sử dụng, hãy xem hướng dẫn trên GitHub và BitBucket

Nếu bạn muốn nâng cao kỹ năng Git của mình, chúng tôi có một bài viết tên là Mẹo Git nâng cao dành cho nhà phát triển Python

Loại bỏ các quảng cáo

Quản lý phụ thuộc và môi trường ảo

Ngoài

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
53, còn có các trình quản lý gói và môi trường phổ biến khác. Một số trong số chúng chỉ xử lý môi trường ảo, trong khi một số xử lý cả cài đặt gói và quản lý môi trường. Một trong số đó là Conda

“Conda là một hệ thống quản lý gói và hệ thống quản lý môi trường mã nguồn mở chạy trên Windows, macOS và Linux. Conda nhanh chóng cài đặt, chạy và cập nhật các gói và phần phụ thuộc của chúng. Conda dễ dàng tạo, lưu, tải và chuyển đổi giữa các môi trường trên máy tính cục bộ của bạn. Nó được thiết kế cho các chương trình Python, nhưng nó có thể đóng gói và phân phối phần mềm cho bất kỳ ngôn ngữ nào. " [Nguồn]

Một lựa chọn khác là Pipenv, một đối thủ trẻ đang ngày càng phổ biến trong giới phát triển ứng dụng. Pipenv tập hợp

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
5 và
"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
53 thành một công cụ duy nhất và sử dụng
"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
56 thay vì
"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
7. Pipfiles cung cấp môi trường xác định và bảo mật hơn. Phần giới thiệu này không công bằng, vì vậy hãy xem Pipenv. Hướng dẫn về Công cụ đóng gói Python mới

thử nghiệm

Các bài kiểm tra đơn vị đơn giản với

$ # Make sure you are in the correct directory
$ cd CalculatorLibrary
$ git add calculator.py
$ git commit -m "Add functions for addition and subtraction"
0 chỉ là phần nổi của tảng băng chìm. Có cả một thế giới ngoài kia để khám phá. Phần mềm có thể được kiểm thử ở nhiều cấp độ, bao gồm kiểm thử tích hợp, kiểm thử chấp nhận, kiểm thử hồi quy, v.v. Để nâng cao kiến ​​thức về kiểm tra mã Python của bạn, hãy xem phần Bắt đầu với kiểm tra bằng Python

bao bì

Trong phần hướng dẫn này, bạn đã bắt đầu xây dựng một thư viện hàm cho các nhà phát triển khác sử dụng trong dự án của họ. Bạn cần đóng gói thư viện đó thành một định dạng dễ phân phối và cài đặt bằng cách sử dụng, ví dụ như

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
5

Tạo gói có thể cài đặt yêu cầu bố cục khác và một số tệp bổ sung như

"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
00 và
"""
Calculator library containing basic math operations.
"""

def add[first_term, second_term]:
    return first_term + second_term

def subtract[first_term, second_term]:
    return first_term - second_term
01. Đọc bố cục ứng dụng Python. Tham khảo để biết thêm thông tin về cấu trúc mã của bạn

Để tìm hiểu cách biến kho lưu trữ của bạn thành gói Python có thể cài đặt, hãy đọc Dự án Python đóng gói của Cơ quan đóng gói Python

Hội nhập liên tục

Bạn đã trình bày tất cả kiến ​​thức cơ bản về CI trong hướng dẫn này, sử dụng một ví dụ đơn giản về mã Python. Thông thường, bước cuối cùng của quy trình CI là tạo một phần mềm có thể triển khai. Một tạo tác đại diện cho một đơn vị công việc đã hoàn thành, được đóng gói, sẵn sàng để triển khai cho người dùng hoặc được đưa vào các sản phẩm phức tạp

Ví dụ: để biến thư viện máy tính của bạn thành một tạo phẩm có thể triển khai, bạn sẽ tổ chức nó thành một gói có thể cài đặt. Cuối cùng, bạn sẽ thêm một bước trong CircleCI để đóng gói thư viện và lưu trữ tạo phẩm đó ở nơi các quy trình khác có thể lấy nó

Đối với các ứng dụng phức tạp hơn, bạn có thể tạo quy trình công việc để lên lịch và kết nối nhiều công việc CI thành một lần thực thi. Vui lòng khám phá tài liệu CircleCI

Triển khai liên tục

Bạn có thể coi việc triển khai liên tục như một phần mở rộng của CI. Sau khi mã của bạn được kiểm tra và tích hợp thành một tạo phẩm có thể triển khai, nó sẽ được triển khai vào sản xuất, nghĩa là ứng dụng trực tiếp được cập nhật với các thay đổi của bạn. Một trong những mục tiêu là giảm thiểu thời gian chờ đợi, thời gian trôi qua giữa lúc viết một dòng mã mới và đưa nó trước mặt người dùng

Ghi chú. Để thêm một chút nhầm lẫn vào bản phối, từ viết tắt CD không phải là duy nhất. Nó cũng có thể có nghĩa là Phân phối liên tục, gần giống như triển khai liên tục nhưng có bước xác minh thủ công giữa tích hợp và triển khai. Bạn có thể tích hợp mã của mình bất kỳ lúc nào nhưng phải nhấn một nút để phát hành mã đó vào ứng dụng trực tiếp

Hầu hết các công ty sử dụng CI/CD song song, vì vậy bạn nên dành thời gian để tìm hiểu thêm về Phân phối/Triển khai liên tục

Tổng quan về Dịch vụ tích hợp liên tục

Bạn đã sử dụng CircleCI, một trong những dịch vụ tích hợp liên tục phổ biến nhất. Tuy nhiên, đây là một thị trường lớn với rất nhiều đối thủ mạnh. Các sản phẩm CI được chia thành hai loại cơ bản. dịch vụ từ xa và tự lưu trữ

Jenkins là giải pháp tự lưu trữ phổ biến nhất. Nó là nguồn mở và linh hoạt, và cộng đồng đã phát triển rất nhiều tiện ích mở rộng

Về các dịch vụ từ xa, có nhiều tùy chọn phổ biến như TravisCI, CodeShip và Semaphore. Các doanh nghiệp lớn thường có các giải pháp tùy chỉnh và họ bán chúng dưới dạng dịch vụ, chẳng hạn như AWS CodePipeline, Microsoft Team Foundation Server và Oracle's Hudson

Tùy chọn bạn chọn tùy thuộc vào nền tảng và các tính năng mà bạn và nhóm của bạn cần. Để biết phân tích chi tiết hơn, hãy xem Phần mềm CI tốt nhất của G2Crowd

Loại bỏ các quảng cáo

Sự kết luận

Với kiến ​​thức từ hướng dẫn này, giờ đây bạn có thể trả lời các câu hỏi sau

  • Tích hợp liên tục là gì?
  • Tại sao tích hợp liên tục lại quan trọng?
  • Các thực hành cốt lõi của tích hợp liên tục là gì?
  • Làm cách nào tôi có thể thiết lập tích hợp liên tục cho dự án Python của mình?

Bạn đã có được một siêu năng lực lập trình. Hiểu triết lý và thực hành tích hợp liên tục sẽ giúp bạn trở thành thành viên có giá trị của bất kỳ nhóm nào. công việc tuyệt vời

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Tích hợp liên tục với Python

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Kristijan Ivancic

Này, tôi là Kristijan. Tôi là kỹ sư CV/ML và là thành viên của nhóm hướng dẫn Real Python

» Thông tin thêm về Kristijan

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Aldren

Brad

Joanna

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Python có tốt cho việc tích hợp không?

Python cung cấp hỗ trợ riêng cho C và có các giải pháp cực kỳ mạnh mẽ để tích hợp với các ngôn ngữ khác như C++, Java, Rust và Go . Có lẽ tính năng tốt nhất của Python khi tích hợp với các công nghệ hiện có là yếu tố “ngôn ngữ keo”.

Python có phải là ngôn ngữ tích hợp không?

Python về bản chất là một ngôn ngữ tích hợp . Điều này có nghĩa là trình thông dịch python thực thi mã từng dòng một. Không giống như các ngôn ngữ lập trình hướng đối tượng khác, chúng ta không cần biên dịch mã Python, do đó làm cho quá trình gỡ lỗi dễ dàng và hiệu quả hơn nhiều.

4 công dụng chính của Python là gì?

Python thường được sử dụng để phát triển trang web và phần mềm, tự động hóa tác vụ, phân tích dữ liệu và trực quan hóa dữ liệu . Vì tương đối dễ học, Python đã được nhiều người không phải là lập trình viên như kế toán và nhà khoa học áp dụng cho nhiều công việc hàng ngày, chẳng hạn như tổ chức tài chính.

Có thể tìm thấy sự tích hợp và sự khác biệt trong Python không?

Bây giờ bạn có thể tích hợp và phân biệt bằng Python . Các chức năng này có thể được sử dụng để kiểm tra lại công việc của bạn hoặc như một giải pháp nhanh chóng [chắc chắn kiểm tra lại toán học mặc dù. ].

Chủ Đề