# Versionamento de pipelines

## Versionamento de pipelines

O versionamento é uma parte fundamental do ciclo de vida de desenvolvimento. Ele permite rastrear alterações, recuperar estados anteriores e gerenciar o ciclo de vida de integração entre diferentes ambientes (Test, Prod).

## Arquitetura de versões: Major e Minor

A Digibee utiliza um modelo de versionamento semântico simplificado baseado em dois níveis (X.Y):

<table data-full-width="false"><thead><tr><th>.</th><th>Versão Major (X.0)</th><th>Versão Minor (0.Y)</th></tr></thead><tbody><tr><td><strong>Impacto</strong></td><td>Significativo (mudanças estruturais ou críticas).</td><td>Incremental (ajustes, correções ou otimizações).</td></tr><tr><td><strong>Simultaneidade</strong></td><td>Permite múltiplas versões ativas em paralelo.</td><td>Apenas uma versão ativa por vez no ambiente.</td></tr><tr><td><strong>Criação</strong></td><td>Sempre manual.</td><td>Automática (ao salvar uma implementação anterior) ou Manual (via histórico).</td></tr></tbody></table>

### Versões Major (X.0)

As versões **Major** são as versões principais de um pipeline, destinadas a alterações profundas. Elas organizam o ciclo de vida do projeto, agrupando suas respectivas versões Minor em históricos distintos. É possível manter múltiplas versões Major de um pipeline em execução simultaneamente.

* **Quando utilizar:** Mudanças no contrato de entrada/saída, novas funcionalidades complexas ou alterações que exijam que sistemas consumidores se adaptem para evitar falhas de integração.
* **Lógica de numeração:** Se a versão atual é 1.5, a criação de uma Major resultará na 2.0.

#### Como criar uma versão Major

1. Na plataforma Digibee, acesse a tela de **Build**.
2. Localize o pipeline desejado através da barra de pesquisa.
3. No card do pipeline, clique no menu **Opções** (três pontos) e selecione **Nova versão**.
4. Confirme a ação no pop-up de segurança clicando em **Criar versão**.
5. Realize as alterações no Canvas, clique em **Salvar** e o pipeline estará pronto para implantação.

### Versões Minor (0.Y)

As versões **Minor** são iterações secundárias voltadas para melhorias contínuas dentro de uma mesma linhagem Major. Diferente das versões Major, o sistema não permite a execução simultânea de duas versões Minor (ex: 1.1 e 1.2) no mesmo ambiente.

A plataforma gera uma nova versão Minor automaticamente ao salvar o pipeline, desde que a versão atual já tenha sido implantada.

* **Quando utilizar:** Correções de bugs (hotfixes), otimizações de performance ou ajustes lógicos que não alteram a interface de comunicação do pipeline.
* **Lógica de numeração**: Se a versão atual é 1.1, a nova Minor será a 1.2.

#### Como criar uma versão Minor (via histórico)

Além do salvamento automático, você pode criar uma nova versão Minor a partir de uma versão antiga, desde que ela não esteja arquivada.

1. No card do pipeline (tela de **Build**), clique no menu **Opções** (três pontos) e selecione **Visualizar histórico**.
2. Na coluna **Ações**, clique no **sinal de mais (+)** para gerar uma nova versão Minor.
3. Faça as alterações necessárias no pipeline e clique em **Salvar**.

## Histórico e gerenciamento de versões do pipeline

O histórico de versões do pipeline lista todas as versões Minor de um pipeline associadas à sua versão Major. Nele, é possível visualizar quem realizou modificações e verificar o status de implantação por ambiente.

1. No card do pipeline (tela de **Build**), clique no menu **Opções** (três pontos) e depois selecione **Visualizar histórico**.
2. Ao acessar o histórico, os seguintes campos são exibidos:
   * **Versão:** Identificador numérico (X.Y).
   * **Autor:** Nome e e-mail do responsável pela última modificação.
   * **Data/Hora:** Timestamp da última atualização.
   * **Descrição:** Notas inseridas sobre as mudanças realizadas.
   * **Ações:** Comandos disponíveis para aquela versão específica.

Você também pode escolher quantas versões deseja visualizar por página no histórico de versões do pipeline e navegar pelo histórico usando a paginação no canto inferior direito.

### Ações disponíveis

Você pode usar o acesso ao histórico de versões do pipeline para executar ações como:

* **Editar (✏️):** Permite modificar a última versão Minor (desde que não esteja arquivada). Triggers e conectores estruturais não podem ser editados nesta visualização.
* **Visualizar (👁️):** Abre o pipeline em modo de leitura no Canvas.
* **Arquivar (🗃️):** Remove a versão da visualização principal na página de Build. Pipelines na Digibee não são deletados permanentemente por questões de integridade.
* **Restaurar (🕐):** Reativa uma versão previamente arquivada.

{% hint style="info" %}
Registros anteriores a 01/02/2022 podem exibir "No data" no campo de autor. Datas exibidas como 31/12/1969 indicam ausência de metadados em pipelines criados antes de 15/02/2021 (padrão do sistema Unix).
{% endhint %}

## Comparação visual de versões do pipeline (Visual Diff)

Para facilitar o troubleshooting e code review, a ferramenta **Visual Diff** permite comparar duas versões minor de pipelines implementados, lado a lado.

1. Acesse a página de **Run** e localize o pipeline.
2. No menu de três pontos, selecione **Abrir diferenças entre versões**.
3. Selecione as versões do pipeline que você quer comparar.
   1. Do lado **esquerdo** selecione as versões mais recentes do pipeline.
   2. Do lado **direito** selecione as versões anteriores à versão mais recente selecionada.
4. Clique em cada uma das etapas do pipeline para visualizar as mudanças nas configurações dos conectores. Etapas adicionadas ou removidas são destacadas com cores diferentes: verde para adições e vermelho para remoções.

No menu lateral esquerdo, é possível ver o número e tipo de mudanças executadas entre os pipelines selecionados. Você também pode usar a **barra de pesquisa** para localizar mudanças específicas.

* **Componentes adicionados:** Número de novos elementos no fluxo.
* **Componentes removidos:** Número de elementos ausentes na versão mais recente.
* **Componentes modificados:** Número de alterações em configurações internas (parâmetros, expressões, triggers) e mudanças nas conexões entre os elementos.
* **Resumo de alterações:** Número total de passos adicionados, removidos ou modificados.
