Logo GH

GitHub Action: automação de lançamentos

(Secção Tecnologia e Infraestrutura)

Resumo curto

O GitHub Action é uma linha de montagem nativa como código no repositório. Para iGaming, são lançamentos rápidos e seguros de backends, frentes, ETL/DBT e ML/LLM serviços: matrizes de testes, cases de dependência, punhas de runner isoladas, Reusable Workflows para padrões unificados, OIDC em vez de segredos de longa vida, assinatura e SBS S OM, lançamentos de formatação e GitOps-bump de manifestos. Chave - modelos e gates de qualidade/segurança para manter p99 e custo sob controle.

1) Princípios arquitetônicos

Pipline como código ('.github/workflows/.yml'), DRY via Reusable/Composite Action.
Runner-pool: hosted (ubuntu-latest) + self-hosted (K8s/VM, GPU para ML).
Ambientes (Ambientonments): 'dave/estágio/prod' com required reviewers, temporizadores e segredos de ambientes.
Políticas: protected branches/tags, CODEOWNERS, verificações obrigatórias.
Observabilidade: job summaries, artefactos, logs, métricas de duração.

2) Modelo básico 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

A ideia é PR Lentes/Units Segurança de por nota 'v' - SBOM/assinatura e GitOps-bump de manifestos para deploy.

3) Reutilizar: Reusable/Composite

Reusable Workflows: Modelos-mestre pipeline para todos os serviços (em um repo '.github' separado).
Composite Action: encosta de passos repetitivos (lentes/units/scans).

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

4) Matrizes, dinheiro e desempenho

`strategy. matrix 'para testes paralelos (idiomas/BD/OS).
Cash: 'acções/cachês' para dependências; BuildKit с `cache-to: gha`; dependency proxies.
Competitividade: 'concurrency: group: api- $.. Pois, cancel-in-progress: true '- economiza minutos.
Artefatos: armazenar relatórios/revestimentos/perfis com 'retence-days'.

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

5) Environments и approvals

Configure o required reviewers para o 'gate manual'.
Para-segredos de ambientes, tocas de toploy, chaves de assinatura, URL.
Tempo de vida dos ambientes preview (auto-expire) para controlar o custo.

6) Acesso OIDC às nuvens (sem segredos de longa vida)

Ative 'id-token: write', configure o trust-policy na nuvem e use os créditos temporários.
Aplicável a AWS/Azure/GCP/artefatos-registros/gerentes de segredo.
Least privege: papéis individuais em 'dave/estágio/prod'.

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

7) Lançamentos, marcas e artefatos

Release por brigue: changelog, lançamento-assets, publicação de imagens/pacotes.
Imutability: marcas «apenas para frente», assinatura de contêineres/lista.
SBOM (CycloneDX/SPDX) + assinatura (cosign/sigstore) - gate «sem assinatura - sem deploy».

8) GitOps и progressive delivery

O CD não é «de Ações», mas sim por PR/commit em manifesto-repo (Argo CD/Flux).
Canary/blue-green: passos GitOps-bump peso/versão; promoção de carro em métricas SLO.

Exemplo de GitOps-bump (ideia):
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) Segurança de Pipline e cadeias de fornecimento

Quem pode executar apenas a partir de protected branches/tags, com required checks.
Digitalização: SAST/SCA/Secret-scan, DAST em ambientes prediletos.
Assinaturas: imagens, elenco Helm, binários; A verificação no local.
Políticos: displatches apenas de workflow confiáveis; pin SHA para Ações de terceiros.

10) Observabilidade, SLO e ChatOps

Sumary relatórios (JUnit/coverage/scan), estatais em PR.
Métricas: duração de estágios, sucesso/feeling, fila de runners.
ChatOps: Comentários de bot em PR (referências a dashboards, suprimento-URL), comandos de '/promote ', '/rollback' através de 'workflow _ dispatch'.

11) FinOps (custo de minutos e recursos)

Concurency-cancel para PR, matrizes apenas em partes alteradas (paths-filter).
Higiene de artefatos: 'Retenção-days', Auto-Encanamento Preview env.
Pula self-hosted para montagens pesadas/ML, «relógios silenciosos» noturnos.
Dependency cachê e BuildKit dinheiro GHA são economias significativas.

12) Monorepo e Parente/Orquestração Child

Triggers em pastas/caminhos: workflow independente por componente.
Reusable como camada de normalização entre comandos (Payments/Risk/CRM/ETL/ML).
Separar segredos/ambientes por componente.

13) Modelos de 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 (artefatos inférteis)

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) Folha de cheque de implementação

1. Defina os modelos CI/CD (Reusable/Composite) e aplique-os a todos os repos.
2. Inclua o Entreonments com approvals e segredos separados.
3. Vá até o OIDC às nuvens/gerentes de segredo, retire as chaves duráveis.
4. Digite SAST/SCA/Segredos/DAST, SBOM e assinatura de artefatos; Gates por vulnerabilidades críticas.
5. Configure GitOps: manifesto-repo, auto-bump de imagem/versão, canary/blue-green.
6. Otimize o dinheiro/matriz, 'concurrency. cancel-in-progress ', limpeza de artefatos.
7. Expanda self-hosted runner-pool (incluindo GPU) com limites e isolamento.
8. Ative paths-filter e as configurações de rule para não correr mais jobs.
9. Adicione ChatOps: estatais/comandos; relatórios em PR.
10. Verifique as políticas de uso seguro de Acções (pin SHA, restrição externa).

15) Antipattern

Os mesmos passos em todos os repos, em vez de Reusable/Composite, → o descarte de padrões.
Segredos cloud de longa vida em variáveis em vez de OIDC.
Não existe o Enquironments/approvals para protas.
Versões inabaláveis de terceiros Action → os riscos de suply-chain.
Nenhum SBOM/assinaturas → nenhuma verificação em CD.
Matrizes maciças sempre em execução → aumento de custo.
CD de Acções diretamente para Prod sem traçamento de alterações GitOps.

Resumo

O GitHub Action permite criar uma linha de montagem de lançamentos unificada, segura e reproduzível: normalize os piplins através do Reusable/Composite, use o OIDC e ambientes com approvals, implemente o SBOM/assinatura, transfira o CD para o GitOps avançado delivery, e os custos são controlados através da caixa, matriz/competição. Esta abordagem é dimensionada ao ritmo do produto iGaming, mantém a qualidade e reduz os riscos operacionais.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Telegram
@Gamble_GC
Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.