Logo GH

GitHub Actions: Çykyşy awtomatlaşdyrmak

(Bölüm: Tehnologiýalar we infrastruktura)

Gysgaça gysgaça

GitHub Actions - ammardaky ýerli "konweýer". iGaming üçin bular arka, öň, ETL/DBT we ML/LLM hyzmatlarynyň çalt we howpsuz çykarylmagydyr: synag matrisalary, garaşlylyk keşleri, izolirlenen howuzlar, bitewi standartlar üçin Reusable Workflows, uzak möhletli syrlaryň ýerine OIDC, gol we SBOM, bellikler we GitOps-manifestleriň bamplary boýunça neşirler. Açar - p99 we çykdajylary gözegçilik astynda saklamak üçin hil/howpsuzlyk şablonlary we geýtleri.

1) Binagärlik ýörelgeleri

Kod hökmünde paýlaýynlar ('.github/workflows/.yml'), Reusable/Composite Actions arkaly DRY.
Runner-howuzlar: hosted (ubuntu-latest) + self-hosted (K8s/VM, GPU for ML).
Gurşaw (Environments): 'dev/stage/prod' required reviewers, wagt we daşky gurşaw syrlary bilen.
Syýasatlar: protected branches/tags, CODEOWNERS, hökmany barlaglar.
Syn edilişi: job summaries, artefaktlar, logirleme, dowamlylyk metrikleri.

2) CI → CD (backend) esasy şablon

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

Ideýa: PR → lint/birlik → howpsuzlyk → 'v' - SBOM/gol we GitOps-bamp manifestleri deploi üçin.

3) Gaýtadan ulanmak: Reusable/Composite

Reusable Workflows: ähli hyzmatlar üçin birmeňzeş pipeline şablonlary (aýratyn repo '.github' -da).
Composite Actions: gaýtalanýan ädimleri ýelmemek (lint/unit/skan).

Reusable çagyryş mysaly:
yaml jobs:
ci_template:
uses: your-org/ci-templates/.github/workflows/python. yml@v3 with:
python: '3. 12'
run-tests: true

4) Matrisalar, kesiş we öndürijilik

`strategy. matrix 'paralel synaglar üçin (diller/DB/OS).
Garaşlylyk üçin 'actions/cache' kesе; BuildKit с `cache-to: gha`; dependency proxies.
Bäsdeşlik ukyby: 'concurrency: group: api- $ {{github. ref}}, cancel-in-progress: true '- minutlary tygşytlaýar.
Artefaktlar: hasabatlary/örtükleri/profilleri 'retention-days' bilen saklamak.

Matrisa mysaly:
yaml strategy:
matrix:
py: [ '3. 10', '3. 12' ]
db: [ 'mysql', 'postgres' ]

5) Environments и approvals

Required reviewers for 'production' (Goll Gate).
Daşky gurşawyň gizlinlikleri: deploi bellikleri, gol açarlary, stendleriň URL-leri.
Çykdajylara gözegçilik etmek üçin deslapky gurşaw (auto-expire) ömri.

6) OIDC-bulutlara girmek (uzak wagtlap gizlin)

'id-token: write' -ni açyň, bulutda trust-policy sazlaň we wagtlaýyn kredenşllary ulanyň.
AWS/Azure/GCP/artefakt-sanawlar/gizlin-dolandyryjylar üçin ulanylýar.
least privilege: 'dev/stage/prod' -da aýratyn rollar.

Ädimiň mysaly (düşünje):
yaml
- name: Assume cloud role via OIDC uses: your-org/oidc-assume@v1 with:
role: arn:aws:iam::123:role/gha-deploy-prod

7) Relizler, taglar we artefaktlar

Tag boýunça release: changelog, release-assets, şekilleri/paketleri çap etmek.
Immutability: "diňe öňe" bellikleri, konteýnerleriň/tertipleriň goly.
SBOM (CycloneDX/SPDX) + gol (cosign/sigstore) - derweze "golsyz - deploi ýok".

8) GitOps и progressive delivery

CD "Actions" -dan däl-de, PR/commit arkaly manifest-repoda (Argo CD/Flux).
Canary/blue-green: GitOps-bampa agramy/wersiýasy; SLO-metrikler boýunça awto-mahabat.

GitOps-bampa mysaly (ideýa):
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) Paýlaýnyň we üpjünçilik zynjyrynyň howpsuzlygy

Kimler işe girizip biler: Diňe goragdan branches/tags, bilen required checks.
Skaner: SAST/SCA/Secret-scan, DAST.
Gollar: şekiller, Helm-diagrammalar, binarnikler; deploýda barlamak.
Syýasatçylar: diňe ynanylan workflowlardan jedel edýänler; üçünji taraplar üçin pin SHA.

10) Synlamak, SLO we ChatOps

Jemi hasabatlar (JUnit/coverage/skanlar), PR-daky statuslar.
Metrikler: tapgyrlaryň dowamlylygy, üstünlik/feýla, "rannerleriň nobaty".
ChatOps: "workflow _ dispatch" arkaly "/promote ", "/rollback" buýruklary.

11) FinOps (minutlaryň we çeşmeleriň bahasy)

PR üçin Concurency-cancel, matrisa diňe üýtgän bölekler üçin (paths-filter).
Artefaktlaryň arassaçylygy: 'retention-days', awtomatiki örtük preview env.
Self-hosted agyr gurnama howuzlary/ML, gijeki "asuda sagatlar".
Dependency cache we BuildKit GHA-kesh - ep-esli tygşytlamak.

12) Monorepo we Parent/Child-orkestri

Bukjalar/ýollar boýunça triggerler: komponentde garaşsyz workflow.
Toparlaryň arasynda standartlaşdyryş gatlagy hökmünde reusable (Payments/Risk/CRM/ETL/ML).
Syrlary/gurşawy komponentler boýunça bölmek.

13) iGaming üçin şablonlar

A) Backend/API (Go/Node/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 (inferens-artefaktlar)

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) Girizmegiň çek-sanawy

1. CI/CD (Reusable/Composite) şablonlaryny kesgitläň we olary ähli repolara ulanyň.
2. Environments-i approvals we aýry-aýry syrlar bilen açyň.
3. OIDC-e bulutlara/gizlin dolandyryjylara geçiň, çydamly açarlary aýyryň.
4. SAST/SCA/Secrets/DAST, SBOM we artefaktlaryň goluny giriziň; möhüm gowşaklyklar boýunça geýtlar.
5. GitOps: manifest-repo, şekilleriň/wersiýalaryň awto-bamplary, canary/blue-green.
6. Cache/matrisa, 'concurrency. cancel-in-progress ', artefaktlary arassalamak.
7. Öz-hosted runner-howuzlary (şol sanda GPU) çäklendirmeler we izolýasiýa bilen açyň.
8. Artykmaç joblary kowmazlyk üçin paths-filter we rule sazlamalaryny açyň.
9. ChatOps goşuň: statuslar/buýruklar; PR hasabatlary.
10. Actions (SHA pin, daşarky çäkleri) howpsuz ulanmak syýasatlaryny düzüň.

15) Antipatternler

Reusable/Composite → rasinxron standartlarynyň ýerine ähli repolarda birmeňzeş ädimler.
OIDC-iň ýerine üýtgeýjilerde uzak wagtlap dowam edýän bulut syrlary.
Önümler üçin Environments/approvals ýoklugy.
Daşarky Actions → supply-chain töwekgelçilikleri.
SBOM/gollar ýok → CD barlamak ýok.
Elmydama açylýan massiw matrisalar → çykdajylaryň ýokarlanmagy.
Actions-dan CD-ler GitOps-tracking üýtgeşmeleri bolmazdan gönüden-göni önüme.

Netijeler

GitHub Actions ýeke-täk, howpsuz we ýerine ýetirilip bilinjek çykaryş konweýerini gurmaga mümkinçilik berýär: "Reusable/Composite" arkaly paýlaýjylary standartlaşdyryň, OIDC we approvals bilen gurşawy ulanyň, SBOM/goly giriziň, CD-ni progressiw delivery bilen GitOps-a geçiriň, çykdajylar bolsa keş/matrisa/bäsdeşlik arkaly gözegçilik astynda. Şeýle çemeleşme iGaming-önümiň tizligine görä giňeldilýär, hilini saklaýar we amal töwekgelçiligini peseldýär.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.