CIRCLECI LÀ GÌ

Bài viết gốc làm việc blog của mình: https://chienkira.github.io/blog/posts/%C3%A1p-d%E1%BB%A5ng-circle-ci/

Lúc đầu trang blog này bản thân định deploy bằng tay do nó đơn giản và dễ dàng, thao tác cũng chẳng bao gồm gì - chạy loại shell script kết thúc trong nháy đôi mắt thôi. Nhưng cơ mà tuần này chưa tồn tại gì tuyệt ho để viết buộc phải mình đưa ra quyết định thiết đặt CI cho em nó rồi đem ý để viết bài xích này ra mắt về CI luôn.

Bạn đang xem: Circleci là gì

Giới thiệu CI cùng Circle CI

CI

CI viết tắt của Continuous Integration (Tích vừa lòng liên tục)Trong các bước làm phần mềm, tội vạ lớn số 1 rất có thể xảy ra không phải là khi developer code ra vật gì tởm lợm! Ta biết nó tởm lợm, ta sửa lại nó vậy là kết thúc. Nhưng một thao tác sai cho dù bé dại trong lúc deloy có thể dẫn cho tai nạn khó lường. Không bao gồm nhì em gái như thế nào xinh đồng nhất được nhau :)) tương tự như vậy không tồn tại gì bảo vệ rằng trong hàng chục ngàn hàng vạn lần các bạn triển khai deploy, không có một tội vạ làm việc như thế nào xẩy ra.

Vì lý vì thế, đơn vị bên tín đồ người tìm hiểu một phương thức triển khai phần mềm ưu việt hơn. Với điểm mạnh là an toàn hơn, quy trình lại được auto hóa, CI (cùng cả CD nữa) đang là xu thay thực sự. Nói mang lại trên đây thì cũng chưa thể rõ CI thực tiễn nó là cái gì cả phải ko ạ? CI nó giống hệt như phong cách design pattern là định hướng thôi vận dụng nó ra làm sao quan trọng cùng với ta rộng. Vậy buộc phải bản thân vẫn phân tích và lý giải tiếp thông qua việc giới thiệu tool Circle CI nghỉ ngơi tức thì bên dưới nhé.

Circle CI

Nhỏng làm việc bên trên kể, nó là 1 trong những tool sẽ giúp ta hiện thực hóa CI. Có nhiều tool CI không giống cũng danh tiếng nữa (Travis CI, Jenkins...), lý do mình chọn Circle CI chỉ dễ dàng vị trên cửa hàng có tác dụng với nó nhiều rồi cần bao gồm kinh nghiệm thôi.

Bản chất Circle CI là áp dụng docker, trong cấu hình Circle CI ta vẫn chỉ định và hướng dẫn các docker image sẽ thực hiện với các job, trong các job lại có những step, trong các step là cụ thể các command. Ngoài ra còn tồn tại cấu hình filter tạo điều kiện cho ta linc hoạt điều chỉnh sao để cho chỉ run các job lúc gồm merge/push vào một số ít branch khăng khăng vân vân.

Mô tả quy trình run 1 job bên trên Circle CI:

Developer chỉ việc push hoặc merge vào 1 branch, Circle CI tự động biết sự kiện đó và khởi đụng lên job đã có được thiết lập tương ứng.Ban đầu Circle CI pull docker image về với run lên ở trên môi trường thiên nhiên cloud của nóTiếp theo nó chạy những step đã làm được thiết đặt vào docker container, thông thường step trước tiên luôn là checkout tức là git checkout lấy source về (khoác định lưu lại trong thỏng mục ~/project)Các step tiếp theo được chạy tùy theo độ sáng chế của bạn, ví dụ job nhằm build thì thường xuyên là npm install rồi npm run abcxyz tuyệt job để deploy thì rất có thể là aws s3 sync xuất xắc serverless deploy...Sau Khi toàn bộ những step đang chạy dứt, job xong. Nếu exit code của job là error thì mặc định ta sẽ nhận thấy mail thông tin failed nữa.

Nói tóm lại, sau khi setup với cấu hình ta chỉ vấn đề dev còn các quá trình nhỏng build, chạy chạy thử, deploy vân vân được tự động hóa hóa hoàn toàn với chạy ngay tắp lự trên môi trường xung quanh cloud mạnh khỏe miễn tổn phí của Circle CI.

Áp dụng Circle CI mang lại chienkira/blog

Sau trên đây mình sẽ áp dụng Circle CI để setup CI giúp bản thân tự động deploy cùng publish trang blog mỗi lúc gồm push đổi khác gì đấy lên github.

※ Blog của chính bản thân mình viết bởi hugo, publish trải qua github pages

Chọn docker image để triển khai việc

trước hết là nên search em docker image ngon ngon để xài.

Chúng ta nên tách đem mấy image offical lịch lãm đẳng cấp linux hay node vân vân. Bọn nó xịn xò thật, tin tưởng được thật nhưng mà nhưng mà "ngulặng thủy" thấy ghê. Nếu cần sử dụng mấy image đó thì nhằm cần sử dụng được vấn đề ta lại yêu cầu sở hữu thêm ông A anh B, dẫn đến mỗi job trên Circle CI chỉ riêng biệt đoạn pull docker image dứt install các tool thì cũng mang lại mấy phút rồi...

*

Kinch nghiệm của chính bản thân mình là lên thẳng docker hub rồi tra cứu mẫu image làm sao có sẵn các sản phẩm bản thân đề nghị kéo về xài. Cẩn thận hơn thì check qua dockertệp tin của chính nó coi base từ image như thế nào, run các lệnh gì đến đảm bảo.

Yêu cầu của image lần này là nên bao gồm hugo cùng git. (các image bên trên Thị Trường ko gồm git đề nghị đề nghị cẩn thận, ko có git là lệnh checkout của Circle CI bị tiêu diệt ngay lập tức

*
)

Ok tìm kiếm thôi, tự khóa "hugo git" với liên kết trang tác dụng search đây: https://hub.docker.com/search?q=hugo%20git&type=image.Image trước tiên vào danh sách hiệu quả mình nhìn thấy là ưng cái bụng tức thời.

Container with Hugo, Git và Bash installed. Made to lớn work with wercker.

Chechồng qua test docker file, base là alpine => khôn xiết dịu nữa. Ok nhằm vững chắc nữa thì mình vẫn pull image này về bên trên vật dụng kiểm tra mặt hàng em nó!

Run em nó:

docker run --rm -it andthensome/alpine-hugo-git-bash /bin/shVào vào em nó rồi thì kiểm tra hàng:

Cài đặt Circle CI

1. Đăng nhtràn vào Circle CI

Thứ nhất cần được đăng ký/đăng nhtràn lên Circle CI.

Mngơi nghỉ links https://circleci.com/vcs-authorize/ và chọn Login with github, singin xong xuôi màn hình giao diện web của Circle CI sẽ được xuất hiện thêm.Trên đồ họa này ta rất có thể browse những project trên tài khoản github của bản thân và team, setup Circle CI cho các em nó, theo dõi các job đã chạy vân vân và vân vân. Mình đánh giá bối cảnh trực quan cùng dễ thực hiện, không hề thiếu biết tin.

Xem thêm: Cẩm Nang Mang Thai: Thai Nhi 23 Tuần Tuổi, Sự Thay Đổi Của Bà Bầu Tuần 23

2. Setup Circle CI đến project

Chọn thực đơn "Địa chỉ cửa hàng PROJECTS" làm việc bên tay trái, vào list những repositories được hiển thị ra mình lựa chọn blog do lần này mình muốn thiết đặt Circle CI mang lại nó.

*

Ở màn hình hiển thị tiếp sau, vào mục language nếu nlỗi không có ngữ điệu project chúng ta thực hiện thì cũng chớ băn khoăn lo lắng. Việc chọn rước một ngôn từ chỉ cần để website nó nhắc nhở ra câu chữ sample đến tệp tin config.yml thôi. Mình luôn luôn lựa chọn ngôn từ Other.

Nhìn tiếp xuống bên dưới rất có thể thấy gợi ý công việc tiếp theo sau phải làm nhằm hoàn tất thiết đặt Circle CI. Tóm tắt lại là nó bảo ta hãy tạo ra file .Circleci/config.yml nghỉ ngơi trong tlỗi mục gốc của repository, tìm hiểu thêm nội dung sample tiếp sau đây với sửa đổi file config.yml rồi cuối cùng ấn nút ít Start building.

Hướng dẫn là thế nhưng nhưng mà ngây ngô gì làm cho y hệt như lời nó, tôi vừa làm cho vừa tìm nhưng. Thế cần chúng ta cđọng tự tin ấn luôn nút ít Start building nhằm hoàn tất câu hỏi thiết lập Circle CI mang đến project nhé. Mình luôn luôn có tác dụng nỗ lực, dĩ nhiên lần đầu tiên build Circle CI sẽ báo tức thì ra lỗi sau, tuy vậy chẳng sao cả.

No configuration was found in your project. Please refer lớn https://Circleci.com/docs/2.0/ to get started with your configuration.

*

Từ bây giờ mọi khi push code lên github, CI job sẽ tự động hóa được khởi đụng lên rồi.Vậy đợi gì nữa, qua bước tiếp sau cấu hình rõ ràng các job và step đến Circle CI thôi.

3. Cấu hình Circle CI

Trước hết tạo file config.yml như Circle CI vẫn dạy dỗ.

mkdir .circlecitouch .circleci/config.ymlNội dung thuở đầu tệp tin config.yml bản thân đã nhằm như sample của Circle CI:

version: 2jobs: build: docker: - image: debian:stretch steps: - checkout - run: name: Greeting command: emang lại Hello, world.Tiếp theo bản thân sẽ sửa lại chỗ docker image, bản thân sửa chữa vào loại image mình tra cứu thấy sống bên trên.

docker: - image: andthensome/alpine-hugo-git-bashMình chỉ muốn chạy job lúc tất cả push lên branch master thôi đề nghị bản thân sẽ thêm thông số kỹ thuật này vào job:

jobs: build: branches: only: - masterBlog của chính bản thân mình được publish trải qua github pages, chỉ việc push ngôn từ lên branch thắt chặt và cố định nhưng github vẫn luật pháp là gh-pages thì từ tương khắc nội dung sẽ được serve sống domain name https://chienkira.github.io/blog.Hiện tại, việc build blog (hiện ra văn bản html tĩnh của blog) cùng push nó lên branch gh-pages đã có script hóa trong file publish.sh rồi. Do đó vào Circle CI bản thân hi vọng chỉ cần chạy file script này là hoàn thành luôn. Thêm step vào config.yml nlỗi sau:

... docker: - image: andthensome/alpine-hugo-git-bash steps: - run: name: build site and push khổng lồ github-pages command: sh publish.shRồi test commit và coi Circle CI chạy ra làm sao nhé.git commit -am "add circle ci" &và git push

Cheông chồng bên trên màn hình hiển thị Circle CI rất có thể thấy job được khởi rượu cồn như nó được thiết kế nhưng mà nó đã failed.

*
Cliông xã vào xem chi tiết kiểm tra rất có thể biết chuyện gì sẽ xảy ra vào docker container.Tại trên đây mình gặp lỗi nhỏng bên dưới - blog của bản thân cần sử dụng theme chảnh, nó đòi bắt buộc tất cả hugo version cao hơn.

Google một hồi bản thân thêm được step sau để nâng cấp hugo lên version 0.50 vào chiếc image alpine này.

- run: name: nâng cấp hugo command: | apk update &và game android add ca-certificates && update-ca-certificates && app android add openssl && android add openssh-client wget https://github.com/gohugoio/hugo/releases/download/v0.50/hugo_0.50_linux-64bit.tar.gz tar xzf hugo_0.50_linux-64bit.tar.gz -C /usr/local/bin/ Và thêm 1 step nhằm config git nữa là mình hoàn chỉnh ngừng thông số kỹ thuật Circle CI.Các bạn cần phải có thể tham khảo file config.yml sau cùng ở đây: https://github.com/chienkira/blog.

Commit đợt tiếp nhữa rồi chất vấn website Circle CI, job vẫn chạy thành công xanh lè.

*

Kể trường đoản cú bài xích này là blog của bản thân đã có được publish tự động rồi. Mặc mặc dù lần này, blog đơn giản và dễ dàng đề nghị quá trình CI không tồn tại gì nhiều cùng tinh vi dẫu vậy mục đích tự động hóa hóa thì đã thành công.Circle CI là phương pháp miễn tầm giá cùng hoàn hảo và tuyệt vời nhất, nếu bạn gồm project làm sao có thể áp dụng hãy yêu cầu test một lượt nhé.

Bài viết gốc ngơi nghỉ blog của mình: https://chienkira.github.io/blog/posts/%C3%A1p-d%E1%BB%A5ng-circle-ci/