Skip to content

pomeren fajl

pomeren fajl #1

Workflow file for this run

# Naziv workflow-a koji će se videti u GitHub Actions tabu
name: CI
# Kada se pipeline pokreće
on:
# Pokreće se na svaki push na ove grane
push:
branches: ["main", "develop", "feature/**"]
# Pokreće se i na svaki Pull Request ka main ili develop
pull_request:
branches: ["main", "develop"]
# Minimalne dozvole – samo čitanje repozitorijuma
permissions:
contents: read
# Ako se uradi više push-eva brzo → stari pipeline se prekida
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
# =========================
# BACKEND – LARAVEL TESTOVI
# =========================
backend-tests:
name: Backend (Laravel) - tests
# Pipeline se izvršava na Linux mašini (GitHub runner)
runs-on: ubuntu-latest
steps:
# Klonira repo u runner
- name: Checkout
uses: actions/checkout@v4
# Instalira PHP i potrebne ekstenzije za Laravel
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "8.2"
extensions: mbstring, dom, fileinfo, pdo_sqlite, sqlite3
coverage: none
# Cache za Composer dependencies → ubrzava pipeline
- name: Cache Composer
uses: actions/cache@v4
with:
path: |
laravel/vendor
~/.composer/cache/files
key: ${{ runner.os }}-composer-${{ hashFiles('laravel/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
# Instalira Laravel dependencies
- name: Install dependencies (Composer)
working-directory: laravel
run: composer install --no-interaction --prefer-dist --no-progress
# Priprema test okruženje (.env fajl + APP_KEY)
- name: Prepare .env for tests
working-directory: laravel
run: |
cp .env.example .env
php artisan key:generate
php artisan config:clear
# Pokreće migracije nad SQLite in-memory bazom
# (brzo i izolovano testiranje bez MySQL/Postgres)
- name: Run migrations (sqlite in-memory)
working-directory: laravel
env:
APP_ENV: testing
DB_CONNECTION: sqlite
DB_DATABASE: ":memory:"
run: php artisan migrate --force
# Pokreće sve PHPUnit / Laravel Feature testove iz tests/
- name: Run PHPUnit tests
working-directory: laravel
env:
APP_ENV: testing
DB_CONNECTION: sqlite
DB_DATABASE: ":memory:"
run: php artisan test
# =========================
# FRONTEND – BUILD PROVERA
# =========================
frontend-build:
name: Frontend - build check
runs-on: ubuntu-latest
steps:
# Klonira repo
- name: Checkout
uses: actions/checkout@v4
# Instalira Node.js okruženje
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
cache: npm
cache-dependency-path: frontend/package-lock.json
# Instalira frontend dependencies (clean install)
- name: Install frontend deps
working-directory: frontend
run: npm ci
# Radi build aplikacije → proverava da li frontend ima greške
# (nemamo frontend testove pa radimo build-check)
- name: Build frontend
working-directory: frontend
run: npm run build