Flow zadania backendowego – krok po kroku

1. Rejestracja i przygotowanie zadania

2. Praca z repozytorium (GitHub)

Branching

Zasady pracy

3. Środowisko deweloperskie (DEV)

4. Review App (RA)

5. Code Review (PR)

6. RC (Release Candidate)

7. Testy automatyczne

Narzędzia: PHPUnit, Pest, Dusk, Cypress, GitHub Actions

8. Deploy na produkcję

9. Po wdrożeniu

10. Środowiska – Podsumowanie

Środowisko Cel Dostęp Deploy z Uwagi
DEV Praca lokalna Developerzy Branch lokalny Docker, mocki, seedery
RA (Review App) Test funkcjonalny brancha QA, PM Pull Request Automatyczny, efemeryczny
RC (Release Candidate) Weryfikacja wydania QA, PM release/X.Y.Z Kopia prod
PROD Użytkownicy Użytkownicy końcowi main + tag Monitoring, rollback

11. Słowniczek

Repozytorium
Centralne miejsce przechowywania kodu źródłowego projektu, najczęściej w systemie kontroli wersji (np. Git, GitHub).
Git
Rozproszony system kontroli wersji do śledzenia zmian w plikach i współpracy zespołowej nad kodem.
GitHub
Platforma hostująca repozytoria Git, oferująca narzędzia do współpracy, code review, CI/CD.
Branch
Oddzielna gałąź rozwoju kodu, umożliwiająca pracę nad zmianami bez wpływu na główną wersję.
Main / Master
Główna gałąź produkcyjna, której zawartość odzwierciedla wersję aplikacji na środowisku produkcyjnym.
Develop
Główna gałąź developerska, na której integruje się nowe funkcje przed wypuszczeniem na produkcję.
Feature branch
Oddzielna gałąź tworzona do konkretnej funkcji lub zadania. Łączona z develop po zakończeniu prac.
Release branch
Gałąź przygotowawcza do wydania nowej wersji aplikacji, służy do testów integracyjnych i poprawek.
Hotfix branch
Gałąź tworzona z main w celu szybkiego usunięcia krytycznego błędu na produkcji.
Pull Request (PR)
Prośba o zmergowanie zmian z jednej gałęzi do drugiej. Służy do przeglądu kodu i jego zatwierdzenia.
CR – Code Review
Proces sprawdzania kodu przez innych developerów pod kątem jakości, poprawności i zgodności ze standardami.
CI – Continuous Integration
Proces automatycznego budowania i testowania kodu przy każdej zmianie w repozytorium.
CD – Continuous Delivery/Deployment
Proces automatycznego wdrażania aplikacji na środowiska testowe lub produkcyjne.
Dev
Środowisko lokalne developera, służące do wytwarzania i testowania kodu.
RA / Review App
Tymczasowe środowisko uruchamiane automatycznie dla konkretnej gałęzi PR w celu testów funkcjonalnych.
Pre-prod / Staging
Środowisko odwzorowujące produkcję. Służy do testów końcowych i integracyjnych.
Prod / Produkcja
Końcowe środowisko, dostępne dla użytkowników końcowych. Ostateczna wersja aplikacji.
Smoke test
Szybki test sprawdzający podstawowe funkcje aplikacji po wdrożeniu.
Rollback
Cofnięcie aplikacji do poprzedniej wersji w przypadku błędów po deploymencie.
Blue-Green Deployment
Technika wdrażania, w której dwie instancje aplikacji działają równolegle. Zmiana odbywa się przez przełączenie ruchu.
Canary Release
Wdrażanie nowej wersji tylko dla części użytkowników, w celu monitorowania wpływu zmian.
Docker
Narzędzie do tworzenia izolowanych kontenerów z aplikacją i jej zależnościami.
Seeder
Skrypt wypełniający bazę danych przykładowymi danymi do testów.
Mock
Sztuczna implementacja usługi lub danych, używana podczas testów lub developmentu.
Feature flag
Mechanizm umożliwiający warunkowe włączanie funkcji aplikacji bez zmiany kodu.
Testy jednostkowe
Testy sprawdzające działanie pojedynczych funkcji/metod w izolacji.
Testy integracyjne
Testy sprawdzające współdziałanie komponentów aplikacji.
Testy E2E
Testy automatyczne całej ścieżki użytkownika w aplikacji.
Linter
Narzędzie analizujące kod źródłowy pod kątem stylu, błędów składniowych itp.
Static analysis
Analiza kodu bez jego uruchamiania (np. PHPStan, Psalm).
Tag (Release tag)
Stały wskaźnik do konkretnego commita w Git – oznaczenie wersji aplikacji (np. v1.2.0).
Conventional Commits
Konwencja nazewnictwa commitów z prefixem typu zmiany (np. feat:, fix:, chore:).
Acceptance Criteria
Lista warunków, które muszą być spełnione, aby zadanie uznać za zakończone.
Spike
Zadanie techniczne lub badawcze mające na celu rozpoznanie problemu przed właściwym wdrożeniem.
Tech debt
Dług technologiczny, wynikający z decyzji skracających czas developmentu kosztem jakości kodu.
Grooming
Spotkanie zespołu w celu przygotowania i omówienia zadań z backlogu.

Automatyzacja flow zadania backendowego

1. Automatyczne generowanie branchy

gh issue create --title "Dodaj rejestrację użytkownika" --label feature
    git checkout -b feature/register-user-123

2. Continuous Integration (CI)

Przykład CI (GitHub Actions):

    name: CI
    
    on:
      push:
        branches: [ develop, feature/**, hotfix/** ]
      pull_request:
    
    jobs:
      tests:
        runs-on: ubuntu-latest
        services:
          mysql:
            image: mysql:8.0
            env:
              MYSQL_ROOT_PASSWORD: root
              MYSQL_DATABASE: app_test
            ports: [3306:3306]
        steps:
          - uses: actions/checkout@v3
          - uses: shivammathur/setup-php@v2
            with:
              php-version: '8.3'
          - run: composer install
          - run: php artisan migrate --env=testing
          - run: php artisan test
        

3. Review Apps (RA)

4. Automatyzacja Release Candidate (RC)

5. Automatyzacja Code Review

6. Automatyczne wersjonowanie i changelog

7. Continuous Deployment (CD)

Przykład deploy z tagu:

    on:
      push:
        tags:
          - 'v*'
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v3
          - run: ssh user@server "cd /app && git pull && php artisan migrate --force"
        

8. Monitoring i rollback

9. Słownik pojęć (cheat sheet)

Termin Znaczenie
CI Continuous Integration – automatyczne testowanie kodu przy każdej zmianie
CD Continuous Deployment / Delivery – ciągłe wdrażanie lub przygotowanie do wdrożenia
Review App (RA) Środowisko testowe na potrzeby PR
RC Release Candidate – kandydat do wydania, ostatni etap testów
Deploy Publikacja kodu aplikacji na środowisko
Pipeline Ciąg kroków automatyzacji (build, test, deploy)
Tag Wersja kodu, np. v1.2.3
Semantic Release System automatycznego tagowania wersji
Feature Flag Przełącznik funkcjonalności bez deployu
Blue-Green deploy Przełączalne środowiska produkcyjne
Rollback Cofnięcie wdrożenia do poprzedniej wersji