pomeren fajl #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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 |