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ã Show
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ẽ
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
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áoTạ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
Ngược lại, bạn sẽ dành nhiều thời gian hơn
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ẽ
Khái niệm cốt lõiCó 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 đơnNế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 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ựngNhư đã đề 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 5 hoặc 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 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ôngBạ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 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áoKiểm tra tự độngVì 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àiNế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 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ựngMô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 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ạnCá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ó
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ảnTạo một tệp mới có tên là 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
Đâ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 đó
Thư mục CalculatorLibrary của bạn sẽ có các tệp sau ngay bây giờ
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. 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 PythonBướ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 0Mộ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. 0 có phần mở rộng, 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 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 7 để những người khác có thể sao chép môi trường của bạn 4Để chạy kẻ nói dối của bạn, hãy thực hiện như sau 5Tùy chọn 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ì 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 9 để kiểm tra xem các thông báo lỗi không còn xuất hiện nữaBây giờ là lúc để viết các bài kiểm tra. Tạo một tệp có tên 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 0Nhữ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 1 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ố 9, nên 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ệpCờ 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ờ 2 đảm bảo rằng 2 chạy và cung cấp cho bạn báo cáo về phạm vi mã cho 8Bạ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 9Ở cuối phần này, thư mục CalculatorLibrary của bạn sẽ có các tệp sau 0Tuyệ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áoKết nối với CircleCICuố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 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à 6Tệp 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àyTrong tệp YAML, có ba cách cơ bản để biểu diễn dữ liệu
Nó rất đơn giản để đọc
Tạo thư mục 5 trong repo của bạn và tệp 6 với nội dung sau 1Mộ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
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
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 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ựngCircleCI 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 2Xin 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áoThự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 7 của bạn 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 8 để vượt qua bài kiểm tra 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áoKhi 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à
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 theoBạ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 GitCò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 51. Khi bạn muốn hợp nhất những thay đổi đó với 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ấtGhi 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áoQuản lý phụ thuộc và môi trường ảoNgoài 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
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 5 và 53 thành một công cụ duy nhất và sử dụng 56 thay vì 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ớithử nghiệmCác bài kiểm tra đơn vị đơn giản với 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 Pythonbao 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ư 5Tạ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ư 00 và 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ụcBạ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ụcBạ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ụcBạ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áoSự kết luậnVớ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
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ề KristijanMỗ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 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ẻ EmailBà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ù. ). |