Sau
một thời gian code ra được môt trang web xịn xò thì bạn có nhu cầu đưa
lên internet để mọi người được biết. Bắt đầu với công việc đầu tiên là
tìm mua tên miền, hosting hoặc VPS. Bạn có thể mua VPS lại Vultr. 1 VPS
có thể cài đặt được nhiều trang web.
Như vậy sau quá trình chuẩn
bị thành công, chúng ta sẽ đẩy code từ local lên hosting, server. Quá
trình này khá là mất công. Cách cổ điển hiện nay được nhiều người dùng
là dùng FTP, hoặc upload thằng từ các trang quản lý. Đây là công việc
khá nhàm chán, tốn thời gian. Khi có một thay đổi nhỏ là phải đi thao
tác lại.
Chính vì vậy khái niệm CI/CD ra đời. CI/CD là một bộ đôi công việc, bao gồm CI (Continuous Integration) và CD (Continuous Delivery),
ý nói là quá trình tích hợp (integration) thường xuyên, nhanh chóng hơn
khi code cũng như thường xuyên cập nhật phiên bản mới (delivery). Có
khá nhiều công cụ hỗ trợ CI/CD, nhưng trong phạm vi bài viết chỉ đề cập
công cụ CI/CD của Gitlab, và tất nhiên sử dụng tính năng free. Nếu bạn
dùng nhiều hơn, phải trả thêm phí. Khi đó công việc sau khi code xong
chỉ là nhấn nút push lên gitlab, ngồi uống cafe và đợi thành qủa.
Để tiết kiệm thời gian cài đặt và mọi thứ suôn sẻ, bạn cần có một chút kiến thức về VPS, SSH, public key, private key…
Một số thứ cần chuẩn bị trước khi bắt tay vào làm.
Hệ thống tự sinh ra 2 file là gitlab, và gitlab.pub
Trong cửa sổ lệnh terminal gõ:
cat gitlab.pub
Copy đoạn code public key, dán vào mục SSH của tài khoản Gitlab.
Tiếp theo gõ lệnh cat gitlab để lấy private key
cat gitlab
Private
key này sẽ gán vào mục Settings CI/CD của repository. Trong mục
Variables tạo 1 key mới là SSH_PRIVATE_KEY, dán private key của bạn vào
đây
Quay lại cửa sổ Terminal. Gõ nano authorized_keys. Copy public key của bạn vào đây và lưu lại. Chú ý phân quyền đọc file
Gitlab
Runner là thành phần cực kỳ quan trọng trong workflow Gitlab CI. Nếu
không có Runner thì sẽ không có lệnh test, deploy nào được thực thi.
Runner có nhiều loại, phân biệt dựa vào cái gọi là executor. Khi khởi
tạo runner, bạn sẽ phải chọn nó là loại executor nào, và nó sẽ quyết
định môi trường thực thi các câu lệnh trong file config ở trên. Bạn có
thể tham khảo link https://docs.gitlab.com/runner/executors/ để biết sự khác nhau của các executor cũng như cách cài đặt, cấu hình chúng.
Trong
repository setting, mục CI/CD, trên VPS mình chọn cài manual, excutor
chọn Shell. Hoặc dùng luôn Share Runner mà không cần cài đặt cũng được.
Đến đây tạm xong phần cài đặt cần thiết. Chúng ta sẽ quay lại repo trên Gitlab.
Thêm file .gitlab-ci.yml tại folder root trên Gitlab
Mặc
định Gitlab không có cơ chế nào về CI cho dự án của bạn, chỉ khi nào dự
án của bạn có file .gitlab-ci.yml nằm ở thư mục gốc thì Gitlab mới nhận
dạng được dự án của bạn muốn áp dụng Gitlab CI. File này có định dạng
và cần hợp lệ thì mới có thể hoạt động được, không thì khi bạn push code
lên thì Gitlab sẽ báo lỗi file định dạng nội dung của file cấu hình
không hợp lệ. Tham khảo cú pháp của cấu hình này tại https://docs.gitlab.com/ce/ci/yaml/
Chú
ý phải đúng format. Bạn có thể sửa trực tiếp trên Gitlab, nó sẽ kiểm
tra giúp file có đúng format hay không. Đoạn code dưới đây làm 2 việc.
Đầu tiên build code từ branh master ra bản release. Câu lệnh npm run build –prod khá quen thuộc. Sau đó deploy lên production thông qua Rsync kết hợp SSH.
# Using the node image to build the React app
image: node:latest
variables:
PUBLIC_URL: /
# Cache node modules - speeds up future builds
cache:
paths:
- node_modules
stages:
- build
- deploy
build:
stage: build
script:
- npm install # Install all dependencies
- npm run build --prod # Build for prod
artifacts:
paths:
- build
only:
- master # Only run on master branch
deploy_production:
stage: deploy
image: ubuntu
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
- chmod 700 ~/.ssh/id_rsa
- eval "$(ssh-agent -s)"
- ssh-add ~/.ssh/id_rsa
- ssh-keyscan -H 'gitlab.com' >> ~/.ssh/known_hosts
- apt-get install rsync -y -qq
- apt-get install curl -y -qq
script:
- echo "Deploying to server"
- ssh -i ~/.ssh/gitlab -o StrictHostKeyChecking=no USERNAME@IP-HOST -p PORT
- rsync -avz --progress -a -e "ssh -p PORT" build/ USERNAME@IP-HOST:/home/www/noithatrongviet.com/public_html
- echo "Deployed"
environment:
name: production
url: http:noithatrongviet.com
only:
- master # Only run on master branch
Chú các thông tin quan trọng: USERNAME@IP-HOST PORT là thông tin tên đăng nhập, port SSH của bạn. /home/www/noithatrongviet.com/public_html thay
= đường dẫn trên host của bạn. Xong nhấn nút Commit và vào mục CI/CD
-> Pipelines hoặc CI/CD -> Jobs kiểm tra kết quả của bạn.Tận hưởng thành quảChúc các bạn thành công. Từ nay cứ commit code là Gitlab tự động build và deploy lên host cho bạn, quá đã phải không.
This blog details about the process of setting up CI/CD pipeline for iOS mobile apps using Gitlab CI and fastlane. This would be hugely beneficial for developers who are currently using Gitlab as a code repository for their projects. Nevertheless, the steps detailed with fastlane can be used to collaborate with almost any CI/CD tool of your choice that is currently available in the market. Setting up Gitlab CI in Mac Installing Fastlane in Mac Why Gitlab CI/CD? One of the major benefits of using Gitlab CI/CD is that you are freed from the cumbersome process of creating workflows using a lot of third party plugins and tools. Why use some other third-party tools when you can play around with in-built tools which just a few clicks away from your source code repository. One caveat not to be concealed is that if you are a person who loves GUI and wary of command line, then this might be a little difficult for you. Gitlab CI/CD can...
Giới thiệu CI/CD là gì Continuous Integration (Tích hợp liên tục) là quá trình tự động build, chạy unit test khi source code được thay đổi trên Hệ thống quản lý phiên bản (Version Control – Git). Mục tiêu của CI là nhanh chóng đảm bảo thay đổi từ developer là “tốt” và phù hợp để sử dụng tiếp trong source code. Continuous Delivery (Phân phối liên tục) là một bước tiến của Continuous Integration. Ứng dụng không chỉ được build và test ở mỗi lần thay đổi code trên Version Control, mà Continuous Delivery còn đảm bảo ứng dụng có thể được deploy một cách đáng tin cậy vào bất cứ lúc nào. Tuy nhiên , việc deploy lên môi trường release cần phải thực hiện bằng tay. Continuous Deployment (Triển khai liên tục) cũng là một bước tiến của Continuous Integration, tương tự như Continuous Delivery. Tuy nhiên, khác với Continuous Delivery, thay vì deploy bằng tay lên môi trường release thì Continuous Deployment có thể thực hiện deploy tự động và user có thể sử dụng source mới nhất ngay l...
SSH là gì? SSH là một chương trình tương tác giữa máy chủ và máy khách có sử dụng cơ chế mã hoá đủ mạnh nhằm ngăn chặn các hiện tượng nghe trộm, đánh cắp thông tin trên đường truyền. Các chương trình trước đây: telnet, rlogin không sử dụng phương pháp mã hoá. Vì thế bất cứ ai cũng có thể nghe trộm thậm chí đọc được toàn bộ nội dung của phiên làm việc bằng cách sử dụng một số công cụ đơn giản. Sử dụng SSH là biện pháp hữu hiệu bảo mật dữ liệu trên đường truyền từ hệ thống này đến hệ thống khác. Cách đăng nhập VPS bằng SSH trên MAC OS Đầu tiên bạn cần có thông tin đăng nhập của VPS bao gồm IP hoặc địa chỉ server, username và password. Như hình dưới đây là thông tin VPS của mình trên Vultr. Sau đó mở terminal trên Mac và gõ lệnh: ssh root@(địa chỉ ip hoăc địa chỉ server) ví dụ của mình ip là 144.202.3.15. sau khi nhập lệnh trên và enter, VPS của bạn sẽ yêu cầu mật khẩu lúc này bạn chỉ việc copy và paste mật khẩu vào. Sau khi nhập đúng mật khẩu bạn và vào được VPS củ...
Comments
Post a Comment