Pular para o conteúdo principal

Criar Workflow

Pré-requisitos

  • StackSpot CLI instalado e atualizado.
  • Permissão e acessos de Content Creator para criar conteúdos para um Estúdio.

Criar um Workflow

Você deve criar o Workflow usando o STK CLI, execute o comando a seguir:

Comando para criar um Workflow
stk create workflow

Responda às perguntas no terminal. Confira a seguir as informações obrigatórias dos metadados do seu Workflow:

  • Informe um nome para o Workflow;
  • Dê uma descrição para o uso do seu Workflow;
  • Escolha o tipo do seu Workflow. Atualmente, os tipos disponíveis são deploy e reusable.

Uma pasta com o nome do Workflow é criada com a seguinte estrutura:

  • Pasta /docs: pasta que contém um template para a documentação do seu Workflow. As documentações devem ser escritas em arquivos Markdown e têm as pastas pt_br e en_us para as documentações com versões em português e inglês.
  • Arquivo .stkignore, comum em todo projeto StackSpot. Para mais detalhes, acesse a página do stkignore.
  • Arquivo workflow.yaml com a estrutura do seu Workflow.

Inicialmente, o Workflow possui a seguinte estrutura:

schema-version: v1
kind: workflow
metadata:
name: my-first-workflow
display-name: my-first-workflow
description: First creation of a Workflow
version: 0.0.1
spec:
type: reusable
label: Workflow Title
docs:
en-us: docs/en_us/docs.md
pt-br: docs/pt_br/docs.md
jobs:
- id: job_id_1
label: Job which runs a action and apply plugin
steps:
- id: step_id_1
label: Step which run action
name: stackspot/hello-world@1.0.0
type: action
inputs:
const_input: "This is a example of fixed input"
- id: step_id_2
label: Step which apply plugin
name: stackspot/plugin-basic@1.0.0
type: plugin
inputs:
const_input: "This is a example of fixed input"

- id: job_id_2
label: Job Which runs another workflow
depends-on:
- job_id_1
steps:
- id: step_id_1
name: stackspot/workflow@1.0.0
type: workflow
inputs:
const_input: "This is a example of fixed input"

Editando o seu Workflow

Um Workflow é formado por Jobs, que são compostos por Steps.

Ao criar um Workflow, uma estrutura básica e funcional é gerada como exemplo. No entanto, essa estrutura inicial não é suficiente para atender às necessidades de um Workflow real e deve ser ajustada conforme o seu caso de uso.

Escrevendo Jobs

Um Job é composto pelos seguintes parâmetros:

  • id: nome identificador do Job. Deve ser escrito no formato snake_case.
  • label: texto apresentado para a pessoa usuária quando o Job estiver executando.
  • depends-on: lista com os Jobs que o Job atual depende.
  • when: condição que determina se o Job será executado. Retorna os valores "true" ou "false" e deve retornar "true" para que o Job execute.
  • steps: lista dos passos que serão executados no Job.
Jobs:
- id: optional
label: Optional job
depends-on:
- some_job-id
when: "{{ boolean_input }}"
steps:
- type: plugin
name: studio/optional_plugin@1
id: apply_optional_plugin
label: Apply optional plugin

Escrevendo Steps

Um Step é composto pelos seguintes parâmetros:

  • type: tipo do Step. As opções disponíveis são action, plugin, workflow e run.
Atenção!

Se o Step for do tipo workflow, ele deverá ser único dentro do Job.

  • workdir: diretório onde o Step será executado. O valor padrão caso não for preenchido será " . " (pasta atual). Atributo opcional.
  • id: nome identificador do Step. Deve ser escrito no formato snake_case.
  • label: texto apresentado no Portal da StackSpot quando o Step for exibido.
  • when: condição que determina se o Step será executado. Retorna os valores "true" ou "false" e deve retornar "true" para que o Step execute.
  • inputs: mapeamento dos valores de inputs a serem informados para a Action/ Plugin/ Workflow. Sintaxe: nome-do-input: "valor-do-input".
  • name: indica qual Action, Plugin ou Worfklow que será executado ou aplicado. Sintaxe:
    • Action: nome-do-estudio/nome-action@número-da-versão;
    • Plugin: nome-do-estudio/nome-plugin@número-da-versão;
    • Workflow: nome-do-estudio/nome-workflow@número-da-versão;
  • generated-connections: lista o mapeamento das Connections Interfaces geradas pelos Plugins. A chave é o alias da conexão e o valor é o nome indicado pela pessoa usuária.
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 }}"