İçeriğe geç
0850 554 5439 [email protected]

Size nasıl yardımcı olabiliriz?

Rehberlerimizde ve eğitimlerimizde arama yapın ya da aşağıdaki kategorilere göz atın.

GitHub Actions ile Gyro Kapsayıcı'ya otomatik deploy: derle, gönder, yayınla

Gyro Kapsayıcı (ECS) 15 görüntülenme Kullanım rehberi Son doğrulama: Markdown
Bu rehberde ne öğreneceksinizHer main dalı güncellemesinde Docker imajınızı derleyip Gyro imaj deposuna göndermeyi, gyro komut satırıyla yeni sürümü kesintisiz yayınlamayı ve sorun olursa otomatik geri almayı.
Süre12 dakika
Kimin içinKodu GitHub'da tutan geliştiriciler.
GerekenlerÇalışan bir Gyro Kapsayıcı servisi (ilk uygulama), deponuzda bir Dockerfile, GitHub'da Settings > Secrets and variables > Actions erişimi.

1. Yaklaşım

kod
git push → GitHub Actions: docker build → docker push (Gyro imaj deposu)
                         → gyro container service update (yeni sürüm, kesintisiz)
                         → kontrol; başarısızsa gyro container service rollback

İmajı commit numarasıyla etiketlersiniz; böylece her sürüm sürüm geçmişinde commit'e bağlanır ve geri alma kolaylaşır.

2. Hazırlık: gizli değişkenler

  1. İmaj deposu parolası: Gyro panelinde İmaj Deposu sayfasından kullanıcı adını ve parolayı alın (Gyro imaj deposu).
  2. API anahtarı: Müşteri panelinde hesap menüsünden API Kimlik Bilgileri'nde yeni bir anahtar oluşturun; izinlerden hizmet okuma ve yazma izinlerini işaretleyin. Anahtarı CI için ayrı tutun (Gyro API ile ilk adım).
  3. GitHub deposunda Settings > Secrets and variables > Actions altında şunları ekleyin:
Ad Tür Değer
GYRO_REGISTRY_USER Secret İmaj deposu kullanıcı adı
GYRO_REGISTRY_PASSWORD Secret İmaj deposu parolası
GYRO_TOKEN Secret API anahtarı
GYRO_ENV_ID Variable Kapsayıcı ortam numaranız (ör. 12345)
GYRO_CODE Variable Adres kodunuz (imaj öneki)
Dikkat

Parola ve anahtarları iş akışı dosyasına yazmayın; yalnız secrets olarak kullanın. İş akışı günlüklerinde GitHub bu değerleri maskeler.

3. İş akışı dosyası

Depoda .github/workflows/deploy.yml oluşturun:

yaml
name: Gyro'ya deploy
on:
  push:
    branches: [main]

env:
  REGISTRY: registry.ist.gyrohosting.com
  SERVICE: web                        # Gyro Kapsayıcı'daki servis adı

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: İmaj deposuna giriş
        run: echo "${{ secrets.GYRO_REGISTRY_PASSWORD }}" | docker login $REGISTRY -u "${{ secrets.GYRO_REGISTRY_USER }}" --password-stdin

      - name: Derle ve gönder
        run: |
          IMAGE=$REGISTRY/${{ vars.GYRO_CODE }}/$SERVICE:${{ github.sha }}
          docker build -t "$IMAGE" .
          docker push "$IMAGE"
          echo "IMAGE=$IMAGE" >> "$GITHUB_ENV"

      - name: gyro CLI kur
        run: |
          curl -fsSL https://www.gyrohosting.com/cli/install.sh | GYRO_INSTALL_DIR="$HOME/.local/bin" sh
          echo "$HOME/.local/bin" >> "$GITHUB_PATH"

      - name: Yeni sürümü yayınla
        env:
          GYRO_TOKEN: ${{ secrets.GYRO_TOKEN }}
        run: |
          gyro container service update ${{ vars.GYRO_ENV_ID }} $SERVICE \
            --image "$IMAGE" --reason "${{ github.sha }}" --yes

      - name: Yayını doğrula (en çok 5 dk)
        env:
          GYRO_TOKEN: ${{ secrets.GYRO_TOKEN }}
        run: |
          for i in $(seq 1 30); do
            STATE=$(gyro container service get ${{ vars.GYRO_ENV_ID }} $SERVICE -o json --query state | tr -d '"')
            echo "durum: $STATE"
            [ "$STATE" = "running" ] && exit 0
            sleep 10
          done
          echo "Yayın tamamlanamadı, önceki sürüme dönülüyor"
          gyro container service rollback ${{ vars.GYRO_ENV_ID }} $SERVICE --yes
          exit 1
Bilgi

Doğrulama adımındaki state alanı, gyro container service get ID AD -o json çıktısındaki servis durumudur; çıktınızın alan adını önce elle deneyip kontrol edin.

Bilgi

gyro aracının 1.10 ve üstü sürümlerinde container komutları bulunur. Kurulum betiği güncel sürümü kurar; belirli bir sürüm için GYRO_VERSION ortam değişkenini kullanın (gyro CLI kurulumu).

4. Nasıl çalışır?

  1. docker push imajı commit numarasıyla Gyro deposuna gönderir.
  2. gyro container service update yeni sürümü yayınlar. Kopyalar tek tek yenilenir; yeni kopya sağlık kontrolünü geçmeden eski kopya kapatılmaz (kesintisiz).
  3. Doğrulama adımı servis durumu running olana kadar bekler. 5 dakikada olmazsa rollback ile önceki sürüme döner ve iş akışı başarısız işaretlenir.
  4. Sürüm geçmişinde her sürümün yanında commit numarası görünür (Ölçekleme, güncelleme ve geri alma).

5. Başka bir depodan imaj çekmek (GHCR)

İmajı Gyro deposu yerine GitHub Container Registry'ye gönderirseniz Gyro tarafında bir kez erişim bilgisi tanımlayın: Düğüm Havuzu > Özel imaj deposu'nda ghcr.io, kullanıcı adı ve yalnız çekme (read:packages) izinli bir token girin ya da gyro container external-registry set ID --server ghcr.io --username KULLANICI --password TOKEN. İş akışında docker push ghcr.io/... yapıp --image ghcr.io/... ile yayınlarsınız. Gyro deposunu kullanırsanız bu adıma gerek yoktur.

6. Sık sorulan sorular

unauthorized ile push başarısız, ne yapmalıyım?

Kullanıcı adı/parola bu ortama ait olmalı ve imaj adı registry.ist.gyrohosting.com/<kodunuz>/… ile başlamalı. Parolayı yenilediyseniz GitHub secret'ını güncelleyin.

Her yayında depo doluyor mu?

Hayır; otomatik temizlik, son 10 sürümün imajlarını tutar ve kullanılmayanları siler. Gerekirse Saklanan sürüm değerini ayarlayın (imaj deposu).

Staging ve production ortamlarını ayrı tutabilir miyim?

Her biri için ayrı bir ortam (ya da aynı ortamda ayrı servis) kullanın; iş akışında GYRO_ENV_ID ve SERVICE değerlerini dal başına değiştirin.

Gizli değerleri (veritabanı parolası) iş akışından mı vermeliyim?

Hayır. Bir kez panelden ya da gyro container secret set ile girin; yeni sürümlerde korunurlar (Değişkenler ve gizli değerler).

Sıradaki adım

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.