Logo GH

GitHub Actions: ածխաջրածինների ավտոմատացում

(Բաժին ՝ Տեխնոլոգիաներ և ենթակառուցվածքներ)

Live ռեզյումե

GitHub Actions-ը հետազոտման մեջ «փոխակրիչ» է։ IGaming-ի համար սրանք արագ և անվտանգ backends, frontends, ETL/DBT և ML/LLM ծառայություններ են 'թեստերի մատրիցներ, կախվածություն, մեկուսացված runnner-puls, Reusable Workflows մեկ ստանդարտների համար, OIDC փոխարեն Երկար գաղտնիքները, ստորագրությունը և SBSA-ը, թեգերի և GitOps-bamps մանիֆեստների օրինագծերը։ Բանալին որակի/անվտանգության ձևանմուշներն ու խաղացողներն են, որպեսզի պահպանեն p99 և արժեքը վերահսկելու համար։

1) Ճարտարապետական սկզբունքները

Դելպլինները որպես կոդ («.github/workflows/.yml»), DRY-ն Reusable/Composite Actions-ի միջոցով։

Runner-puls (ubuntu-latest) + www.f-hosted (K8s/VM, GPU ML)։

Չորեքշաբթի (Environments): «dev/stage/www.ru» required reviewers, թայմաուտներ և գաղտնիքներ շրջակա միջավայրի վրա։

Քաղաքական գործիչները ՝ intected branches/tags, CODEOWNERS, պարտադիր ստուգումներ։

Դիտարկումը 'job summaries, արտեֆակտներ, տրամաբանություն, երկարության չափումներ։

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 delint/units-ը տեգուի վրա կոդավորման անվտանգությունն է' v '- SBSA/ստորագրություն և GitOps-bamp մանիֆեստ։

3) Կրկնվող օգտագործումը 'Reusable/Composite

Reusable Workflows: միասնական pipeline ձևանմուշներ բոլոր ծառայությունների համար (առանձին ռեպո «.github»)։

Composite Actions: կրկնվող քայլերի լանջը (լինտ/յունիտներ/սկաններ)։

Reusable-ի զանգի օրինակ

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

4) Մատրիցա, քաշ և արտադրողականություն

`strategy. matrone 'զուգահեռ թեստերի համար (լեզուներ/BD/OS)։

Քաշ '«actions/cache» կախվածության համար։ BuildKit с `cache-to: gha`; dependency proxies.

Մրցակցություն '"concurrency: group: api- դոլար + github։ ref++, cancel-in-progress: 112 "- խնայում է րոպեները։

Արտեֆակտներ 'պահել հաշվետվություններ/ծածկոցներ/պրոֆիլներ' «retention-days»։

Մատրիցի օրինակ

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

5) Environments и approvals

Patte required reviewers-ի համար 'production' (ձեռքի գեյթ)։

Շրջակա միջավայրի նախկին գաղտնիքները 'գաղտնիքները, ստորագրության բանալիները, URSTENDS-ը։

Կյանքի ժամանակը www.view-չորեքշաբթի (www.expire) արժեքի վերահսկման համար։

6) OIDC հասանելիությունը ամպերին (առանց երկարատև գաղտնիքների)

Միացրեք «id-token: write», պարամետրեր trust-policy ամպի մեջ և օգտագործեք ժամանակավոր քրեդենշլներ։

Օգտագործվում է AWS/Azure/GCP/artefact-Records/գաղտնի մենեջերների համար։

Leportprivilege սկզբունքը 'առանձնահատուկ դերեր' «dev/stage/2019»։

Մրցույթի օրինակը (հասկացություն)

yaml
- name: Assume cloud role via OIDC uses: your-org/oidc-assume@v1 with:
role: arn:aws:iam::123:role/gha-deploy-prod

7) Ալգորիթմներ, թեգեր և արտեֆակտներ

Rele.ru tegu: changelog, Express-ասետներ, պատկերների հրապարակումը/2019։

Immutability: Tegi «միայն առաջ», բեռնարկղերի/գծապատկերների ստորագրությունը։

SBSA (Cyclect DX/SPDX) + ստորագրությունը (cosport/sigstore) - գեյթ «առանց ստորագրության - ոչ մի ապացույց»։

8) GitOps и progressive delivery

CD-ը ոչ թե Actions-ից, այլ PR/commit միջոցով մանիֆեստ-ռեպոյի մեջ (Argo CD/Flux)։

Canary/blue-green: GitOps-bampa-ի քայլերը քաշի/տարբերակի; ավտոմեքենան խթանված է SLO-metriks-ով։

Օրինակ GitOps-bampa (գաղափար)

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) Անվտանգությունն ու մատակարարման շղթաները

Ո՞ վ կարող է սկսել 'միայն directed branches/tags-ից, required disks-ից։

Սկանավորում: SFC/SCA/Secret-scan, DLS-ը ավելի բարձր միջավայրերում։

Ստորագրություններ ՝ պատկերներ, Helm-charts, binarniks; վերաֆինանսավորումը դիֆերենցիալ դեպքում։

Քաղաքական գործիչներ 'վեճեր միայն վստահված վորկֆլոից։ pin SHA-ն երրորդ կողմի Actions-ի համար։

10) Դիտարկումը, SLO և ChatOps

Summary հաշվետվությունները (JUnit/coverage/sans), PR արձանները։

Մետրիկները 'փուլերի տևողությունը, հաջողությունը/ֆեյլները, «ռաներների հերթը»։

ChatOps: Bota մեկնաբանությունները PR-ում (հղում dashbords, ավելի բարձր-URL), թիմերը '/promote ', «/rollback »-ը'« workflow _ www.patch »միջոցով։

11) FinOps (րոպեների և ռեսուրսների արժեքը)

Conccurency-cancel-ի համար PR-ի համար, մատրիցները միայն փոխված մասերով (paths-inter)։

Արտեֆակտների հիգիենան ՝ «retention-days», ավտոսրահը ՝ view env։

Winf-hosted փամփուշտները ծանր հավաքման համար/ML, գիշերային «հանգիստ ժամացույց»։

Dependency cache-ը և BuildKit GHA-քեշը մեծ խնայողություն են։

12) Մոնորեպոն և Պարենտը/Child նվագախումբը

Հայրիկների/ճանապարհների հետքերը 'անկախ workflow բաղադրիչի վրա։

Reusable-ը որպես ստանդարտացման շերտ թիմերի միջև (Payments/Risk/CRM/ETL/ML)։

Գաղտնիքների/շրջակա միջավայրի բաժանումը բաղադրիչներով։

13) iGaming-ի համար

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 (inff-արտեֆակտներ)

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. Միացրեք Environments-ը approvals-ից և առանձին գաղտնիքները։

3. Գնացեք OIDC-ում ամպերի/գաղտնի մենեջերների, հեռացրեք երկարաժամկետ բանալիները։

4. Մուտքագրեք SFC/SCA/Secrets/DMS, SBSA և արտեֆակտների ստորագրությունը։ խաղացողները կրիտիկական խոցելիությամբ։

5. Patte GitoPs: մանիֆեստ-ռեպո, պատկերների/տարբերակների, canary/blue-green։

6. Օպտիմիզացրեք քեշը/մատրիցը, «concurrency»։ cancel-in-progress ", արտեֆակտների մաքրում։

7. Տեղադրեք www.f-hosted runner-puls (ներառյալ GPU) սահմանափակումներով և մեկուսացմամբ։

8. Միացրեք paths-corter և rule-2019-ը, որպեսզի չվնասեք ավելորդ ջոբները։

9. Ավելացրեք ChatOps: կարգավիճակներ/թիմեր; զեկույցներ PR-ում։

10. Տեղադրել Actions-ի անվտանգ օգտագործման քաղաքականությունը (pin SHA, սահմանափակել արտաքին)։

15) Անտիպատերնի

Reusable/Composite-ի փոխարեն նույն քայլերը համապատասխանում են ստանդարտների ռասինխրոնին։

Երկարատև cloud-գաղտնիքները փոփոխականների մեջ OIDC-ի փոխարեն։

Environments/approvals-ի բացակայությունը անցքերի համար։

Աջակողմյան Actions-ի անթույլատրելի տարբերակները մեջբերում են supply-chain ռիսկերը։

Ոչ SBIM/ստորագրություններ չեն կարող CD-ի վրա։

Միշտ սկսվող զանգվածային մատրիցները ցույց են տալիս արժեքի աճը։

Actions-ից CD-ն ուղղակիորեն առանց GitOpS փոփոխությունների ուղու։

Արդյունքները

GitHub Actions-ը թույլ է տալիս կառուցել մեկ, անվտանգ և վերարտադրված ածխաջրածնային փոխակրիչ 'ստանդարտ plins Reusable/Composite միջոցով, օգտագործել OIDC և շրջապատում approvals, ներդրեք SBSA/ստորագրություն, փոխանցեք CD-ը G- ին progrogressssssivery plivery-ով, իսկ վերահսկողություն քեշի/մատրիցի/մրցակցության միջոցով։ Այս մոտեցումը մեծանում է iGaming ապրանքի հովանու տակ, պահպանում որակը և նվազեցնում վիրահատական ռիսկերը։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։