TTMT.ManageWebGUI/CI-CD-PLAN.md
phuongdm 2fcffbceac
Some checks failed
CI / build-test (push) Failing after 1m0s
Deploy Staging (Docker) / deploy (push) Failing after 7s
fix UI and add CI/CD 3
2026-05-10 22:05:15 +07:00

2.8 KiB

Ke hoach CI/CD cho frontend (Gitea)

1) Tong quan

Ke hoach nay thiet lap:

  • CI: build va test moi lan push/PR
  • CD: deploy Docker tu dong len staging

2) Thong tin du an

  • Build tool: Vite
  • Script:
    • test: npm run test
    • build: npm run build
  • Thu muc output: dist

3) Quy uoc da chot

  1. Cach deploy: Docker
  2. Node version: 22.14.0
  3. Branch staging: main
  4. Runner dat tren web server (deploy truc tiep, khong SSH)

4) Dieu kien truoc

5) Cai dat act_runner tren web server (Ubuntu 22.04)

5.1 Dung user compmanage lam runner

sudo usermod -aG docker compmanage

5.2 Tai act_runner

mkdir -p /home/compmanage/gitea-runner/bin
cd /home/compmanage/gitea-runner/bin
curl -L -o act_runner \
  https://dl.gitea.com/act_runner/0.2.10/act_runner-0.2.10-linux-amd64
chmod +x act_runner

5.3 Lay token va dang ky runner

  • Gitea Admin -> Actions -> Runners -> Create new runner
  • Dang ky runner:
/home/compmanage/gitea-runner/bin/act_runner register \
  --instance http://203.171.20.94:3000 \
  --token <runner-token> \
  --name webserver-runner \
  --labels docker:docker://node:22.14.0

5.4 Chay runner bang systemd

Tao file /etc/systemd/system/act_runner.service:

[Unit]
Description=Gitea Actions Runner
After=network.target

[Service]
User=compmanage
Group=compmanage
ExecStart=/home/compmanage/gitea-runner/bin/act_runner daemon
WorkingDirectory=/home/compmanage/gitea-runner
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Khoi dong:

sudo systemctl daemon-reload
sudo systemctl enable --now act_runner
sudo systemctl status act_runner

6) Secrets can tao trong Gitea

Vao repo -> Settings -> Actions -> Secrets, them cac key sau:

  • REGISTRY_URL = docker.io
  • REGISTRY_USER = <dockerhub_username>
  • REGISTRY_PASSWORD = <dockerhub_access_token>
  • IMAGE_NAME = <dockerhub_username>/ttmt-frontend
  • CONTAINER_NAME = ttmt-frontend
  • HOST_PORT = 80

7) Workflow can co

  • .gitea/workflows/ci.yml
  • .gitea/workflows/deploy-staging.yml

8) Luong CI (build + test)

  • Trigger: push, pull_request
  • Cac buoc:
    1. Checkout
    2. Setup Node 22.14.0
    3. npm ci
    4. npm run test
    5. npm run build
    6. Upload dist artifact

9) Luong CD (deploy Docker truc tiep)

  • Trigger: push len branch main
  • Cac buoc:
    1. Build image tu Dockerfile
    2. Push len Docker Hub
    3. Pull va restart container tren chinh web server

10) Kiem tra sau khi deploy

  • Gitea -> Actions: job thanh cong
  • Tren server: docker ps thay container dang chay
  • Truy cap web bang IP/port da map

11) Rollback nhanh

  • Deploy lai tag cu: staging-<commit SHA>

12) Buoc tiep theo

  1. Them secrets tren Gitea
  2. Push len main de trigger deploy