# Gitlab

> **Versão mínima:** Linux Control Center `v2.13.X`\
> **Requisitos:**
>
> * Acesso ao repositório GitLab desejado
> * Token de acesso pessoal ou credenciais com permissão de leitura
> * 'api', 'read\_api', 'ai\_features'
> * Branch com scripts ou playbooks válidos (`.sh`, `.yml`, `.ps1`, `.bat`)

***

## O que faz?

Esta funcionalidade permite importar automaticamente **scripts e playbooks versionados** diretamente de um repositório GitLab para o Linux Control Center.\
Os arquivos são baixados, validados, verificados contra o commit mais recente e **mapeados como scripts personalizados** na plataforma.

***

## Como configurar

### 1. Acesse o módulo GitLab

* Navegue até `Menu lateral → Config → Integrações → GitLab`
* Clique em `Criar`

  ![](/files/yeOFq8I4vAROOPXNDDmI)

### 2. Preencha os dados do repositório

![](/files/UDMM9VhzfIVXVsZVazY5)

| Campo                            | Descrição                                               |
| -------------------------------- | ------------------------------------------------------- |
| **URL do repositório**           | Ex: `https://gitlab.com/empresa/repositorio.git`        |
| **Método de autenticação**       | `Token Pessoal` ou `Usuário/Senha`                      |
| **Token ou Senha Criptografada** | Requer permissão de leitura no projeto                  |
| **Branch**                       | Ex: `main`, `master`                                    |
| **Extensões permitidas**         | Marque se deseja importar `.sh`, `.yml`, `.ps1`, `.bat` |

> ⚠️ URLs inválidas, tokens incorretos ou permissões insuficientes impedirão a sincronização.

***

## Execute a Sincronização

Após salvar:

1. Clique em **Sync**

![](/files/1YzOhtKZTvHS6vCGJrYa)

> Escolha o modo de execução da sincronização

* Worker: Para executar em algum Worker que consiga estabelecer conexão com o repositório.
* Console: Para executar diretamente da console web que consegue estabelecer conexão com o repositório.
* Para analisar os logs da conexão da console, acesse o meu Logs na aba de detalhes do Gitlab.

![](/files/Y8nNP8oSyJr2dcYuKyVj)

2. O sistema:
   * Descobre todos os arquivos do repositório no branch escolhido
   * Verifica a extensão de cada arquivo
   * Baixa apenas arquivos com extensões permitidas
   * Calcula o hash de conteúdo para verificar alterações
   * Associa o script ao seu usuário ou ao Linux Control Center

***

## O que será criado

* Scripts `.sh`, `.ps1`, `.bat` → Salvos como **Custom Scripts**
* Playbooks `.yml` → Salvos como **Custom Playbooks**
* Cada item importado manterá:
  * Nome baseado no repositório + branch
  * Caminho físico no container
  * Último commit de origem
  * Hash para detectar modificações futuras

![](/files/HwG1thSGuD4Vl7t2FSkW)

> Estrutura de nomeação

* 1. Nome do arquivo
* 2. URL do repositório
* 3. Branch utilizada

***

## Reimportações automáticas

* Se um arquivo já existir:

  * Será atualizado se o hash ou commit mudar
  * Ignorado se não houver alteração
  * Estes dados podem ser verificados na opção 'Scripts' na aba de detalhes do repositório.

  ![](/files/M1ZkfG2n1swPBLPUHNdH)

***

## Local de Armazenamento

Os scripts são salvos em:\
`git_integration_remote_rep/<UUID_DO_REPOSITORIO>/`

***

## Exemplos de Suporte

| Extensão      | Suporte | Tipo de Mapeamento |
| ------------- | ------- | ------------------ |
| `.sh`         | ✅ Sim   | Script Linux       |
| `.yml`        | ✅ Sim   | Playbook           |
| `.ps1`        | ✅ Sim   | Script Windows     |
| `.bat`        | ✅ Sim   | Script Windows     |
| `.py`, `.txt` | ❌ Não   | Ignorados          |

***

## Logs e Diagnóstico

* Os logs de cada execução podem ser consultados no painel de GitLab da plataforma
* Incluem: erros de autenticação, arquivos ignorados, mudanças detectadas
* Erros comuns verificados são referentes a impossibilidade de conexão com repositório
* Autenticação de dois fatores (2F) exigida em login via usuário e senha
* Falta de permissões do usuário ou do token utilizado

***

## Dúvidas?

Consulte o suporte ou a documentação oficial do Linux Control Center.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.linuxcontrolcenter.com.br/conf-integrations/integrations/gitlab.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
