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.
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ủ...
Có nhiều bạn cài web xong nhờ mình kiểm tra web xem đã hoạt động được hay chưa. Mấy cái này dễ mà các bạn lười quá nên đành viết hướng dẫn. Với một Website có mấy việc bạn cần kiểm tra. Kiểm tra kết nối mạng đến VPS hay Hosting có thông hay không. Kiểm tra dịch vụ (service) Webserver cài đã truy cập được từ Internet hay chưa. Kiểm tra việc trỏ tên miền , đổi Nameserver nữa. Xong các bước này chắc chắn bạn khoanh vùng được lỗi và có hướng xử lý. Để làm được việc đó mình xẽ giới thiệu bộ 3 công cụ “đồ đá” thuộc dạng không thể thiếu. Mong rằng giúp cho cách bạn mới tìm hiểu học quản trị mạng máy chủ tốt hơn. 1. Dùng Ping Đầu tiên các bạn cần biết Ping là gì ? Ping là công cụ kiểm tra kết nối mạng từ PC của bạn đến VPS/Hosting có thông suốt hay không, một công cụ huyền thoại rất nhiều người biết. Cách sử dụng Ping vô cùng đơn giản, trên Windows mở CMD – Command Prompt bằng cách ấn phím + R để mở RUN nhập vào cmd. Ấn OK rồi...
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...
Comments
Post a Comment