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
ereusable
.
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
een_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
erun
.
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
;
- Action:
- 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 }}"