Logo GH

GitHub 조치: 자동 릴리스

(섹션: 기술 및 인프라)

간략한 요약

GitHub 액션은 저장소의 기본 "코드로서의 파이프 라인" 입니다. iGaming의 경우, 이들은 백엔드, 프론트 엔드, ETL/DBT 및 ML/LLM 서비스의 빠르고 안전한 릴리스입니다: 테스트 매트릭스, 의존성 캐시, 격리 된 러너 풀, 균일 한 표준을위한 재사용 가능한 워크 플로우, 장기 비밀, 서명 및 SBOM, 태그에 의한 표시 및 GitOps 범프. 핵심은 p99와 비용을 통제하기위한 템플릿 및 품질/보안 게이트입니다.

1) 건축 원칙

코드로서의 파이프 라인 ('.github/workflows/.yml'), 재사용 가능한/복합 작업을 통한 DRY.
러너 풀: 호스팅 (ubuntu-latest) + 자체 호스팅 (K8/VM, ML 용 GPU).
환경: 필요한 검토 자, 타임 아웃 및 환경 비밀이있는 'v/stage/prod'.
정책: 보호 된 지점/태그, CODEOWNERS, 필수 점검.
관찰 가능성: 작업 요약, 아티팩트, 로깅, 기간 지표.

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 → 보안/보안 → 태그 'v' -배포를위한 SBOM/서명 및 GitOps 범프 선언문.

3) 재사용 가능/복합

재사용 가능한 워크 플로우: 모든 서비스에 대한 단일 파이프 라인 템플릿 (별도의 리포 '.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).
캐시: 종속성을위한 '행동/캐시'; 빌드 키트 '캐시-투: gha'; 종속성 프록시.
경쟁력: '동시성: 그룹: api- $ {{github. 참조}, 진행 취소: 참 '-분을 절약하십시오.
아티팩트: '유지 일' 로 보고서/적용 범위/프로필을 저장합니다.

매트릭스 예:
yaml strategy:
matrix:
py: [ '3. 10', '3. 12' ]
db: [ 'mysql', 'postgres' ]

5) 환경은 승인을 받는다

'제작' (수동 게이트) 에 필요한 검토 자를 설정합니다.
환경 비밀: 토큰, 서명 키, 스탠드 탭 배포.
비용 관리를 위해 환경 수명 미리보기 (자동 만료).

6) 구름에 대한 OIDC 접근 (오래 지속되는 비밀없이)

'id-tocken: writing' 을 사용하고 클라우드에서 신뢰 정책을 설정하며 임시 크레딧을 사용하십시오.
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) 릴리스, 태그 및 아티팩트

태그 별 릴리스: 변경 로그, 릴리스 자산, 이미지/패키지 게시.
면역: "전진 전용" 태그, 컨테이너/차트 서명.
SBOM (CycloneDX/SPDX) + 서명 (cosign/sigstore) -서명되지 않은 게이트-배포가 없습니다.

8) GitOps! 프로그레시브 전달

CD는 "액션" 이 아니라 PR/커밋을 통해 리포 매니페스트 (Argo CD/Flux) 로 커밋됩니다.
카나리아/청록색: 무게/버전 GitOps 범프 단계; 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/Secret-scan, DAST.
서명: 이미지, 헬름 차트, 바이너리; 고갈 중 검증.
정치인: 신뢰할 수있는 워크 플로우에서만 파견; 타사 동작을위한 www핀.

10) 관찰 가능성, SLO 및 ChatOps

요약 보고서 (JUnit/coverage/scans), PR 상태.
메트릭: 스테이지 지속 시간, 성공/실패, 러너 큐.
ChatOps: PR의 봇 댓글 (대시 보드에 대한 링크, 미리보기 IM), 'workflow _ dispatch' 를 통한 명령 '/프로모션 ', '/롤백'.

11) FinOps (분 및 자원 비용)

PR의 동시성 취소, 변경된 부품 (경로-필터) 에 대해서만 행렬.
인공물 위생: '유지 일', 자동 닫기 미리보기 env.
무거운 어셈블리/ML, 밤 "조용한 시간" 을위한 자체 호스팅 수영장.
의존성 캐시 및 BuildKit GHA 캐시는 크게 절약됩니다.

12) Monorepos 및 부모/자식 오케스트레이션

폴더/경로 트리거: 구성 요소 당 독립적 인 워크 플로우.
팀 간 표준화 계층으로 재사용 할 수 있습니다 (결제/위험/CRM/ETL/ML).
구성 요소별로 비밀/환경을 분리합니다.

13) iGaming 템플릿

A) 백엔드/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 (Reusable/Composite) 템플릿을 정의하고 모든 재기록에 적용하십시오.
2. 승인 및 분할 비밀이있는 환경 포함.
3. 구름/비밀 관리자에게 OIDC로 이동하여 내구성있는 키를 제거하십시오.
4. SAST/SCA/Secrets/DAST, SBOM 및 아티팩트 서명을 입력하십시오. 중요한 취약성 게이트.
5. GitOps 설정: 매니페스트 리포, 자동 범프 이미지/버전, 카나리아/청록색.
6. 캐시/행렬 ', 동시성을 최적화하십시오. 진행중인 취소 ', 아티팩트 제거.
7. 한계와 격리로 자체 호스팅 러너 (GPU 포함) 를 배포하십시오.
8. 추가 bs을 운전하지 않도록 경로 필터 및 규칙 설정을 사용하십시오.
9. ChatOps 추가: 상태/명령; PR 보고서.
10. 조치를 수정하여 사용 정책을 수정하십시오 (핀 www, 외부 제한).

15) 안티 패턴

동기화 표준에서 재사용 가능한/복합 → 대신 모든 리포스에서 동일한 단계.
OIDC 대신 변수에서 오래 지속되는 클라우드 비밀.

환경 부재/승인

압축되지 않은 타사 조치 → 공급망 위험 버전.
SBOM/서명이 없으므로 CD에 대한 확인이 없습니다.
항상 → 비용이 증가하는 대규모 행렬.
GitOps가 변경 사항을 추적하지 않고 직접 작업에서 프로덕션으로 CD.

요약

GitHub 조치를 사용하면 재사용 가능한/복합 파이프 라인을 통해 파이프 라인을 표준화하고 승인이있는 OIDC 및 환경을 사용하고 SBOM/서명을 구현하며 점진적인 배송으로 CD를 GitOps로 전송하고 캐시/매트릭스/경쟁력. 이 접근 방식은 iGaming 제품의 속도로 확장되고 품질을 유지하며 운영 위험을 줄입니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

Telegram
@Gamble_GC
통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.