Pular para o conteúdo principal

Especificação do Workflow

Especificação de um Workflow

O Workflow é criado como um arquivo YAML chamado workflow.yaml, confira a seguir o seu 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
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 }}"
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 que será exibido para o usuário para identificar o workflow.
spec.repositoryContém a URL do repositório com o código fonte do Workflow. É um atributo opcional.
spec.typeTipo de Workflow: “create”, “starter”, “deploy”, “destroy”, “rollback”, “reusable”.
spec.targetsObrigatório para Workflows dos tipos starter, deploy, destroy ou rollback. Indica se pode ser aplicado em “app”, “infra” ou ambos.
spec.docsDocumentações do Workflow em inglês e português. É um atributo opcional. As documentações devem ser no formato Markdown.
spec.inputsContém uma lista com os inputs que serão perguntados ao usuário para executar o Workflow. Exceto inputs com o parâmetro scope: hidden configurados.
spec.computed-inputsContém os inputs calculados a partir dos valores dos outros inputs.
spec.outputsAtributos de saída do Workflow (se existirem). Definidos por uma expressão Jinja.
spec.jobsAgrupamentos de tarefas 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 executando.
spec.jobs[i].depends-onLista de outros Jobs dos quais o Job depende. Jobs com dependências resolvidas executam em paralelo.
spec.jobs[i].whenCondição para que o Job execute, definida por uma expressão Jinja que deve retornar “true” (case insensitive).
spec.jobs[i].stepsLista de passos que serão executados nos Jobs.
spec.jobs[i].steps[i].typeTipo de passo: “action”, “plugin”, “workflow”, "run" e “suspend”.
spec.jobs[i].steps[i].workdirDiretório onde o Step será executado. Atributo opcional.
spec.jobs[i].steps[i].idId do passo 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/Workflow.
spec.jobs[i].steps[i].nameIndica qual Action/Plugin/Workflow será executado/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 stk.yaml.