> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Workflows

> Aprenda como configurar Workflows — botões de execução configuráveis que executam qualquer comando que você escolher.

export const YouTubeEmbed = ({videoId, title = "YouTube video", startAt}) => {
  if (!videoId) {
    return null;
  }
  let url = "https://www.youtube.com/embed/" + videoId;
  if (startAt) {
    url = url + "?start=" + startAt;
  }
  return <Frame>
      <iframe src={url} title={title} allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowFullScreen></iframe>
    </Frame>;
};

É uma sequência de etapas reutilizável e personalizável que pode ser executada dentro do seu Replit App. Pode ser tão simples quanto executar `python main.py` ou tão complexo quanto executar um procedimento de múltiplas etapas.

<Frame>
  <img src="https://mintcdn.com/replit/9NKf1XREDj9JhKJb/images/workflows/workflows-pane.png?fit=max&auto=format&n=9NKf1XREDj9JhKJb&q=85&s=a4464dfb08cede3df14c1eb43d33b284" alt="image" width="525" height="622" data-path="images/workflows/workflows-pane.png" />
</Frame>

Exemplos de casos de uso:

* Executar múltiplos serviços em paralelo (ex.: frontend + backend)
* Executar arquivos ou comandos sequencialmente (ex.: executar linter → executar testes, compilar → executar código)

Para começar a [criar workflows](#creating-workflows), acesse o painel Workflows usando o menu da barra lateral de ferramentas ou pesquise o painel Workflows usando `Command + K`.

<YouTubeEmbed videoId="I5wePXNdPwg" title="Workflows on Replit" />

## Tipos de tarefas disponíveis

Atualmente existem 3 tipos de tarefas disponíveis: `Execute Shell Command`, `Install Packages` e `Run Workflow`.

### Execute Shell Command

`Execute Shell Command` armazena um comando shell e o executa usando o mesmo ambiente que o painel Shell. Este tipo de tarefa oferece uma ampla gama de casos de uso, desde executar arquivos individuais:

```text theme={null}
python main.py
```

até executar comandos complexos de consulta a banco de dados armazenados:

```text theme={null}
psql -h 0.0.0.0 -U your_username -d your_database -c "SELECT * FROM your_table;"
```

Exemplo de caso de uso:

<Frame>
  <img src="https://mintcdn.com/replit/9NKf1XREDj9JhKJb/images/workflows/shellExec-task-example.gif?s=f4853df72f16df0c4101788413504893" alt="image" width="908" height="602" data-path="images/workflows/shellExec-task-example.gif" />
</Frame>

### Install Packages

`Install Packages` utiliza o sistema integrado de gerenciamento de dependências do Replit, detectando automaticamente as dependências do seu projeto e instalando os pacotes necessários. Consulte [Gerenciamento de Dependências](/pt/references/workspace/dependency-management#the-universal-package-manager) para mais detalhes sobre como o UPM adivinha os pacotes a instalar no seu projeto.

Exemplo de caso de uso:

<Frame>
  <img src="https://mintcdn.com/replit/9NKf1XREDj9JhKJb/images/workflows/packager-task-example.webp?fit=max&auto=format&n=9NKf1XREDj9JhKJb&q=85&s=713ff279fccebb7e2b2f6538eac208a8" alt="image" width="720" height="429" data-path="images/workflows/packager-task-example.webp" />
</Frame>

### Run Workflow

`Run Workflow` permite que você execute outro workflow a partir do workflow atual. Isso possibilita reutilizar workflows e combiná-los para criar workflows mais complexos.

Exemplo de caso de uso:

<Frame>
  <img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/workflows/example-run-workflow.webp?fit=max&auto=format&n=0ixNWaRF232g0Gwn&q=85&s=2425c11902b5801a65517c3fb221ac0b" alt="image" width="720" height="678" data-path="images/workflows/example-run-workflow.webp" />
</Frame>

Ao usar este tipo de tarefa para criar dependências entre workflows, você pode editar um workflow e ter outros workflows que o referenciam usando automaticamente as últimas alterações. Observe que há um limite de profundidade nas chamadas de workflow profundamente aninhadas.

## Modo de execução do Workflow

Os Workflows oferecem dois modos diferentes de execução: sequencial e paralelo.

### Sequencial

A execução sequencial executa cada tarefa na ordem definida, aguardando que cada tarefa termine antes de passar para a próxima etapa, e interrompendo a execução da sequência se uma tarefa dentro do workflow falhar.

Um exemplo de uso deste modo é para definir comandos que são logicamente conectados, como comandos git para buscar as últimas alterações do seu branch principal e, em seguida, fazer rebase do seu branch atual sobre o branch principal:

<Frame>
  <img src="https://mintcdn.com/replit/9NKf1XREDj9JhKJb/images/workflows/example-sequential-workflow.png?fit=max&auto=format&n=9NKf1XREDj9JhKJb&q=85&s=718be1d1e659dff1dc04f15ec24deb52" alt="image" width="721" height="654" data-path="images/workflows/example-sequential-workflow.png" />
</Frame>

### Paralelo

A execução paralela executa cada tarefa em paralelo, de modo que cada tarefa é iniciada e executada independentemente de outras tarefas dentro do workflow. A falha de uma tarefa não interrompe a execução das outras tarefas.

Um exemplo de uso deste modo é executar um projeto fullstack que precisa iniciar tanto o servidor frontend quanto o backend:

<Frame>
  <img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/workflows/example-parallel-workflow.png?fit=max&auto=format&n=0ixNWaRF232g0Gwn&q=85&s=a1067b806b25e3f8722e5368fd87b48a" alt="image" width="721" height="654" data-path="images/workflows/example-parallel-workflow.png" />
</Frame>

## Criando Workflows

Os Workflows podem ser criados usando o painel de workflows clicando no botão `+ New Workflow`. Comece dando um nome descritivo ao seu workflow, escolha um modo de execução adequado e comece a adicionar tarefas. As tarefas podem ser reordenadas arrastando e soltando-as na ordem desejada.

<Frame>
  <img src="https://mintcdn.com/replit/9NKf1XREDj9JhKJb/images/workflows/example-workflow-setup.webp?fit=max&auto=format&n=9NKf1XREDj9JhKJb&q=85&s=deadd852b9ac26042147e7b8d597521d" alt="image" width="720" height="414" data-path="images/workflows/example-workflow-setup.webp" />
</Frame>

## Atribuir Workflow ao botão Run

Um workflow também pode ser atribuído ao botão Run para substituir o comportamento padrão do botão Run (veja [Configurar um Replit App](/pt/references/configuration/configuration)). Para manter o comando de execução padrão configurado no `.replit`, selecione a opção padrão "Run Replit App" dentro do dropdown.

O workflow selecionado no menu dropdown ao lado do botão Run será executado quando o botão Run for clicado. Clique no workflow desejado dentro do menu dropdown para alterar qual workflow deve ser executado pelo botão Run.

<Frame>
  <img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/workflows/configure-run-button-workflow.gif?s=b93762a559fcb83f0b3560def5e965ef" alt="image" width="588" height="254" data-path="images/workflows/configure-run-button-workflow.gif" />
</Frame>

## Visualizando saídas do Workflow

As saídas dos Workflows serão exibidas no painel `Console`. Você pode alternar a exibição para mostrar apenas as saídas mais recentes e limpar o console completamente.

<Frame>
  <img src="https://mintcdn.com/replit/9NKf1XREDj9JhKJb/images/workflows/workflow-output-view.gif?s=3b33df7f4f6e0f43e7ae2c83532c4f96" alt="image" width="706" height="434" data-path="images/workflows/workflow-output-view.gif" />
</Frame>
