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:
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 que será 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. É um atributo opcional. |
spec.type | Tipo de Workflow: “create”, “starter”, “deploy”, “destroy”, “rollback”, “reusable”. |
spec.targets | Obrigatório para Workflows dos tipos starter, deploy, destroy ou rollback. Indica se pode ser aplicado em “app”, “infra” ou ambos. |
spec.docs | Documentações do Workflow em inglês e português. É um atributo opcional. As documentações devem ser no formato Markdown. |
spec.inputs | Conté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-inputs | Contém os inputs calculados a partir dos valores dos outros inputs. |
spec.outputs | Atributos de saída do Workflow (se existirem). Definidos por uma expressão Jinja. |
spec.jobs | Agrupamentos de tarefas 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 executando. |
spec.jobs[i].depends-on | Lista de outros Jobs dos quais o Job depende. Jobs com dependências resolvidas executam em paralelo. |
spec.jobs[i].when | Condição para que o Job execute, definida por uma expressão Jinja que deve retornar “true” (case insensitive). |
spec.jobs[i].steps | Lista de passos que serão executados nos Jobs. |
spec.jobs[i].steps[i].type | Tipo de passo: “action”, “plugin”, “workflow”, "run" e “suspend”. |
spec.jobs[i].steps[i].workdir | Diretório onde o Step será executado. Atributo opcional. |
spec.jobs[i].steps[i].id | Id do passo 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/Workflow. |
spec.jobs[i].steps[i].name | Indica qual Action/Plugin/Workflow será executado/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 stk.yaml. |