Skip to content

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

  1. 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.

  2. Windows Thường thấy trong các ứng dụng .NET cũ

Web server

  1. Apache

  2. Nginx