Sobes.tech
Middle

Kaip vyksta programos diegimo (deployment) procesas?

sobes.tech AI

Atsakymas iš AI

Automatizuotas diegimo procesas apima šiuos etapus:

  1. Aktualios kodo versijos gavimas: Paprastai naudojama versijų valdymo sistema (pvz., Git) norint ištraukti naujausius pakeitimus iš saugyklos.

    # Git komandos pavyzdys naujausių pakeitimų gavimui
    git pull origin main
    
  2. Priklausomybių diegimas: Jei projektas naudoja priklausomybių valdytoją (pvz., Composer), vykdomas komanda bibliotekų įdiegimui arba atnaujinimui.

    // Composer komandos pavyzdys
    composer install --no-dev --optimize-autoloader
    
  3. Frontend surinkimas (jei reikalinga): Jei naudojamas frontend surinkėjas (pvz., Webpack, Gulp), vykdomas surinkimo komanda.

    # NPM surinkimo komandos pavyzdys
    npm run build
    
  4. Duomenų bazės migracijos: Vykdomi skriptai, pritaikantys duomenų bazės struktūrą prie naujausios versijos.

    # Migracijų vykdymo komandos pavyzdys
    php artisan migrate --force # Laravel
    
  5. Kreipimosi ir šiltojo talpyklos išvalymas: Išvaloma framework'o ir duomenų talpykla, jei reikia, iš anksto įkeliama.

    // Talpyklos išvalymo komandų pavyzdys
    php artisan cache:clear # Laravel
    php artisan config:cache
    php artisan route:cache
    php artisan view:cache
    
  6. Simbolinės nuorodos ir prieigos teisės: Nustatomos reikalingos simbolinės nuorodos ir prieigos teisės prie failų ir katalogų.

    # Teisių nustatymo komandos pavyzdys
    chmod -R 755 storage
    
  7. Aktyvios versijos perjungimas: Jei naudojamas "nulinio prastovos laiko" požiūris (pvz., sukuriant simbolinę nuorodą current į naują surinktą versiją), atliekamas perjungimas.

  8. Paslaugų perkrovimas (jei reikalinga): Jei programa reikalauja web serverio ar eilės darbuotojų perkrovimo, vykdomas atitinkamas komanda.

    # PHP-FPM perkrovimo pavyzdys
    sudo systemctl reload php-fpm.service
    

Šis procesas dažnai automatizuojamas naudojant skriptus arba specializuotus įrankius (pvz., Capistrano, Deployer, GitLab CI/CD, Jenkins).