====== GitHub ======
GitHub to popularna platforma hostingowa dla [[kategoria:programowanie:github:repo|repozytoriów Git]], oferująca dodatkowe funkcje takie jak pull requesty, issue tracking, GitHub Actions (CI/CD), wiki oraz zarządzanie projektami.
{{page>:szablon:gfx:terminal}}
===== Podstawowe funkcje =====
Repozytoria Git: przechowywanie kodu źródłowego i historii wersji.
* Forkowanie i pull requesty: ułatwienie współpracy i proponowania zmian.
* Issues: system zgłaszania i śledzenia błędów oraz zadań.
* Actions: automatyzacja procesów (np. testów, buildów, deployów).
* Wiki i README: dokumentacja bezpośrednio w repozytorium.
* [[kategoria:programowanie:github:github_pages|GitHub Pages]]: hostowanie statycznych stron WWW z poziomu repozytorium.
===== Integracja z Bash =====
* Aliasowanie komend Git np.
alias gs='git status'
* Skrypty do automatycznego commitowania i pushowania.
* Obsługa tokenów API w skryptach bashowych.
* Integracja z webhookami (np. do powiadomień lub automatycznego deployu).
===== Zastosowania praktyczne =====
* Zarządzanie [[kategoria:programowanie:github:projekt|projektami]] open source.
* Współpraca w zespołach developerskich.
* Hostowanie portfolio programisty.
* Automatyzacja procesów CI/CD (GitHub Actions, workflows).
===== Typowe komendy Git z GitHub =====
* Klonowanie repozytorium:
git clone https://github.com/user/repo.git
* Dodanie zdalnego repo:
git remote add origin https://github.com/user/repo.git
* Wysłanie zmian na GitHub ''git push -u origin main''
* Pobranie najnowszych zmian ''git pull origin main''
===== Zastosowania praktyczne =====
* Zarządzanie projektami open source.
* Współpraca w zespołach developerskich.
* Hostowanie portfolio programisty.
* Automatyzacja procesów:
**CI** - Ciągła Integracja (Continuous Integration):
Praktyka polegająca na regularnym (często kilka razy dziennie) integrowaniu zmian w kodzie, wprowadzanych przez różnych deweloperów, do wspólnego repozytorium.
Jak działa: Po każdej integracji (czyli po każdym **commicie** do głównej gałęzi kodu), system CI automatycznie buduje projekt (np. kompiluje kod) i uruchamia zestaw automatycznych testów (np. testy jednostkowe, testy integracyjne).
Cel: Szybkie wykrywanie i rozwiązywanie konfliktów oraz błędów integracyjnych. Dzięki temu problemy są identyfikowane na wczesnym etapie, zanim staną się trudniejsze i droższe do naprawienia. Zapewnia to, że główna gałąź kodu jest zawsze w stanie gotowym do wdrożenia.
**CD** - Ciągłe Dostarczanie (Continuous Delivery) lub Ciągłe Wdrażanie (Continuous Deployment):
Co to jest: To rozszerzenie Ciągłej Integracji, które automatyzuje kolejne etapy procesu dostarczania oprogramowania.
Ciągłe Dostarczanie (Continuous Delivery): Oznacza, że kod, który przeszedł pomyślnie wszystkie testy w ramach CI, jest automatycznie przygotowywany i dostarczany do środowiska, z którego może być w dowolnym momencie wdrożony na produkcję. Wdrożenie na produkcję jest jednak manualną decyzją. Zespół ma pewność, że w każdej chwili może wydać nową wersję oprogramowania.
Ciągłe Wdrażanie (Continuous Deployment): Idzie o krok dalej niż Ciągłe Dostarczanie. W tym przypadku, kod, który przeszedł wszystkie testy automatyczne, jest automatycznie wdrażany na środowisko produkcyjne, bez jakiejkolwiek interwencji człowieka. Wymaga to bardzo wysokiego poziomu zaufania do automatycznych testów i całego potoku CI/CD.
===== Linki zewnętrzne =====
* https://github.com GitHub – Strona główna
* * https://docs.github.com Oficjalna dokumentacja GitHub
* * https://cli.github.com GitHub CLI (gh)
{{indexmenu>:kategoria:programowanie#1}}
{{page>:szablony:more}}
{{pagebox>:pagebox:kategorie}}