Especificação do Workflow
Nesta seção, você encontra detalhes sobre a especificação do arquivo
workflow.yaml, incluindo os campos obrigatórios, opcionais e como utilizá-los em Workflows na StackSpot.
Especificação de um Workflow
O Workflow é criado como um arquivo YAML chamado workflow.yaml. Confira a seguir um exemplo de manifesto:
Manifest workflow.yaml specification
schema-version: v1
kind: workflow
metadata:
name: workflow-name
display-name: Workflow displayed to user
description: Description of what workflow does
version: 0.0.1
spec:
type: deploy
label: Deploy application
repository: https://github.com/stack-spot/workflow?utm_source=stackspot
targets:
- "app"
- "infra"
docs:
pt-br: docs/pt-br/doc.md
en-us: docs/en-us/doc.md
inputs:
- type: text
name: text_input
label: "Type some text:"
- type: bool
name: boolean_input
label: "Do you want to run optional job?"
- type: generated-connection
name: some_s3_connection
label: "Give an alias for generated S3 connection"
connection-interface-type: aws-s3-conn
computed-inputs:
computed_input_name: "{{ text_input | upper }}"
outputs:
uppercase_text_output: "{{ computed_input_name | upper }}"
portal-extensions:
- id: widget_1
name: Widget 1
slug: teste-widget-workflow
- id: widget_2
name: Widget 2
slug: widget-digital-store
jobs:
- id: some_job
label: Some job
steps:
- type: action
name: studio/some_action@1
id: some_action_execution
label: Execution action
workdir: .
inputs:
some_action_input: "fixed_value"
other_action_input: "{{ inputs.text_input }}"
- id: optional
label: Optional job
depends-on:
- some_job
when: "{{ boolean_input }}"
steps:
- type: plugin
name: studio/optional_plugin@1
id: apply_optional_plugin
label: Apply optional plugin
when: "{{ boolean_input }}"
inputs:
some_plugin_input: "fixed_value"
other_plugin_input: "{{ text_input | lower }}"
input_from_other_job: "{{ outputs.some_job.some_action_execution.some_action_output }}"
Atributos do Workflow
A seguir estão os detalhes de cada atributo da especificação de um Workflow:
| Atributo | Descrição |
|---|---|
schema-version | Contém a versão do schema. Valor fixo v1. |
kind | Contém o tipo de manifesto. Valor fixo workflow. |
metadata | Contém as informações de metadados do Workflow: nome, descrição e versão. |
spec | Contém a especificação do Workflow. |
spec.label | Contém o texto exibido para o usuário para identificar o Workflow. |
spec.repository | Contém a URL do repositório com o código-fonte do Workflow. Atributo opcional. |
spec.type | Tipo de Workflow. Pode ser: create, starter, deploy, rollback ou reusable. |
spec.targets | Obrigatório para Workflows dos tipos starter, deploy ou rollback. Indica se o Workflow pode ser aplicado em app, infra ou em ambos. |
spec.docs | Documentações do Workflow em português e inglês. Atributo opcional. As documentações devem estar no formato Markdown. |
spec.inputs | Lista os inputs que serão solicitados ao usuário para executar o Workflow, exceto os inputs que têm o parâmetro scope: hidden configurado. |
spec.computed-inputs | Contém os inputs calculados a partir dos valores de outros inputs, utilizando expressões Jinja. |
spec.outputs | Atributos de saída do Workflow, se existirem. São definidos por expressões Jinja. |
spec.portal-extensions | Lista de extensões do tipo Widget do Portal associadas ao Workflow. |
spec.portal-extensions[i].id | ID da extensão Widget do Portal. Os IDs das extensões devem ser únicos dentro de cada versão do Workflow. |
spec.portal-extensions[i].name | Nome da extensão Widget do Portal exibido para o usuário. |
spec.portal-extensions[i].slug | Slug da extensão Widget do Portal. O slug deve estar registrado no Portal, associado ao Workflow. |
spec.jobs | Agrupamentos de tarefas (Jobs) que precisam ser executadas no Workflow. |
spec.jobs[i].id | Identificador do Job para referência no Workflow. Deve seguir o formato snake_case. |
spec.jobs[i].label | Texto apresentado para o usuário quando o Job estiver em execução. |
spec.jobs[i].depends-on | Lista de outros Jobs dos quais o Job depende. Jobs com todas as dependências resolvidas podem ser executados em paralelo. |
spec.jobs[i].when | Condição para que o Job seja executado, definida por uma expressão Jinja que deve retornar true (case insensitive). |
spec.jobs[i].steps | Lista de passos (Steps) que serão executados no Job. |
spec.jobs[i].steps[i].type | Tipo de passo. Pode ser: action, plugin, workflow, run ou suspend. |
spec.jobs[i].steps[i].workdir | Diretório em que o Step será executado. Atributo opcional. |
spec.jobs[i].steps[i].id | ID do Step para referência dentro do Workflow. Deve seguir o formato snake_case. |
spec.jobs[i].steps[i].label | Texto apresentado no Portal quando o Step for exibido. |
spec.jobs[i].steps[i].when | Condição para execução do Step, definida por uma expressão Jinja. |
spec.jobs[i].steps[i].inputs | Mapeamento dos valores de inputs a serem passados para a Action, Plugin ou Workflow chamado. |
spec.jobs[i].steps[i].name | Indica qual Action, Plugin ou Workflow será executado ou aplicado. |
spec.jobs[i].steps[i].generated-connections | Mapa de conexões geradas pelo Plugin. A chave é o alias da conexão e o valor é o nome indicado pelo usuário. |
spec.workflows | Apenas para Workflows do tipo starter. Define quais Workflows serão adicionados automaticamente ao arquivo stk.yaml. |