Canais (Stable/RC)

O GitOps suporta distribuicao por canais, permitindo que projetos tenham versoes estables e release candidates em paralelo.

Como Funciona

Canais sao definidos no .gitops.yml e mapeiam padroes de tag para pastas no storage:

channels:
  stable:
    tag_pattern: "v[0-9]+.[0-9]+.[0-9]+$"     # v1.2.3
    folder: ""                                  # raiz
  rc:
    tag_pattern: "v[0-9]+.[0-9]+.[0-9]+-rc.[0-9]+$"  # v1.2.3-rc.1
    folder: "rc"                                       # subpasta rc/

Quando o GitOps processa um release, ele:

  1. Extrai a tag (ex: v1.2.3-rc.1)
  2. Testa contra cada tag_pattern
  3. Usa o folder do canal que fez match
  4. Substitui {channel_path} nos destinations

Estrutura no Storage

projeto/
├── app                    ← latest stable
├── app.zip
├── latest/
│   ├── app
│   └── app.zip
├── v1.0.0/                ← versionado stable
│   ├── app
│   └── app.zip
├── rc/                    ← release candidates
│   ├── app               ← latest RC
│   ├── app.zip
│   ├── latest/
│   │   ├── app
│   │   └── app.zip
│   └── v1.1.0-rc.1/      ← versionado RC
│       ├── app
│       └── app.zip
└── docs/
    ├── latest/
    └── v1.0.0/

Fluxo de Releases

dev                                    main
 │                                      │
 ├── v2.0.0-rc.1 (teste inicial)       │
 │   └── rc/app = rc.1 binary          │
 │                                      │
 ├── v2.0.0-rc.2 (correcoes)           │
 │   └── rc/app = rc.2 binary          │
 │                                      │
 ├── v2.0.0-rc.3 (aprovado!)           │
 │                                      │
 └──────── merge ──────────────────────├── v2.0.0 (estavel)
                                        │   └── app = v2.0.0 binary

Placeholder {channel_path}

O placeholder {channel_path} resolve para:

Canal folder {channel_path}
stable "" "" (vazio)
rc "rc" "rc/"

Exemplo de destination:

destination: "{channel_path}app"
  • Tag v1.0.0 (stable): app
  • Tag v1.0.0-rc.1 (rc): rc/app
destination: "{channel_path}{version}/app"
  • Tag v1.0.0 (stable): 1.0.0/app
  • Tag v1.0.0-rc.1 (rc): rc/1.0.0-rc.1/app

URLs de Download

Para um projeto em https://projeto.ccs.systems:

Tipo URL
Latest stable https://projeto.ccs.systems/app
Versionado stable https://projeto.ccs.systems/v1.0.0/app
Latest RC https://projeto.ccs.systems/rc/app
Versionado RC https://projeto.ccs.systems/rc/v1.1.0-rc.1/app

Self-Update com Canais

Clients que suportam self-update podem usar:

Flag Comportamento
(padrao) Baixa apenas versoes estaveis
--rc Inclui release candidates

A logica e do client, nao do GitOps. O GitOps apenas distribui nos caminhos corretos.

By Borlot.com.br on 06/03/2026