Logo GH

פעולות GitHub: שחרור אוטומטי

(סעיף: טכנולוגיה ותשתיות)

תקציר

GitHub Actions הוא צינור מקומי כקוד במאגר. עבור iGaming, אלה הם שחרורים מהירים ומאובטחים של אחוריים, חזיתות, ETL/DBT ושירותי ML/LLM: מטריצות מבחן, מטמון תלות, בריכות אצן מבודדות, Rausable Workflows לסטנדרטים אחידים, OIDC במקום סודות ארוכים, חתימה ו-SBBOM M תגיות ו-GitOps-בליטות של מניפסטים. המפתח הוא תבניות ושערי איכות/אבטחה כדי לשמור על p99 ועלות תחת שליטה.

1) עקרונות אדריכליים

צינורות כקוד ('.github/workflows/.yml'), DRUSE by Reusable/Composite Actions.
בריכות ראנר (באנגלית: Runner Pools) הן בריכות המארחות (ubuntu-last) + מארחות את עצמן (K8s/VM, GPU עבור ML).
סביבות: dev/stage/prod' עם סוקרים נדרשים, פסקי זמן, וסודות סביבה.
מדיניות: ענפים מוגנים/תגיות, CODEOWNERS, בדיקות חובה.
תצפית: סיכומי עבודה, חפצים, כריתת עצים, מדדי משך.

2) תבנית בסיסית CI # CD (backend)

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 * מוך/יחידות * אבטחה * על ידי 'V' - SBOM/חתימה ו-GitOps-bump מניפסואים לפריסה.

3) שימוש חוזר: שמיש/מורכב

Reusable Workflows: תבניות צינור בודדות לכל השירותים (ב-refo '.github').
פעולות מורכבות: הדבקת צעדים חוזרים (מוך/יחידות/סריקות).

דוגמה לקריאה שניתן להשתמש בה מחדש:
yaml jobs:
ci_template:
uses: your-org/ci-templates/.github/workflows/python. yml@v3 with:
python: '3. 12'
run-tests: true

4) מטריצות, מטמון וביצועים

סטראטגי. מטריקס למבחנים מקבילים (שפות/DB/OS).
מטמון: ”פעולות/מטמון” לתלות; Latective Kit 'cache-to: gha'; פרוקסי תלות.
תחרותיות: "מקורית: קבוצה: api - $ 'github. ביטול בהתקדמות, נכון, חוסך דקות.
חפצים: דוחות חנות/סיקור/פרופילים עם ”שימור ימים”.

דוגמא למטריקס:
yaml strategy:
matrix:
py: [ '3. 10', '3. 12' ]
db: [ 'mysql', 'postgres' ]

5) אישורים סביבתיים

הגדרות דרושות סוקרים עבור 'ייצור' (שער ידני).
סודות סביבה: פריסת אסימונים, מפתחות חתימה, כתובת של יציעים.
סביבת תצוגה מקדימה (תפוגה אוטומטית) לבקרת עלויות.

6) גישת OIDC לעננים (ללא סודות ארוכי ימים)

אפשר ”id-token: write”, הגדרת מדיניות אמון בענן ושימוש בנקודות זכות זמניות.
ישים עבור AWS/Azure/GCP/חפץ-רשם/מנהל סודי.
עיקרון החיסיון המועט ביותר: תפקידים אישיים על "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 (CyclonDX/SPDX) + חתימה (cosign/sigstore) - שער לא חתום - אין פריסה.

8) משלוח מתקדם של GitOps

התקליטור אינו "from Actions', אלא באמצעות PR/להתחייב למניפסט רפו (Argo CD/Flux).
קנרית/כחול-ירוק: משקל/גרסה GitOps-bump steps; קידום אוטומטי על מדדי SLO.

דוגמה לבליטה של GitOps (רעיון):
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/סריקה סודית, DAST על סביבות תצוגה מקדימה.
חתימות: תמונות, גיליונות הלם, בינארי; אימות במהלך התרוקנות.
פוליטיקאים: נשלחים רק מזרמי עבודה מהימנים; סיכת SHA לפעולות צד שלישי.

10) יכולת תצפית, SLO ו ־ ChatOps

דו "חות סיכום (Junit/כיסוי/סריקות), סטטוסים ביחסי ציבור.
מדדים: משך במה, הצלחה/כישלון, תור רץ.
ChatOps: הערות בוט ביחסי ציבור (קישורים ללוחות מחוונים, תצוגה מקדימה URL), פקודות '/קידום ', '/rollback' באמצעות 'workflow _ slock'.

11) FinOps (עלות דקות ומשאבים)

ביטול קונקורנסי ליחסי ציבור, מטריצה רק לחלקים משתנים (paths-filter).
היגיינה של חפצים: ”שימור ימים”, תצוגה מקדימה אוטומטית.
בריכות המארחות את עצמן לאסיפות כבדות/מל "ל, לילה" שעות שקטות ".
מטמון תלות ומטמון קיט GHA הם חיסכון משמעותי.

12) מונוראפוסים ותזמור הורה/ילד

מפעיל תיקייה/נתיב: זרימת עבודה עצמאית לרכיב.
ניתן להשתמש מחדש כשכבת סטנדרטיזציה בין קבוצות (תשלומים/סיכון/CRM/ETL/ML).
הפרדת סודות/סביבות על ידי רכיבים.

13) תבניות לאיימינג

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 (פריטי הסקה)

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 (Reusable/Composite) והחיל אותן על כל התקליטורים.
2. כולל סביבות עם אישורים וסודות מפוצלים.
3. עבור ל-OIDC לעננים/מנהלים סודיים, הסר מפתחות עמידים.
4. הזן חתימת SAST/SCA/סודות/DAST, SBOM וחתימת חפץ; שערי פגיעות קריטיים.
5. הגדרות GitOps: מניפסט-repo, אוטומטי-בליטות תמונות/גרסאות, קנרית/כחול-ירוק.
6. לייעל מטמון/מטריצות, "במקביל. מבטל בהתקדמות, מפנה חפצים.
7. פריסת רצים המארחים את עצמם (כולל GPUs) עם גבולות ובידוד.
8. אפשר מסנן שבילים והגדרות כללים כדי להימנע מנהיגת דקירות נוספות.
9. הוסף שאטופים: סטטוסים/פקודות; דיווחים ביחסי ציבור.
10. תיקון מדיניות השימוש המאובטח בפעולות (pin SHA, להגביל חיצוני).

15) תרופות אנטי ־ פטריות

אותם צעדים בכל הפעולות המחודשות במקום Reusable/Composite = = מתוך סטנדרטים מסונכרנים.
סודות עננים ארוכי חיים במשתנים במקום במעקב.

היעדר סביבות/אישורים עבור

גרסאות לא דחוסות של צד שלישי פעולות # סיכוני שרשרת אספקה.
אין SBOM/חתימות = אין אימות על תקליטור.
מטריצות מסיביות שתמיד עולות.
תקליטור מפעולות ישירות לייצור ללא שינויים באיתור GitOps.

תקציר

GitHub Actions מאפשר לך לבנות צינור יחיד, מאובטח ומשוחזר של שחרורים: תקן צינורות באמצעות Reusable/Composite, השתמש ב-OIDC וסביבותיו עם אישורים, יישם את SBOM/חתימה, העביר תקליטור ל-GitOps עם משלוח פרוגרסיבי, ועלויות תחת שליטה באמצעות מטמון/מטריסה/תחרותית. גישה זו מאזנת את קצב המוצר של iGaming, שומרת על איכות ומפחיתה סיכונים תפעוליים.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

Telegram
@Gamble_GC
התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.