# Azion CLI deploy

O comando `deploy` da Azion CLI faz o build do projeto no diretório atual e o deploy dele na Azion. Ele cria ou atualiza a [Application](/pt-br/documentacao/plataforma/applications/) do projeto, o [Workload](/pt-br/documentacao/plataforma/workloads/) dele e, para um site estático, o bucket do [Object Storage](/pt-br/documentacao/plataforma/object-storage/) que guarda os arquivos. Por padrão, o build é executado na Azion; com `--local`, ele é executado na sua máquina. As opções que todo comando aceita, como `--format`, `--out` e `-y`, estão em [Opções globais](/pt-br/documentacao/devtools/cli/globals/).

---

## Uso

`azion deploy` lê as configurações do projeto na pasta `azion` do diretório atual e faz o deploy do projeto:

```bash
azion deploy [flags]
```

| Flag                     | Curta | Tipo   | Padrão                                       | Descrição                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------------------ | ----- | ------ | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--alias-env`            | —     | —      | —                                            | Passa `--alias-env` para a fase de build do deploy, para que as variáveis lidas dos arquivos `.env` do projeto recebam um prefixo formado a partir do nome do projeto. Para mais informações, consulte [Azion CLI build](/pt-br/documentacao/devtools/cli/build/).                                                                                                                                                                                                                                                                                |
| `--auto`                 | —     | —      | —                                            | Executa o comando inteiro sem parar para uma pergunta.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `--config-dir`           | —     | string | `"azion"`                                    | Caminho relativo para a pasta que guarda os seus arquivos `azion.json` e `args.json`.                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `--config-file`          | —     | string | —                                            | Caminho para o arquivo `azion.config` usado no deploy, como `azion.staging.config.cjs`. Sem ela, o deploy usa o arquivo `azion.config.*` do diretório atual. Em um deploy remoto, o padrão, o arquivo precisa estar dentro do diretório do projeto, porque só esse diretório é enviado. Com `--local`, o deploy grava o prefixo de storage nesse arquivo e faz o build a partir dele. Um arquivo inexistente, ou um arquivo fora do projeto em um deploy remoto, é rejeitado antes que o deploy altere qualquer coisa na sua máquina ou na Azion. |
| `--dry-run`              | —     | —      | —                                            | Lista as etapas que o deploy executaria, sem executá-las. O dry run não cria nem altera nenhum recurso e não altera `azion/azion.json`, e `--format json` imprime a lista em JSON. As etapas são as do fluxo `--local`, também quando você executa `azion deploy --dry-run` sem `--local`.                                                                                                                                                                                                                                                        |
| `--env`                  | —     | string | `".edge/.env"`                               | Caminho relativo para o seu arquivo `.env`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `--local`                | —     | —      | —                                            | Executa o build e o deploy na sua máquina em vez de na Azion. Use-a quando você precisa do seu próprio ambiente de build ou de mais controle sobre o build.                                                                                                                                                                                                                                                                                                                                                                                       |
| `--no-prompt`            | —     | —      | —                                            | Retorna o erro em vez de fazer uma pergunta quando uma etapa falha.                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `--path`                 | —     | string | —                                            | Caminho para a pasta que guarda os seus arquivos estáticos.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `--skip-build`           | —     | —      | —                                            | Faz o deploy sem executar o build antes, então faz o deploy da saída que um `azion build` anterior deixou na pasta `.edge`.                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `--skip-framework-build` | —     | —      | —                                            | Pula o build do framework que é executado antes de `azion build`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `--sync`                 | —     | —      | —                                            | Sincroniza o arquivo `azion.json` local com os recursos remotos.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `--workers`              | —     | int    | auto-calculated based on CPU cores, max `20` | Número de workers de upload que enviam arquivos ao mesmo tempo.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `--writable-bucket`      | —     | —      | —                                            | Cria o bucket do projeto com acesso de leitura e gravação.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |

A CLI gerencia as credenciais de storage que cada rota precisa, então nenhum envio pede uma credencial sua. Um deploy padrão envia os arquivos-fonte para o build remoto, com as credenciais em `~/.azion/<profile>/settings.toml`. Com `--local`, a própria CLI envia os arquivos estáticos já construídos e guarda um conjunto de credenciais por bucket em `~/.azion/<profile>/credentials.toml`.

---

## Exemplos

Cada exemplo mostra o comando e a saída que ele imprime.

### Fazer o deploy com um build remoto

Este comando faz o primeiro deploy de um site estático. A CLI envia os arquivos de código-fonte, e o build é executado na Azion:

```bash
azion deploy
```

O comando imprime um link para a página **Deploy** do Azion Console, onde **Deploy Log** mostra o progresso do deploy, e depois o domínio do site:

```text
Running deploy command
Uploading source files

Upload completed successfully!
Please visit https://console.azion.com/create/deploy/00000000-0000-0000-0000-000000000002 in case it did not open automatically, to follow up the full deploy process
Your Application was deployed successfully

To visualize your application access the Domain: https://xxxxxxxxxx.map.azionedge.net
Your application is being deployed to all Azion Locations and it might take a few minutes.
```

O primeiro deploy pode levar vários minutos para responder a partir de todas as localidades; os deploys seguintes levam cerca de dois minutos.

O comando grava o ID de cada recurso que cria em `azion/azion.json`. O próximo deploy lê esses IDs e atualiza os mesmos recursos em vez de criar novos:

```json
{
  "name": "my-site",
  "bucket": "my-site",
  "preset": "html",
  "env": "production",
  "prefix": "20260101120000",
  "rotate-prefix": true,
  "not-first-run": true,
  "function": [],
  "application": {
    "id": 1234567892,
    "name": "my-site"
  },
  "domain": {
    "id": 0,
    "name": "__DEFAULT__",
    "domain_name": "",
    "url": ""
  },
  "rt-purge": {
    "purge_on_publish": true
  },
  "origin": null,
  "rules-engine": {
    "created": false,
    "rules": [
      {
        "id": 123458,
        "name": "Deliver Static Assets and Set Cache Policy",
        "phase": "request"
      },
      {
        "id": 123459,
        "name": "Redirect to index.html",
        "phase": "request"
      },
      {
        "id": 123460,
        "name": "Redirect to index.html for Subpaths",
        "phase": "request"
      }
    ]
  },
  "cache-settings": [
    {
      "id": 123468,
      "name": "my-site"
    }
  ],
  "workloads": {
    "id": 1234567902,
    "name": "my-site",
    "domains": [],
    "url": "https://xxxxxxxxxx.map.azionedge.net",
    "deployment_id": [
      {
        "id": 123472,
        "name": "my-site"
      }
    ]
  },
  "connectors": [
    {
      "id": 123476,
      "name": "my-site"
    }
  ]
}
```

O primeiro deploy também grava um `azion/args.json` vazio. Um projeto cujo `azion.config` declara uma function e nenhum arquivo estático faz o deploy só da function. O `azion.json` dele tem então um `bucket` vazio e `null` em `connectors` e `cache-settings`. Ele carrega uma entrada `function` com o `id` da function e o `instance-id` da function instance dela. Um projeto que declara os dois carrega os dois conjuntos de IDs.

### Fazer o deploy com um build local

Este comando faz o deploy de uma alteração no mesmo site. A CLI faz o build do projeto na sua máquina, envia os arquivos e atualiza cada recurso pelo ID em `azion/azion.json`:

```bash
azion deploy --local
```

O comando executa o build por conta própria, exista ou não uma pasta `.edge` de um `azion build` anterior. Só `--skip-build` e `--skip-framework-build` o impedem. Antes do build, ele grava um novo prefixo de storage em `azion.config.cjs`, ou em `azion.config.mjs` quando o projeto tem os dois arquivos:

```text
Running deploy command
…
[Azion] › ℹ  info      Successfully replaced "20260101120000" with "20260101120100" (2 occurrences) in azion.config.cjs

Building your Application. This process may take a few minutes
Running build step command:

$ npx --yes  @aziontech/bundler@1.2.0 build --preset html --config-version 4
…
[Azion] [Build] › ℹ  info      Using preset: html
[Azion] [Pre-Build] › ℹ  info      Starting pre-build...
[Azion] [Pre-Build] › ℹ  info      Pre-build completed successfully
[Azion] [Build] › ℹ  info      Using built-in handler from "html" preset.
[Azion] [Build] › ℹ  info      Starting build...
[Azion] [Build] › ✔  success   Build completed successfully
[Azion] [Post-Build] › ℹ  info      Starting post-build...
[Azion] [Post-Build] › ✔  success   Post-build completed successfully
[Azion] [Storage] › ℹ  info      Using provided prefix for storage 'my-site': 20260101120100
[Azion] [IaC] › ✔  success   Manifest generated successfully at <project-dir>/.edge/manifest.json
Your Application was built successfully
Updated Application my-site with ID 1234567892
Reading manifest.json file
Reading manifest.json file
Uploading source files

Uploading files  50% |████████████████████                    | (1/2) [0s:0s]

Upload completed successfully!
Edge Application my-site with id 1234567892 successfully updated
Cache Setting my-site with id 123468 successfully updated
Connector my-site with id 123476 successfully updated
Rule Engine Deliver Static Assets and Set Cache Policy with id 123458 successfully updated
Rule Engine Redirect to index.html with id 123459 successfully updated
Rule Engine Redirect to index.html for Subpaths with id 123460 successfully updated
Rules Engine of Application with id 1234567892 successfully ordered (request phase)
Workload my-site with id 1234567902 successfully updated
Workload Deployment my-site with id 123472 successfully updated
Your Application was deployed successfully

To visualize your application access the Domain: https://xxxxxxxxxx.map.azionedge.net
Your application is being deployed to all Azion Edge Locations and it might take a few minutes.
```

Um deploy seguinte leva cerca de dois minutos para responder a partir de todas as localidades.

### Pré-visualizar um deploy

Este comando simula um deploy local do mesmo site:

```bash
azion deploy --local --dry-run
```

O comando termina sem alterar nenhum recurso, e `azion/azion.json` mantém o mesmo conteúdo.

---

## Erros

| Erro                                                                                                                       | Causa                                                                                                                                                     | O que fazer                                                                                                                                                                                                                                                   |
| -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Failed to capture deploy logs: <reason>. Please check your account to verify if the resources were successfully created.` | O upload terminou, e a CLI não conseguiu acompanhar o build e o deploy que rodam na Azion. O deploy pode ter criado apenas parte dos recursos do projeto. | Execute de novo com `--debug` para imprimir o log do build que roda na Azion. Para todas as correções, consulte [Failed to capture deploy logs](/pt-br/documentacao/devtools/cli/solucao-de-problemas/#azion-deploy-falha-com-failed-to-capture-deploy-logs). |

---

## Recursos relacionados

- [Opções globais](/pt-br/documentacao/devtools/cli/globals.md): As opções que todo comando aceita, como `--debug`, `--format` e `-y`.
- [Azion CLI build](/pt-br/documentacao/devtools/cli/build.md): O comando que faz o build do projeto, que `--skip-build` deixa de fora do deploy.
- [Azion CLI link](/pt-br/documentacao/devtools/cli/link-comando.md): Como um projeto existente recebe a pasta `azion` que o deploy lê.
- [Azion CLI rollback](/pt-br/documentacao/devtools/cli/rollback.md): Como servir de novo os arquivos estáticos de um deploy anterior.
