Pular para o conteúdo principal

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:

AtributoDescrição
schema-versionContém a versão do schema. Valor fixo v1.
kindContém o tipo de manifesto. Valor fixo workflow.
metadataContém as informações de metadados do Workflow: nome, descrição e versão.
specContém a especificação do Workflow.
spec.labelContém o texto exibido para o usuário para identificar o Workflow.
spec.repositoryContém a URL do repositório com o código-fonte do Workflow. Atributo opcional.
spec.typeTipo de Workflow. Pode ser: create, starter, deploy, rollback ou reusable.
spec.targetsObrigatório para Workflows dos tipos starter, deploy ou rollback. Indica se o Workflow pode ser aplicado em app, infra ou em ambos.
spec.docsDocumentações do Workflow em português e inglês. Atributo opcional. As documentações devem estar no formato Markdown.
spec.inputsLista 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-inputsContém os inputs calculados a partir dos valores de outros inputs, utilizando expressões Jinja.
spec.outputsAtributos de saída do Workflow, se existirem. São definidos por expressões Jinja.
spec.portal-extensionsLista de extensões do tipo Widget do Portal associadas ao Workflow.
spec.portal-extensions[i].idID 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].nameNome da extensão Widget do Portal exibido para o usuário.
spec.portal-extensions[i].slugSlug da extensão Widget do Portal. O slug deve estar registrado no Portal, associado ao Workflow.
spec.jobsAgrupamentos de tarefas (Jobs) que precisam ser executadas no Workflow.
spec.jobs[i].idIdentificador do Job para referência no Workflow. Deve seguir o formato snake_case.
spec.jobs[i].labelTexto apresentado para o usuário quando o Job estiver em execução.
spec.jobs[i].depends-onLista de outros Jobs dos quais o Job depende. Jobs com todas as dependências resolvidas podem ser executados em paralelo.
spec.jobs[i].whenCondição para que o Job seja executado, definida por uma expressão Jinja que deve retornar true (case insensitive).
spec.jobs[i].stepsLista de passos (Steps) que serão executados no Job.
spec.jobs[i].steps[i].typeTipo de passo. Pode ser: action, plugin, workflow, run ou suspend.
spec.jobs[i].steps[i].workdirDiretório em que o Step será executado. Atributo opcional.
spec.jobs[i].steps[i].idID do Step para referência dentro do Workflow. Deve seguir o formato snake_case.
spec.jobs[i].steps[i].labelTexto apresentado no Portal quando o Step for exibido.
spec.jobs[i].steps[i].whenCondição para execução do Step, definida por uma expressão Jinja.
spec.jobs[i].steps[i].inputsMapeamento dos valores de inputs a serem passados para a Action, Plugin ou Workflow chamado.
spec.jobs[i].steps[i].nameIndica qual Action, Plugin ou Workflow será executado ou aplicado.
spec.jobs[i].steps[i].generated-connectionsMapa de conexões geradas pelo Plugin. A chave é o alias da conexão e o valor é o nome indicado pelo usuário.
spec.workflowsApenas para Workflows do tipo starter. Define quais Workflows serão adicionados automaticamente ao arquivo stk.yaml.