Pular para o conteúdo principal

Workflow Customizado

Workflow Customizado

Os Workflows na StackSpot EDP permitem que você crie fluxos personalizados para a criação e manutenção de Aplicações e Infraestruturas de forma estruturada e reutilizável, e customize Workflows existentes, incluindo novos passos nos fluxos já definidos.

Customizar um Workflow permite que diferentes Stacks possam ter fluxos de criação e deploy distintos, adaptados às necessidades específicas de cada tecnologia, garantindo que todas as etapas obrigatórias de segurança sejam executadas.

Confira a seguir os principais conceitos da Customização de Workflows na StackSpot EDP:

  • Workflow
    Um Workflow que pode ser estendido, adaptado e personalizado como qualquer outro Conteúdo. Para permitir essa customização, você deve adicionar Pontos de Extensão ao Workflow.

  • Pontos de Extensão
    É responsável por “fazer a ponte” entre um Workflow e um Workflow Customizado. Eles representam pontos inseridos antes e/ou depois de Jobs de um Workflow Base, onde você pode inserir outros Jobs em seus Workflows Customizados.

  • Workflow Customizado
    É a extensão de um Workflow que adiciona novos Jobs e Steps ao Workflow original que possua Pontos de Extensão. O seu usuário da StackSpot EDP, precisa ter a permissão de publicação de um Workflow Customizado, de Stacks em seu Estúdio - podendo ou não usar Plugins/Actions de outros Estúdios.

Dica!

Pense em um Workflow como a fundação de um condomínio: ele define as regras e estruturas essenciais, que são imutáveis e compartilhadas por todas as casas construídas sobre ele.

Já o Workflow Customizado funciona como as casas desse condomínio, onde cada uma pode ser diferente, com cores, varandas ou telhados únicos, mas todas dependem da mesma fundação para existir.

Confira algumas regras:

  • Você pode ter apenas o Workflow (a fundação) e isso já é suficiente para executar processos padronizados.
  • O Workflow Customizado é um segundo conteúdo, criado separadamente, que se apoia em um Workflow. Ele permite adicionar Jobs e Steps próprios, que são executados antes ou depois dos Jobs definidos no Workflow.
  • O criador do Workflow define as regras principais, que não podem ser alteradas por quem cria o Workflow Customizado. Você pode personalizar apenas nos pontos permitidos, garantindo segurança e padronização.
  • O Workflow Customizado é ideal para adaptar fluxos de trabalho às necessidades específicas de cada contexto, tecnologia ou projeto, sem comprometer a estrutura principal.
  • A personalização ocorre incluindo Plugins e Actions adicionais, que podem ser executados em etapas específicas do fluxo.

Como adicionar Pontos de Extensão em um Workflow

Um Workflow serve como modelo para criar um Workflow Customizado. O Criador dele é quem controla em quais pontos do fluxo ele pode ser estendido.

A partir disso, quem for criar um Workflow Customizado consegue definir quais são os Jobs que estarão ligados aos Pontos de Extensão (extension point).

Atenção!

Para que um Workflow seja Customizado você precisa, necessariamente, inserir Pontos de Extensão nele. Ou seja, se não houver nenhum Ponto de Extensão, ele não será um Workflow Customizado.

Confira os passos para adicionar Pontos de Extensão em um Workflow.

Use um Workflow existente ou crie um novo, confira o processo de criação de um Workflow.

Passo 1. Execute o comando a seguir na STK CLI:

stk create workflow

Nomeie seu workflow: informe um nome para o Workflow. Descrição do workflow: dê uma descrição para o uso do seu Workflow. Tipo do seu workflow: selecione a opção reusable ou create, por exemplo.

Passo 2. Preencha as opções conforme o exemplo a seguir:

schema-version: v1
kind: workflow
metadata:
name: base-workflow
display-name: base-workflow
description: Customizable workflow
version: 1.0.2
spec:
type: reusable
label: Customizable workflow example
docs:
en-us: docs/en_us/docs.md
pt-br: docs/pt_br/docs.md

inputs:
- type: text
name: name
label: Name

jobs:
- id: extension_point_1
type: extension-point

- id: job_1
label: Job 1
depends-on:
- extension_point_1
steps:
- id: say_hello
label: Job 1 - Say Hello
type: run
script: |
echo Hello {{name}} from Job 1!

- id: job_2
label: Job 2
depends-on:
- extension_point_1
steps:
- id: say_hello
label: Job 2 - Say Hello
type: run
script: |
echo Hello {{name}} from Job 2!

- id: extension_point_2
type: extension-point
depends-on:
- job_2

- id: job_3
label: Job 3
depends-on:
- job_1
steps:
- id: say_hello
label: Job 3 - Say Hello
type: run
script: |
echo Hello {{name}} from Job 3!

- id: job_4
label: Job 4
depends-on:
- job_1
steps:
- id: say_hello
label: Job 4 - Say Hello
type: run
script: |
echo Hello {{name}} from Job 4!

- id: job_5
label: Job 5
depends-on:
- job_3
- job_4
steps:
- id: say_hello
label: Job 5 - Say Hello
type: run
script: |
echo Hello {{name}} from Job 5!

- id: extension_point_3
type: extension-point
depends-on:
- job_5

Passo 3. Publique o seu Workflow. Execute o comando a seguir:

stk publish workflow studio-name

Para mais detalhes sobre o comando stk publish workflow, acesse a documentação dos comandos do Workflow.

Passo 4. Execute o seu Workflow:

stk run workflow nome-studio/nome-workflow@versao

Agora você precisa criar Pontos de Extensão no seu Workflow. Confira o passo a passo a seguir:

Como criar um Workflow Customizado a partir de um Workflow

Siga os passos a seguir para criar um Workflow Customizado a partir de um Workflow:

Passo 1. Execute o comando a seguir na STK CLI:

stk create workflow
  • Nomeie seu workflow: informe um nome para o seu Workflow Customizado. Os nomes dos inputs definidos no Workflow Customizado não podem conflitar com os do Workflow original. Ou seja, não podem ser os mesmos.
  • Descrição do workflow: dê uma descrição para o uso do seu Workflow.
  • Tipo do seu workflow: selecione a opção extension.
  • Selecione o estúdio: selecione o Estúdio que você publicou o seu Workflow Base.
  • Selecione o workflow: selecione o Workflow que você quer estender. É obrigatório selecionar Workflows que já tenham um ou mais Pontos de Extensão.

Um novo Workflow Customizado será gerado com os Pontos de Extensão definidos no Workflow. Esses Pontos de Extensão podem ser modificados para que Jobs sejam inseridos no Workflow. Confira um exemplo a seguir:

schema-version: v1
kind: workflow
metadata:
name: my-workflow-extension
display-name: my-workflow-extension
description: Testing workflow extension
version: 1.0.2
spec:
type: extension
label: Tipo do Workflow
targets:
- app
#- infra
docs:
en-us: docs/en_us/docs.md
pt-br: docs/pt_br/docs.md
extends: testes-import-inputs/base-workflow@1
inputs:
- type: text
name: surname
label: Surname
extension-points:
- id: extension_point_1
jobs:
- id: extension_point_1_job_1
label: Extension 1 job 1
steps:
- id: step_id_1
label: Extension point 1 Job 1 Step 1
type: run
script: |
echo "Hello {{name}} {{surname}} extension_point_1_job_1"
- id: extension_point_1_job_2
label: Extension point 1 job 2
depends-on:
- extension_point_1_job_1
steps:
- id: step_id_1
label: Extension point 1 Job 2 Step 1
type: run
script: |
echo "Hello {{name}} {{surname}} extension_point_1_job_2"
- id: extension_point_2
jobs:
- id: extension_point_2_job_1
label: Extension point 2 job 1
steps:
- id: step_id_1
label: Extension point 2 Job 1 Step 1
type: run
script: |
echo "Hello {{name}} {{surname}} extension_point_2_job_1"
- id: extension_point_2_job_2
label: Extension point 2 job 2
steps:
- id: step_id_1
label: Extension point 2 Job 2 Step 1
type: run
script: |
echo "Hello {{name}} {{surname}} extension_point_2_job_2"

Adicione os Pontos de Extensão dentro da lista de jobs na especificação do Workflow. Confira a seguir os atributos de cada:

  • extension-points: uma lista de Pontos de Extensão onde você pode inserir jobs adicionais. Cada Ponto de Extensão contém um ID que corresponde ao ponto definido no Workflow base. Em cada ponto, você pode incluir uma lista de jobs, usando o mesmo formato dos jobs de um Workflow normal.

Além de adicionar jobs nos Pontos de Extensão, um Workflow Customizado também pode definir inputs adicionais. Você pode usar tanto os inputs e outputs do Workflow quanto do Workflow customizado em expressões. A ordem de execução será a seguinte:

  1. Inputs do Workflow;
  2. Inputs dos Pontos de Extensão.
  • id: identificador do Ponto de Extensão, utilizado como referência em Workflows customizados. Ele deve ser único e não pode duplicar nenhum ID de job do Workflow base.

  • extends: especifica o Workflow a ser estendido. A sintaxe segue o padrão studio/workflow@numero-versão.

Por exemplo:

studio-java/create-java-api-workflow@1.
  • type: valor fixo “extension-point”, indica que é um espaço reservado para customização, e não um job regular.

  • depends-on: lista de dependências para definir a ordem de execução do ponto de extensão durante a execução do Workflow.

  • type: String fixa ‘extension’.

Passo 2. Publique o seu Workflow. Execute o comando a seguir:

stk publish workflow studio-name

Passo 3. Execute o seu Workflow, com os Pontos de Extensão definidos, com o comando a seguir:

stk run workflow nome-studio/nome-workflow@versao
  • Nome: nomeie o Workflow.
  • Sobrenome: insira o input da Extensão

Através da URL disponibilizada no terminal, você pode visualizar o Workflow Customizado com os Pontos de Extensão e os respectivos jobs.

Confira a seguir um exemplo visual do fluxo de um Workflow Customizado: