Logo GH

GitHub Eylemleri: Sürümleri Otomatikleştirme

(Bölüm: Teknoloji ve Altyapı)

Kısa Özet

GitHub Eylemleri, bilgi havuzundaki yerel bir "kod olarak boru hattı'dır. İGaming için, bunlar arka uçların, ön uçların, ETL/DBT ve ML/LLM hizmetlerinin hızlı ve güvenli sürümleridir: test matrisleri, bağımlılık önbelleği, izole koşucu havuzları, tekdüze standartlar için yeniden kullanılabilir İş Akışları, uzun ömürlü sırlar yerine OIDC, imza ve SBOM, etiketler ve GitOps darbeleri ile bültenler Manifestoların. Anahtar, p99 ve maliyeti kontrol altında tutmak için şablonlar ve kalite/güvenlik kapılarıdır.

1) Mimari ilkeler

Kod olarak boru hatları ('.github/iş akışları/.yml'), Yeniden Kullanılabilir/Bileşik Eylemler yoluyla DRY.
Koşucu havuzları: barındırılan (ubuntu-en son) + kendi kendine barındırılan (K8s/VM, ML için GPU).
Ortamlar: Gerekli gözden geçirenler, zaman aşımları ve çevre sırları ile 'dev/stage/prod'.
Politikalar: korumalı şubeler/etiketler, CODEOWNERS, zorunlu kontroller.
Gözlemlenebilirlik: iş özetleri, eserler, günlük kaydı, süre metrikleri.

2) Temel şablon CI - CD (arka uç)

yaml name: ci-cd-backend on:
pull_request:
branches: [ main ]
push:
tags: [ "v" ]
permissions:
contents: read id-token: write    # для OIDC packages: write

env:
IMAGE: ghcr. io/${{ github. repository }}/api:${{ github. sha }}

jobs:
lint_test:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5 with: { python-version: '3. 12' }
- name: Cache pip uses: actions/cache@v4 with:
path: ~/.cache/pip key: pip-${{ runner. os }}-${{ hashFiles('requirements. txt') }}
- run: pip install -r requirements. txt
- run: make lint && make test
- name: Build & push image (BuildKit)
uses: docker/build-push-action@v6 with:
push: ${{ github. event_name == 'push' }}
tags: ${{ env. IMAGE }}
cache-from: type=gha cache-to: type=gha,mode=max

security:
needs: [ lint_test ]
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: SCA/SAST/Secrets uses: your-org/security-composite@v3  # Composite Action вашей орг.

release_prod:
if: startsWith(github. ref, 'refs/tags/v')
needs: [ security ]
runs-on: ubuntu-latest environment: production steps:
- uses: actions/checkout@v4
- name: SBOM & Sign uses: your-org/sbom-sign-action@v2 with:
image: ${{ env. IMAGE }}
- name: GitOps bump manifests uses: your-org/gitops-bump@v2 with:
image: ${{ env. IMAGE }}
path: apps/api/values. yaml

Fikir: PR> tiftik/birim> güvenlik> 'v' etiketiyle - SBOM/imza ve dağıtım için GitOps-bump manifestoları.

3) Yeniden kullanım: Yeniden kullanılabilir/Kompozit

Yeniden Kullanılabilir İş Akışları: tüm hizmetler için tek bir boru hattı şablonu (ayrı bir repo '.github'da).
Bileşik Eylemler: tekrarlanan adımların yapıştırılması (tiftik/birimler/taramalar).

Yeniden Kullanılabilir çağrı örneği:
yaml jobs:
ci_template:
uses: your-org/ci-templates/.github/workflows/python. yml@v3 with:
python: '3. 12'
run-tests: true

4) Matrisler, önbellek ve performans

'strateji. Paralel testler için matris (diller/DB/OS).
Önbellek: Bağımlılıklar için 'eylemler/önbellek'; BuildKit с 'cache-to: gha'; Bağımlılık vekilleri.
Rekabetçilik: 'eşzamanlılık: grup: api- $ {{github. ref}}, devam eden iptal: true '- dakika kazandırır.
Dışlayıcılar: raporları/kapsamı/profilleri 'tutma günleri'ile saklayın.

Matrix örneği:
yaml strategy:
matrix:
py: [ '3. 10', '3. 12' ]
db: [ 'mysql', 'postgres' ]

5) Ortamlar и onaylar

'Üretim' (manuel kapı) için gerekli gözden geçiricileri yapılandırın.
Çevre sırları: belirteçleri, imza anahtarlarını, standların URL'sini dağıtın.
Maliyet kontrolü için önizleme ortamı ömrü (otomatik zaman aşımı).

6) Bulutlara OIDC erişimi (uzun ömürlü sırlar olmadan)

'Id-token: write' özelliğini etkinleştirin, bulutta güven ilkesini yapılandırın ve geçici krediler kullanın.
AWS/Azure/GCP/artifact-registers/secret-managers için geçerlidir.
En az ayrıcalık ilkesi: 'dev/sahne/prod' üzerinde bireysel roller.

Örnek adım (konsept):
yaml
- name: Assume cloud role via OIDC uses: your-org/oidc-assume@v1 with:
role: arn:aws:iam::123:role/gha-deploy-prod

7) Sürümler, etiketler ve eserler

Etikete göre serbest bırak: changelog, yayın varlıkları, görüntüleri/paketleri yayınlama.
Bağışıklık: "Yalnızca ileri" etiketleri, konteyner/grafik imzası.
SBOM (CycloneDX/SPDX) + imza (cosign/sigstore) - imzasız kapı - dağıtım yok.

8) GitOps и aşamalı teslimat

CD "Eylemlerden'değil, bir repo manifestosuna (Argo CD/Flux) PR/taahhüt yoluyla.
Kanarya/mavi-yeşil: ağırlık/sürüm GitOps-bump adımları; SLO metriklerinde otomatik tanıtım.

GitOps tümseği örneği (fikir):
yaml
- uses: mikefarah/yq@v4 with:
cmd: yq -i '.image = strenv(IMAGE)' apps/api/values. yaml
- run:
git config user. name "gha-bot"
git commit -am "bump api -> $IMAGE" && git push

9) Boru hattı ve tedarik zinciri güvenliği

Kimler çalışabilir: yalnızca korunan dallardan/etiketlerden, gerekli kontrollerle.
Tarama: SAST/SCA/Gizli tarama, önizleme ortamlarında DAST.
İmzalar: görüntüler, Helm grafikleri, ikili dosyalar; tükenme sırasında doğrulama.
Politikacılar: yalnızca güvenilir iş akışlarından gönderiler; Üçüncü taraf Eylemler için SHA pin.

10) Gözlemlenebilirlik, SLO ve ChatOps

Özet raporları (JUnit/kapsama/taramalar), PR'deki durumlar.
Metrikler: sahne süresi, başarı/başarısızlık, koşucu kuyruğu.
ChatOps: PR'de bot yorumları (gösterge tablolarına bağlantılar, önizleme URL'si), 'workflow _ dispatch' aracılığıyla'/promote ','/rollback' komutları.

11) FinOps (dakika ve kaynak maliyeti)

PR için eşzamanlılık-iptal, yalnızca değişen parçalar için matris (yollar-filtre).
Eserlerin hijyeni: 'tutma günleri', otomatik kapanma önizlemesi env.
Ağır montajlar/ML, gece "sessiz saatler" için kendi kendine barındırılan havuzlar.
Bağımlılık önbelleği ve BuildKit GHA önbelleği önemli tasarruflardır.

12) Monorepos ve Ebeveyn/Çocuk orkestrasyonu

Klasör/yol tetikleyicileri: Bileşen başına bağımsız iş akışları.
Takımlar arasında bir standardizasyon katmanı olarak yeniden kullanılabilir (Ödemeler/Risk/CRM/ETL/ML).
Sırların/ortamların bileşenlere göre ayrılması.

13) iGaming için Şablonlar

A) Arka uç/API (Git/Düğüm/Python)

yaml name: backend on: [ pull_request, push ]
jobs:
ci:
uses: your-org/ci-templates/.github/workflows/backend. yml@v3 release:
if: startsWith(github. ref, 'refs/tags/v')
uses: your-org/ci-templates/.github/workflows/release. yml@v3 secrets: inherit

Б) ETL/DBT

yaml name: etl-dbt on: [ pull_request ]
jobs:
dbt:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5 with: { python-version: '3. 11' }
- run: pip install dbt-core dbt-bigquery
- run: dbt deps && dbt run && dbt test
- name: Publish docs run: dbt docs generate && tar czf docs. tgz target/
load artifact, retention period 3 days uses: actions/upload-artifact @ v4 with: {name: dbt-docs, path: docs. tgz, retention-days: 3 }

B) ML/LLM (çıkarım artifaktları)

yaml name: ml-pack on:
push:
tags: [ "model-" ]
jobs:
build-engine:
runs-on: self-hosted-gpu steps:
- uses: actions/checkout@v4
- run: python export_onnx. py
- run: trtexec --onnx=model. onnx --saveEngine=model. plan
- uses: actions/upload-artifact@v4 with: { name: engine, path: model. plan, retention-days: 7 }
- name: Sign & SBOM uses: your-org/sbom-sign-action@v2 with: { file: model. plan }

14) Uygulama kontrol listesi

1. CI/CD (Yeniden Kullanılabilir/Bileşik) şablonlarını tanımlayın ve bunları tüm repolara uygulayın.
2. Onayları ve bölünmüş sırları olan ortamları dahil edin.
3. Bulutlar/gizli yöneticilere OIDC gidin, dayanıklı anahtarları kaldırın.
4. SAST/SCA/Secrets/DAST, SBOM ve eser imzasını girin; Kritik kırılganlık kapıları.
5. GitOps'u yapılandırın: manifest-repo, otomatik çarpma görüntüleri/sürümleri, kanarya/mavi-yeşil.
6. Önbellek/matrisleri en iyileştirme, 'eşzamanlılık. İptal ediliyor ', artifaktlar temizleniyor.
7. Kendi kendine barındırılan koşucuları (GPU'lar dahil) sınırlamalar ve izolasyonla dağıtın.
8. Ekstra sarsıntıları önlemek için yol filtreleme ve kural ayarlarını etkinleştirin.
9. ChatOps ekleyin: durumlar/komutlar; Halkla ilişkiler raporları.
10. Fix the Actions güvenli kullanım politikaları (pin SHA, dışsal kısıtlama).

15) Antipatterns

Yeniden Kullanılabilir/Kompozit yerine tüm repolarda aynı adımlar - senkronizasyon dışı standartlar.
OIDC yerine değişkenlerde uzun ömürlü bulut sırları.

Ortamların Yokluğu/Onaylar

Üçüncü taraf Eylemlerinin sıkıştırılmamış sürümleri - tedarik zinciri riskleri.
SBOM/imza yok - CD'de doğrulama yok.
Her zaman çalışan masif matrisler - maliyet artışları.
GitOps izleme değişiklikleri olmadan doğrudan üretime Eylemler CD.

Özet

GitHub Actions, tek, güvenli ve tekrarlanabilir bir yayın hattı oluşturmanıza olanak tanır: Boru hatlarını Yeniden Kullanılabilir/Kompozit yoluyla standartlaştırın, OIDC ve onaylı ortamları kullanın, SBOM/imzayı uygulayın, CD'yi GitOps'a aşamalı teslimatla aktarın ve maliyetler önbellek/matrisler/rekabet gücü ile kontrol altında. Bu yaklaşım, iGaming ürününün hızına göre ölçeklenir, kaliteyi korur ve operasyonel riskleri azaltır.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Telegram
@Gamble_GC
Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.