mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-04-30 23:02:50 +00:00
Some checks failed
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Check Documentation Broken Links / Check broken links (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
adding reference and explaination for package registry Co-authored-by: Lorenze Jay <63378463+lorenzejay@users.noreply.github.com>
264 lines
9.9 KiB
Plaintext
264 lines
9.9 KiB
Plaintext
---
|
|
title: "Registros de Pacotes Privados"
|
|
description: "Instale pacotes Python privados de registros PyPI autenticados no CrewAI AMP"
|
|
icon: "lock"
|
|
mode: "wide"
|
|
---
|
|
|
|
<Note>
|
|
Este guia aborda como configurar seu projeto CrewAI para instalar pacotes Python
|
|
de registros PyPI privados (Azure DevOps Artifacts, GitHub Packages, GitLab, AWS CodeArtifact, etc.)
|
|
ao implantar no CrewAI AMP.
|
|
</Note>
|
|
|
|
## Quando Você Precisa Disso
|
|
|
|
Se seu projeto depende de pacotes Python internos ou proprietários hospedados em um registro privado
|
|
em vez do PyPI público, você precisará:
|
|
|
|
1. Informar ao UV **onde** encontrar o pacote (uma URL de index)
|
|
2. Informar ao UV **quais** pacotes vêm desse index (um mapeamento de source)
|
|
3. Fornecer **credenciais** para que o UV possa autenticar durante a instalação
|
|
|
|
O CrewAI AMP usa [UV](https://docs.astral.sh/uv/) para resolução e instalação de dependências.
|
|
O UV suporta registros privados autenticados por meio da configuração do `pyproject.toml` combinada
|
|
com variáveis de ambiente para credenciais.
|
|
|
|
## Passo 1: Configurar o pyproject.toml
|
|
|
|
Três elementos trabalham juntos no seu `pyproject.toml`:
|
|
|
|
### 1a. Declarar a dependência
|
|
|
|
Adicione o pacote privado ao seu `[project.dependencies]` como qualquer outra dependência:
|
|
|
|
```toml
|
|
[project]
|
|
dependencies = [
|
|
"crewai[tools]>=0.100.1,<1.0.0",
|
|
"my-private-package>=1.2.0",
|
|
]
|
|
```
|
|
|
|
### 1b. Definir o index
|
|
|
|
Registre seu registro privado como um index nomeado em `[[tool.uv.index]]`:
|
|
|
|
```toml
|
|
[[tool.uv.index]]
|
|
name = "my-private-registry"
|
|
url = "https://pkgs.dev.azure.com/my-org/_packaging/my-feed/pypi/simple/"
|
|
explicit = true
|
|
```
|
|
|
|
<Info>
|
|
O campo `name` é importante — o UV o utiliza para construir os nomes das variáveis de ambiente
|
|
para autenticação (veja o [Passo 2](#passo-2-configurar-credenciais-de-autenticação) abaixo).
|
|
|
|
Definir `explicit = true` significa que o UV não consultará esse index para todos os pacotes — apenas
|
|
os que você mapear explicitamente em `[tool.uv.sources]`. Isso evita consultas desnecessárias
|
|
ao seu registro privado e protege contra ataques de confusão de dependências.
|
|
</Info>
|
|
|
|
### 1c. Mapear o pacote para o index
|
|
|
|
Informe ao UV quais pacotes devem ser resolvidos a partir do seu index privado usando `[tool.uv.sources]`:
|
|
|
|
```toml
|
|
[tool.uv.sources]
|
|
my-private-package = { index = "my-private-registry" }
|
|
```
|
|
|
|
### Exemplo completo
|
|
|
|
```toml
|
|
[project]
|
|
name = "my-crew-project"
|
|
version = "0.1.0"
|
|
requires-python = ">=3.10,<=3.13"
|
|
dependencies = [
|
|
"crewai[tools]>=0.100.1,<1.0.0",
|
|
"my-private-package>=1.2.0",
|
|
]
|
|
|
|
[tool.crewai]
|
|
type = "crew"
|
|
|
|
[[tool.uv.index]]
|
|
name = "my-private-registry"
|
|
url = "https://pkgs.dev.azure.com/my-org/_packaging/my-feed/pypi/simple/"
|
|
explicit = true
|
|
|
|
[tool.uv.sources]
|
|
my-private-package = { index = "my-private-registry" }
|
|
```
|
|
|
|
Após atualizar o `pyproject.toml`, regenere seu arquivo lock:
|
|
|
|
```bash
|
|
uv lock
|
|
```
|
|
|
|
<Warning>
|
|
Sempre faça commit do `uv.lock` atualizado junto com as alterações no `pyproject.toml`.
|
|
O arquivo lock é obrigatório para implantação — veja [Preparar para Implantação](/pt-BR/enterprise/guides/prepare-for-deployment).
|
|
</Warning>
|
|
|
|
## Passo 2: Configurar Credenciais de Autenticação
|
|
|
|
O UV autentica em indexes privados usando variáveis de ambiente que seguem uma convenção de nomenclatura
|
|
baseada no nome do index que você definiu no `pyproject.toml`:
|
|
|
|
```
|
|
UV_INDEX_{UPPER_NAME}_USERNAME
|
|
UV_INDEX_{UPPER_NAME}_PASSWORD
|
|
```
|
|
|
|
Onde `{UPPER_NAME}` é o nome do seu index convertido para **maiúsculas** com **hifens substituídos por underscores**.
|
|
|
|
Por exemplo, um index chamado `my-private-registry` usa:
|
|
|
|
| Variável | Valor |
|
|
|----------|-------|
|
|
| `UV_INDEX_MY_PRIVATE_REGISTRY_USERNAME` | Seu nome de usuário ou nome do token do registro |
|
|
| `UV_INDEX_MY_PRIVATE_REGISTRY_PASSWORD` | Sua senha ou token/PAT do registro |
|
|
|
|
<Warning>
|
|
Essas variáveis de ambiente **devem** ser adicionadas pelas configurações de **Variáveis de Ambiente** do CrewAI AMP —
|
|
globalmente ou no nível da implantação. Elas não podem ser definidas em arquivos `.env` ou codificadas no seu projeto.
|
|
|
|
Veja [Configurar Variáveis de Ambiente no AMP](#configurar-variáveis-de-ambiente-no-amp) abaixo.
|
|
</Warning>
|
|
|
|
## Referência de Provedores de Registro
|
|
|
|
A tabela abaixo mostra o formato da URL de index e os valores de credenciais para provedores de registro comuns.
|
|
Substitua os valores de exemplo pelos detalhes reais da sua organização e feed.
|
|
|
|
| Provedor | URL do Index | Usuário | Senha |
|
|
|----------|-------------|---------|-------|
|
|
| **Azure DevOps Artifacts** | `https://pkgs.dev.azure.com/{org}/_packaging/{feed}/pypi/simple/` | Qualquer string não vazia (ex: `token`) | Personal Access Token (PAT) com escopo Packaging Read |
|
|
| **GitHub Packages** | `https://pypi.pkg.github.com/{owner}/simple/` | Nome de usuário do GitHub | Personal Access Token (classic) com escopo `read:packages` |
|
|
| **GitLab Package Registry** | `https://gitlab.com/api/v4/projects/{project_id}/packages/pypi/simple/` | `__token__` | Project ou Personal Access Token com escopo `read_api` |
|
|
| **AWS CodeArtifact** | Use a URL de `aws codeartifact get-repository-endpoint` | `aws` | Token de `aws codeartifact get-authorization-token` |
|
|
| **Google Artifact Registry** | `https://{region}-python.pkg.dev/{project}/{repo}/simple/` | `_json_key_base64` | Chave de conta de serviço codificada em Base64 |
|
|
| **JFrog Artifactory** | `https://{instance}.jfrog.io/artifactory/api/pypi/{repo}/simple/` | Nome de usuário ou email | Chave API ou token de identidade |
|
|
| **Auto-hospedado (devpi, Nexus, etc.)** | URL da API simple do seu registro | Nome de usuário do registro | Senha do registro |
|
|
|
|
<Tip>
|
|
Para **AWS CodeArtifact**, o token de autorização expira periodicamente.
|
|
Você precisará atualizar o valor de `UV_INDEX_*_PASSWORD` quando ele expirar.
|
|
Considere automatizar isso no seu pipeline de CI/CD.
|
|
</Tip>
|
|
|
|
## Configurar Variáveis de Ambiente no AMP
|
|
|
|
As credenciais do registro privado devem ser configuradas como variáveis de ambiente no CrewAI AMP.
|
|
Você tem duas opções:
|
|
|
|
<Tabs>
|
|
<Tab title="Interface Web">
|
|
1. Faça login no [CrewAI AMP](https://app.crewai.com)
|
|
2. Navegue até sua automação
|
|
3. Abra a aba **Environment Variables**
|
|
4. Adicione cada variável (`UV_INDEX_*_USERNAME` e `UV_INDEX_*_PASSWORD`) com seu valor
|
|
|
|
Veja o passo [Deploy para AMP — Definir Variáveis de Ambiente](/pt-BR/enterprise/guides/deploy-to-amp#definir-as-variáveis-de-ambiente) para detalhes.
|
|
</Tab>
|
|
<Tab title="Implantação via CLI">
|
|
Adicione as variáveis ao seu arquivo `.env` local antes de executar `crewai deploy create`.
|
|
A CLI as transferirá com segurança para a plataforma:
|
|
|
|
```bash
|
|
# .env
|
|
OPENAI_API_KEY=sk-...
|
|
UV_INDEX_MY_PRIVATE_REGISTRY_USERNAME=token
|
|
UV_INDEX_MY_PRIVATE_REGISTRY_PASSWORD=your-pat-here
|
|
```
|
|
|
|
```bash
|
|
crewai deploy create
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
<Warning>
|
|
**Nunca** faça commit de credenciais no seu repositório. Use variáveis de ambiente do AMP para todos os segredos.
|
|
O arquivo `.env` deve estar listado no `.gitignore`.
|
|
</Warning>
|
|
|
|
Para atualizar credenciais em uma implantação existente, veja [Atualizar Seu Crew — Variáveis de Ambiente](/pt-BR/enterprise/guides/update-crew).
|
|
|
|
## Como Tudo se Conecta
|
|
|
|
Quando o CrewAI AMP faz o build da sua automação, o fluxo de resolução funciona assim:
|
|
|
|
<Steps>
|
|
<Step title="Build inicia">
|
|
O AMP busca seu repositório e lê o `pyproject.toml` e o `uv.lock`.
|
|
</Step>
|
|
<Step title="UV resolve dependências">
|
|
O UV lê `[tool.uv.sources]` para determinar de qual index cada pacote deve vir.
|
|
</Step>
|
|
<Step title="UV autentica">
|
|
Para cada index privado, o UV busca `UV_INDEX_{NAME}_USERNAME` e `UV_INDEX_{NAME}_PASSWORD`
|
|
nas variáveis de ambiente que você configurou no AMP.
|
|
</Step>
|
|
<Step title="Pacotes são instalados">
|
|
O UV baixa e instala todos os pacotes — tanto públicos (do PyPI) quanto privados (do seu registro).
|
|
</Step>
|
|
<Step title="Automação executa">
|
|
Seu crew ou flow inicia com todas as dependências disponíveis.
|
|
</Step>
|
|
</Steps>
|
|
|
|
## Solução de Problemas
|
|
|
|
### Erros de Autenticação Durante o Build
|
|
|
|
**Sintoma**: Build falha com `401 Unauthorized` ou `403 Forbidden` ao resolver um pacote privado.
|
|
|
|
**Verifique**:
|
|
- Os nomes das variáveis de ambiente `UV_INDEX_*` correspondem exatamente ao nome do seu index (maiúsculas, hifens -> underscores)
|
|
- As credenciais estão definidas nas variáveis de ambiente do AMP, não apenas em um `.env` local
|
|
- Seu token/PAT tem as permissões de leitura necessárias para o feed de pacotes
|
|
- O token não expirou (especialmente relevante para AWS CodeArtifact)
|
|
|
|
### Pacote Não Encontrado
|
|
|
|
**Sintoma**: `No matching distribution found for my-private-package`.
|
|
|
|
**Verifique**:
|
|
- A URL do index no `pyproject.toml` termina com `/simple/`
|
|
- A entrada `[tool.uv.sources]` mapeia o nome correto do pacote para o nome correto do index
|
|
- O pacote está realmente publicado no seu registro privado
|
|
- Execute `uv lock` localmente com as mesmas credenciais para verificar se a resolução funciona
|
|
|
|
### Conflitos no Arquivo Lock
|
|
|
|
**Sintoma**: `uv lock` falha ou produz resultados inesperados após adicionar um index privado.
|
|
|
|
**Solução**: Defina as credenciais localmente e regenere:
|
|
|
|
```bash
|
|
export UV_INDEX_MY_PRIVATE_REGISTRY_USERNAME=token
|
|
export UV_INDEX_MY_PRIVATE_REGISTRY_PASSWORD=your-pat
|
|
uv lock
|
|
```
|
|
|
|
Em seguida, faça commit do `uv.lock` atualizado.
|
|
|
|
## Guias Relacionados
|
|
|
|
<CardGroup cols={3}>
|
|
<Card title="Preparar para Implantação" icon="clipboard-check" href="/pt-BR/enterprise/guides/prepare-for-deployment">
|
|
Verifique a estrutura do projeto e as dependências antes de implantar.
|
|
</Card>
|
|
<Card title="Deploy para AMP" icon="rocket" href="/pt-BR/enterprise/guides/deploy-to-amp">
|
|
Implante seu crew ou flow e configure variáveis de ambiente.
|
|
</Card>
|
|
<Card title="Atualizar Seu Crew" icon="arrows-rotate" href="/pt-BR/enterprise/guides/update-crew">
|
|
Atualize variáveis de ambiente e envie alterações para uma implantação em execução.
|
|
</Card>
|
|
</CardGroup>
|