اقدامات GitHub: انتشار خودکار
(بخش: تکنولوژی و زیرساخت)
خلاصه ای کوتاه
GitHub Actions یک «خط لوله به عنوان کد» بومی در مخزن است. برای iGaming، اینها نسخه های سریع و ایمن خدمات backend، frontends، ETL/DBT و ML/LLM هستند: ماتریس های تست، کش وابستگی، استخرهای دونده جدا شده، Workflows قابل استفاده مجدد برای استانداردهای یکنواخت، OIDC به جای اسرار طولانی مدت، امضا و SBOM، منتشر شده توسط برچسب ها و GitOps-bumps از مانیفست ها. کلید قالب ها و دروازه های کیفیت/امنیت برای حفظ p99 و هزینه تحت کنترل است.
1) اصول معماری
خطوط لوله به عنوان کد («.github/workflows/.yml»)، DRY از طریق اقدامات قابل استفاده مجدد/کامپوزیت.
استخر دونده: میزبانی (اوبونتو آخرین) + خود میزبانی (K8s/VM، GPU برای ML).
محیط ها: «dev/stage/prod» با داوران مورد نیاز، مدت زمان و اسرار محیطی.
سیاست ها: شاخه ها/برچسب های محافظت شده، CODEOLDERS، چک های اجباری.
قابلیت مشاهده: خلاصه های شغلی، مصنوعات، ورود به سیستم، معیارهای مدت زمان.
2) قالب پایه CI → CD (باطن)
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
ایده: PR → lint/units → security → by tag 'v' - SBOM/signature and GitOps-bump manifestos for deploy.
3) استفاده مجدد: قابل استفاده مجدد/کامپوزیت
گردش کار قابل استفاده مجدد: قالب های تک خط لوله برای همه خدمات (در یک مخزن جداگانه '.github').
اقدامات کامپوزیت: چسباندن مراحل مکرر (lint/units/scans).
yaml jobs:
ci_template:
uses: your-org/ci-templates/.github/workflows/python. yml@v3 with:
python: '3. 12'
run-tests: true
4) ماتریس، حافظه پنهان و عملکرد
'strategy. ماتریس برای تست های موازی (زبان/DB/OS).
کش: «اقدامات/کش» برای وابستگی ؛ BuildKit с 'cache-to: gha'; پروکسی های وابستگی
رقابت پذیری: 'همزمانی: گروه: api- $ {github. ref}, cancel-in-progress: true '- موجب صرفه جویی در دقیقه.
مصنوعات: گزارش های فروشگاه/پوشش/پروفایل با «روز نگهداری».
yaml strategy:
matrix:
py: [ '3. 10', '3. 12' ]
db: [ 'mysql', 'postgres' ]
5) محیط ها и تاییدیه ها
پیکربندی داوران مورد نیاز برای «تولید» (دروازه دستی).
اسرار محیطی: استقرار نشانه ها، کلید های امضا، URL غرفه ها.
طول عمر محیط پیش نمایش (خودکار منقضی) برای کنترل هزینه.
6) دسترسی OIDC به ابرها (بدون اسرار طولانی مدت)
«id-token: write» را فعال کنید، سیاست اعتماد را در ابر پیکربندی کنید و از اعتبارات موقت استفاده کنید.
قابل استفاده برای AWS/Azure/GCP/artifact-registers/secret-managers.
اصل کمترین امتیاز: نقش های فردی در «dev/stage/prod».
yaml
- name: Assume cloud role via OIDC uses: your-org/oidc-assume@v1 with:
role: arn:aws:iam::123:role/gha-deploy-prod
7) نسخه ها، برچسب ها و مصنوعات
انتشار توسط برچسب: changelog، دارایی های آزاد، انتشار تصاویر/بسته ها.
ایمنی: برچسب های «فقط به جلو»، امضای کانتینر/نمودار.
SBOM (CycloneDX/SPDX) + امضا (cosign/sigstore) - دروازه بدون علامت - بدون استقرار.
8) GitOps и تحویل پیشرفته
CD «از اقدامات» نیست، بلکه از طریق PR/commit به آشکار repo (Argo CD/Flux) است.
قناری/آبی سبز: وزن/نسخه مراحل GitOps-bump ؛ ارتقاء خودکار در معیارهای SLO.
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) امنیت خط لوله و زنجیره تامین
چه کسی می تواند اجرا شود: فقط از شاخه های محافظت شده/برچسب ها، با چک های مورد نیاز.
اسکن: SAST/SCA/Secret-scan، DAST در محیط های پیش نمایش.
امضاها: تصاویر، نمودار هلم، باینری ؛ بررسی در هنگام تخلیه.
سیاستمداران: ارسال فقط از جریان کار قابل اعتماد ؛ پین SHA برای اقدامات شخص ثالث.
10) قابلیت مشاهده، SLO و ChatOps
گزارش خلاصه (JUnit/coverage/scans)، وضعیت در روابط عمومی.
معیارها: مدت زمان مرحله، موفقیت/شکست، صف دونده.
ChatOps: نظرات ربات در PR (لینک به داشبورد، URL پیش نمایش)، دستورات «/promote »، «/rollback» از طریق «workflow _ dispatch».
11) FinOps (هزینه دقیقه و منابع)
همزمانی لغو برای روابط عمومی، ماتریس فقط برای قسمتهای تغییر یافته (مسیرها-فیلتر).
بهداشت مصنوعات: «روزهای نگهداری»، پیش نمایش خودکار نزدیک
استخرهای خود میزبان برای مجامع سنگین/ML، شب «ساعت آرام».
کش وابستگی و کش BuildKit GHA پس انداز قابل توجهی هستند.
12) مونورپوس و ارکستراسیون والدین/کودک
پوشه/مسیر باعث: گردش کار مستقل در هر جزء.
قابل استفاده مجدد به عنوان یک لایه استاندارد سازی بین تیم ها (پرداخت/ریسک/CRM/ETL/ML).
جداسازی اسرار/محیط ها توسط اجزاء.
13) قالب برای iGaming
الف) Backend/API (برو/گره/پایتون)
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 (مصنوعات استنتاج)
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) چک لیست پیاده سازی
1. الگوهای CI/CD (قابل استفاده مجدد/کامپوزیت) را تعریف کنید و آنها را به تمام مخازن اعمال کنید.
2. شامل محیط هایی با تایید و تقسیم اسرار.
3. برو به OIDC به ابر/مدیران مخفی، حذف کلید با دوام.
4. SAST/SCA/Secrets/DAST، SBOM و امضای مصنوع را وارد کنید. دروازه های آسیب پذیری بحرانی
5. پیکربندی GitOps: manifest-repo، auto-bumps images/versions، canary/blue-green.
6. بهینهسازی نهانگاه/ماتریس، 'همزمانی. لغو در حال پیشرفت، پاک کردن مصنوعات.
7. دونده های خود میزبان (از جمله GPU ها) را با محدودیت و انزوا مستقر کنید.
8. فعال کردن مسیرها-فیلتر و تنظیمات قانون برای جلوگیری از رانندگی jabs اضافی.
9. اضافه کردن ChatOps: وضعیت/دستورات ؛ گزارش در روابط عمومی
10. سیاست های استفاده ایمن از اقدامات را اصلاح کنید (پین SHA، محدود کردن خارجی).
15) ضد گلوله
همان مراحل در تمام مخازن به جای Reusable/Composite → خارج از استانداردهای همگام سازی.
اسرار ابر طولانی مدت در متغیرها به جای OIDC.
عدم وجود محیط/مصوبات برای
نسخه های غیر فشرده اقدامات شخص ثالث → خطرات زنجیره تامین
بدون SBOM/امضا → بدون تأیید بر روی CD.
ماتریس های عظیم که همیشه اجرا می شوند، هزینه را افزایش می دهند.
CD از اقدامات به طور مستقیم به تولید بدون تغییرات ردیابی GitOps.
خلاصه
اقدامات GitHub اجازه می دهد تا شما را به ساخت یک خط لوله تک، امن و قابل تکرار از نسخه های: استاندارد خطوط لوله از طریق قابل استفاده مجدد/کامپوزیت، استفاده از OIDC و محیط های با مصوبات، پیاده سازی SBOM/امضا، انتقال CD به GitOps با تحویل مترقی، و هزینه های تحت کنترل از طریق کش/ماتریس/رقابت. این رویکرد با سرعت محصول iGaming مطابقت دارد، کیفیت را حفظ می کند و خطرات عملیاتی را کاهش می دهد.