Push Package #1
GitHub Actions kullanarak Docker imajı oluşturma ve ardından GitHub Container Registry (GHCR)’ye (veya benzeri bir container registry'e) pushlama (yayınlama) sürecini gösteriyor.
1) Amaç: Docker İmajını Build Edip GitHub Packages’e Push Etmek
Neden?
Projendeki Docker imajını GitHub’ın container registry’sinde saklayabilir, versiyonlayabilir ve dilediğin yerde kullanabilirsin.
Böylece Docker Hub gibi harici servislere bağımlı kalmadan, GitHub platformu içinde CI/CD ve paket yönetimini birleştirirsin.
2) Örnek Workflow Yapısı
on.push.branches: [ 'release' ]
on.push.branches: [ 'release' ]
Bu Workflow, “release” branch’ine yapılan push’larda tetikleniyor.
Genelde “main” veya “release” branch’lerine commit atınca otomatik Docker imajı build + push yapmak istenebilir.
Ortak “env” Değişkenleri;
REGISTRY=ghcr.io
: İmajı GHCR’ye atmak istediğini belirtiyor.IMAGE_NAME=${{ github.repository }}
: Repo adını Docker imajı adı olarak kullanıyor (örnek:owner/repo
).
permissions
Docker imajı push edebilmek için “packages: write” izni gerekli.
GITHUB_TOKEN kullanırken bu permission’ı eklemezsen push işlemi başarısız olur.
3) Adımlar (Steps) İncelemesi
Checkout repository
Log in to the Container registry
docker/login-action
ile GHCR (ya da belirttiğin registry) için login yapıyorsun.Kullanıcı adı “GitHub aktörü” (workflow’u tetikleyen kullanıcı), şifre olarak da “secrets.GITHUB_TOKEN” kullanılıyor.
Bu şekilde Docker CLI “login” komutu yapmadan, action kendisi authentication’ı hallediyor.
Extract metadata (tags, labels) for Docker
Bu step, Docker imajına eklenecek tag, label gibi bilgileri otomatik oluşturuyor.
Örneğin commit SHA, sürüm etiketi, vs. Docker imajına eklenebilir.
Çıktısını (
steps.meta.outputs.tags
vb.) sonraki adımda kullanıyor.
Build and push Docker image
Asıl işi yapan step: Docker imajını build edip GHCR’ye push ediyor.
context: .
→ “.” klasöründen Dockerfile alır.push: true
→ Build bittikten sonra registry’ye push etsin.tags
,labels
→ Bir önceki “metadata-action” step’inden gelen bilgileri kullanıyor.
Özet
Bu Workflow, “release” branch’e her push geldiğinde Docker imajı oluşturup GHCR’ye yayınlıyor.
docker/login-action
ile oturum açılıyor,docker/metadata-action
ile etiketler ayarlanıyor,docker/build-push-action
ile imaj build/push ediliyor.Sonuçta projenin Docker imajı GHCR’de saklanmış oluyor, böylece diğer ortamlarda veya sunucularda doğrudan çekilip kullanılabiliyor.
Last updated
Was this helpful?