GitHub Pages — statik site yayınlamak
GitHub Pages — publishing static sites
Bu derste neler öğreneceksin
- GitHub Pages'ın ne olduğunu ve nasıl etkinleştirileceğini öğrenmek
- Branch ve Actions tabanlı Pages yayın kaynaklarını ayırt etmek
- Custom domain ve HTTPS ayarlarını bilmek
- Pages için uygun ve uygun olmayan kullanım senaryolarını tanımak
GitHub Pages, GitHub repo’larından doğrudan statik web sitesi yayınlayan ücretsiz hosting hizmetidir. HTML, CSS, JavaScript ve Markdown içerik destekler. Jekyll ile entegre çalışır ama herhangi bir statik site üreteci kullanılabilir.
Pages’ı etkinleştirmek
Settings → Pages → Source seçeneğinden:
Kaynak seçenekleri
| Kaynak | Açıklama |
|---|---|
| Branch: main (/ veya /docs) | Belirtilen branch’teki içerik doğrudan yayınlanır |
| GitHub Actions | Bir Actions workflow build eder ve yayınlar |
Branch tabanlı yayın: repo kökündeki veya /docs klasöründeki HTML/Markdown dosyaları yayınlanır. Actions tabanlı yayın: daha esnektir, derleme adımları içerebilir (npm run build gibi).
Otomatik URL yapısı
| Repo tipi | URL |
|---|---|
username.github.io (özel repo) | https://username.github.io |
org-name.github.io | https://org-name.github.io |
| Diğer repo’lar | https://username.github.io/repo-name |
Kullanıcı/org Pages için repo adı username.github.io olmalı ve default branch kullanılır.
Jekyll ile Markdown
Pages’ın varsayılan statik site üreticisi Jekyll’dir. Repo’da _config.yml dosyası oluşturulunca Jekyll aktif olur. Markdown dosyaları otomatik HTML’e çevrilir.
# _config.yml
title: Benim Sitem
description: GitHub Pages ile yayınlanan kişisel site
theme: minima
Jekyll kullanmak istemiyorsan .nojekyll dosyası ekle (boş dosya yeterli) — GitHub Jekyll işlemeyi atlar.
Custom domain
Pages’a özel domain eklemek için:
- Settings → Pages → Custom domain’e
www.example.comgir - Domain sağlayıcında DNS kayıtları oluştur:
Akaydı: GitHub’ın IP’leriCNAMEkaydı:username.github.io
- HTTPS enforce et (Let’s Encrypt sertifikası otomatik oluşturulur)
Actions ile Pages workflow
# .github/workflows/pages.yml
name: Deploy to GitHub Pages
on:
push:
branches: [main]
permissions:
contents: read
pages: write
id-token: write
jobs:
build-and-deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci && npm run build
- uses: actions/upload-pages-artifact@v3
with:
path: dist/
- id: deployment
uses: actions/deploy-pages@v4
Pages kullanım sınırlamaları
| Kısıtlama | Değer |
|---|---|
| Site boyutu | 1 GB |
| Bandwidth | 100 GB/ay |
| Build süresi | 10 dakika |
| Repo boyutu | 1 GB önerilir |
Pages üretim uygulaması için değil; documentation, portföy, blog, kurs notları için idealdir.
Sınav perspektifinden dikkat noktaları
- Pages varsayılan olarak kapalıdır — Settings’ten etkinleştirilmeli
- Public repo’da Pages ücretsiz; private repo’da GitHub Pro/Teams/Enterprise gerekebilir
- Custom domain HTTPS’yi engelleme — her zaman enforce edilebilir
CNAMEdosyası repo’ya eklenirse custom domain kalıcı olur- Pages sitesi search engine’lere endekslenir (private repo olsa bile) — dikkatli ol
Sırada ne var?
Sonraki derste GitHub Packages ile paket yönetimini ele alacağız.