Sobes.tech
Middle

Kako vršite deployment aplikacija?

sobes.tech АИ

Одговор од АИ

Proces implementacije zavisi od veličine projekta i korišćene infrastrukture, ali uopšteno pratim sledeće korake:

  1. Izgradnja projekta: Koristim bundlere poput Webpack, Rollup ili Vite za transpajliranje koda, minifikaciju i optimizaciju resursa.
  2. Testiranje: Sprovodim automatizovane testove (jedinične, integracione, end-to-end) da proverim funkcionalnost.
  3. Verzionisanje: Kreiram git tag ili commit za fiksiranje verzije izdanja.
  4. Deployment na staging (opciono): Deployment na test server za finalnu proveru od strane tima.
  5. Deployment na produkciju:
    • Učitavam izgrađene fajlove na web server (Nginx, Apache) ili CDN.
    • Ažuriram konfiguracione fajlove (ako je potrebno).
    • Primenu migracija (ako je primenjivo za backend).
    • Restartujem web server ili servis.
  6. Provera nakon deploy-a: Proveravam funkcionalnost u produkcionom okruženju, nadgledam metrike.

Koristim CI/CD alate (GitHub Actions, GitLab CI, Jenkins) za automatizaciju većine ovih koraka, što obezbeđuje konzistentnost i smanjuje verovatnoću grešaka.

Primer jednostavnog CI/CD pipeline-a za deployment na statički hosting:

# .github/workflows/deploy.yml
name: Deploy na GitHub Pages

on:
  push:
    branches:
      - main # Trigger pri push-u na branch main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest # Operativni sistem

    steps:
    - name: Preuzimanje koda
      uses: actions/checkout@v2 # Preuzimanje koda iz repozitorijuma

    - name: Podešavanje Node.js
      uses: actions/setup-node@v2 # Konfiguracija Node.js
      with:
        node-version: '16' # Konkretna verzija Node.js

    - name: Instalacija zavisnosti
      run: npm ci # Instalacija zavisnosti

    - name: Izgradnja projekta
      run: npm run build # Pokretanje build skripte iz package.json

    - name: Deploy na GitHub Pages
      uses: peaceiris/actions-gh-pages@v3 # Akcija za deploy na GitHub Pages
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }} # Token za pristup
        publish_dir: ./dist # Folder sa izgrađenim projektom (zavisi od konfiguracije bundlera)