Modül 4 · Modern development · ⏱ 10 dakika

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

KaynakAçıklama
Branch: main (/ veya /docs)Belirtilen branch’teki içerik doğrudan yayınlanır
GitHub ActionsBir 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 tipiURL
username.github.io (özel repo)https://username.github.io
org-name.github.iohttps://org-name.github.io
Diğer repo’larhttps://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:

  1. Settings → Pages → Custom domain’e www.example.com gir
  2. Domain sağlayıcında DNS kayıtları oluştur:
    • A kaydı: GitHub’ın IP’leri
    • CNAME kaydı: username.github.io
  3. 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ıtlamaDeğer
Site boyutu1 GB
Bandwidth100 GB/ay
Build süresi10 dakika
Repo boyutu1 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
  • CNAME dosyası 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.