run-action
O Hook Declarativo do tipo run-action permite executar Actions de uma Stack quando um Plugin é aplicado em uma Aplicação ou Infraestrutura.
schema-version: v4
kind: plugin
metadata:
name: run-action-hook-plugin
display-name: run-action-hook-plugin
description: Describe what your Plugin does.
version: 0.0.1
spec:
type: app
compatibility:
- python
docs:
pt-br: docs/pt-br/docs.md
en-us: docs/en-us/docs.md
single-use: false
requires:
actions:
- my-studio-slug/my-stack-slug@1.0.0/my-action-slug
technologies: # Ref: https://docs.stackspot.com/create-use/create-content/yaml-files/plugin-yaml/#technologies-1
- Api
stk-projects-only: false
inputs:
- label: Select the connection for your my-dynamo-conn
name: my-dynamo-conn
type: required-connection
connection-interface-type: aws-dynamo-conn
- label: Type the name of your resource
name: resource
type: text
required: true
hooks:
- type: run-action
trigger: after-render
name: my-studio-slug/my-stack-slug@1.0.0/my-action-slug
inputs:
user_name: User with {{ resource }}
env: qastaging
connections:
- alias: my-dynamo-conn
selected: aws-dynamo-conn-selected
Ações disponíveis do Hook Declarativo run-action
trigger:
Campo para definir gatilhos que informam o momento em que o Hook Declarativo deve ser executado.
before-input
Executa o Hook Declarativo antes de receber os parâmetros de entrada da pessoa usuária.
trigger: before-input
before-render
Executa o Hook Declarativo antes de o Template gerar arquivos no projeto.
trigger: before-render
after-render
Executa o Hook Declarativo após o Template gerar arquivos no projeto.
trigger: after-render
name:
O nome da Action que você deseja executar.
Você pode usar uma das seguintes sintaxes:
- Sem informar a versão da Stack (a última versão publicada da Stack será utilizada):
<studio-slug>/<stack-slug>/<action-slug>
- Com uma versão específica da Stack:
<studio-slug>/<stack-slug>@<stack-version>/<action-slug>
Exemplo:
name: my-studio-slug/my-stack-slug@1.0.0/my-action-slug
-
Se você informar apenas o slug da Stack sem a versão semântica, usando
<studio-slug>/<stack-slug>/<action-slug>, o Hook Declarativorun-actionexecuta a Action da última versão publicada da Stack. -
Todas as Actions utilizadas no Hook Declarativo
run-actiondevem estar listadas no camporequires.actionsdo seu Plugin.
inputs: (Opcional)
Se a Action possuir inputs, você precisa colocá-los no Hook Declarativo run-action.
Para cada input, preencha o Hook Declarativo da seguinte forma:
input_name: input value
Exemplo:
O exemplo de Action a seguir tem um input chamado user_name. Na aba Exemplo do run-action em um Plugin, você pode ver o mesmo input preenchido no trecho do Hook Declarativo run-action:
- Exemplo de Action
- Exemplo do run-action em um Plugin
schema-version: v3
kind: action
metadata:
name: my-python-action
display-name: my-python-action
spec:
type: python
docs:
pt-br: docs/pt-br/docs.md
en-us: docs/en-us/docs.md
requires:
actions:
- my-studio/my-stack@1.0.0/my-python-action
inputs:
- label: Who are you?
name: user_name
type: text
required: false
pattern: '([A-Z][a-z]+)+'
help: 'Inform your name'
python:
workdir: .
script: script.py
# ***Outros campos do Plugin acima!***
hooks:
- type: run-action
trigger: after-render
name: my-studio/my-stack@1.0.0/my-python-action
inputs:
user_name: User with {{ resource }}
O campo inputs: suporta interpolação de dados e filtros Jinja.
env: (Opcional)
Informe um ambiente específico onde a Action será executada.
Exemplo:
# ***Outros campos do Plugin acima!***
hooks:
- type: run-action
trigger: after-render
name: my-studio/my-stack@1.0.0/my-action-slug
inputs:
user_name: User with {{ resource }}
env: qastaging
connections: (Opcional)
Caso sua Action tenha Connections requeridas, informe o alias da Connection e o tipo selecionado da seguinte forma:
Exemplo:
- Exemplo de Action com input required-connection
- Exemplo do run-action com Connections
schema-version: v3
kind: action
metadata:
name: my-python-action
display-name: my-python-action
description: Describe your action explaining its purpose
spec:
type: python
docs:
pt-br: docs/pt-br/docs.md
en-us: docs/en-us/docs.md
requires:
actions:
- my-studio-slug/my-stack-slug@1.0.0/my-action-slug
inputs:
- label: Select the connection for your my-dynamo-conn
name: my-dynamo-conn
type: required-connection
connection-interface-type: aws-dynamo-conn
- label: Who are you?
name: user_name
type: text
required: false
pattern: '([A-Z][a-z]+)+'
help: 'Inform your name'
python:
workdir: .
script: script.py
# ***Outros campos do Plugin acima!***
hooks:
- type: run-action
trigger: after-render
name: my-studio/my-stack@1.0.0/my-action-slug
inputs:
user_name: User with {{ resource }}
env: qastaging
connections:
- alias: my-dynamo-conn
selected: aws-dynamo-conn