Devops
Devops là một vấn đề rộng và khá khó, ở đây mình sẽ trình bày những cách CI/CD và deploy phổ biến nhất. Đầu tiên CI/CD là gì?
CI/CD là gì?
CI/CD là quy trình tự động hóa trong phát triển phần triển. Trong đó:
- CI: bao gồm các quá trình build, unit test, sonarqube, eslint, dependency check, ...
- CD: đưa code lên production
CI/CD Pipeline
Quá trình CI/CD thường được thực hiện thông qua pipeline được config trong .yml file
Github Actions: có thể được xem là dễ dàng nhất trong các loại. Dưới đây là một ví dụ của một yml cho một pipeline chạy trên Github Actions:
name: CI/CD Deploy
on:
push:
branches:
- dev
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Create .env file from secrets
run: echo "${{ secrets.ENV_FILE }}" > .env
- name: Install dependencies and build
run: |
npm install
npm run build
- name: Create tar archive of build
run: tar -czf build.tar.gz dist
- name: Upload build to server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.REMOTE_HOST }}
username: ${{ secrets.REMOTE_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: build.tar.gz
target:
- name: Set up server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.REMOTE_HOST }}
username: ${{ secrets.REMOTE_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd
rm -rf dist
tar -xzf build.tar.gz
rm build.tar.gz
sudo /etc/init.d/nginx restart
Ở mức độ đơn giản nhất quá trình sẽ bao gồm set up môi trường cho node, build project, sau đó sẽ dùng scp để copy file artifacts vào trong server
Hệ điều hành
-
Linux Linux là hệ điều hành được sử dụng phổ biến nhất cho server và cloud vì tài nguyên nhẹ và không tốn phí bản quyền.
-
Windows Thường thấy trong các ứng dụng .NET cũ
Web server
-
Apache
-
Nginx