Usar Actions
Criar uma Action
Você pode criar Actions pelo CLI da StackSpot (STK CLI). Por padrão, toda Action possui um escopo local e só pode ser executada pelo STK CLI, mas você também pode configurar a Action em sua Conta e executá-la remotamente.
Para criar a estrutura inicial da sua Action, execute o comando stk create action
. Confira o exemplo:
stk create action my-action-name
Após executar o comando acima, responda algumas perguntas no terminal:
- Escolha o Tipo da Action:
- python
- shell
Você pode informar o tipo da Action pelo terminal com a opção --type
.
-
Adicione uma URL de um repositório Git para hospedar o código da sua Action para ser exibida no Portal, ou utilize a opção
--remote
pelo terminal. -
Defina a versão inicial da sua Action no formato
X.Y.Z
(apenas números, exemplo:1.1.0
), ou utilize a opção--version
pelo terminal. -
Adicione uma descrição para a Action, ou utilize a opção
--description
e digite o texto entre aspas duplas (" Text description "
) pelo terminal.
stk create action my-action-name --type container --remote https://github.com/my-action-name/repo --version 1.1.0 --description "The purpose of my Action"
Validar e Publicar uma Action em um Estúdio
Após criar a sua Action, você pode testá-la executando a Action antes de publicá-la.
Antes de publicar a sua Action, você precisar validar a sua estrutura. Siga os passos:
Para publicar uma Action, confira se o Slug (Identificador) é único dentro do Estúdio. Não é possível ter um mesmo Slug, ou seja com a mesma identificação (seja de Stack, Plugin ou Action) em um Estúdio.
Passo 1. Execute o comando stk validate action dentro da pasta da Action.
stk run validate action
Passo 2. Se a validação executar com sucesso, siga as instruções para publicar a sua Action.
Se retornar algum erro, você precisa corrigir e executar a validação novamente.
- Na pasta da sua Action, execute o comando stk publish action:
stk publish action --studio [studio-name]
- Informe para qual Estúdio você deseja publicar a Action, utilize a opção
--studio
.
Exemplo:
stk publish action --studio my-studio-name
Executar uma Action
Ao executar uma Action, todas as ações definidas nela serão executadas localmente em sua máquina. Porém, existem algumas obervações antes de executar essas Actions localmente, confira a seguir:
Executar Action não publicada
Actions que não foram publicadas podem ser executadas localmente em sua máquina para testar as funções que a Action executa, para isso, execute o comando informando o caminho da pasta da Action:
Execute o comando stk run action.
Exemplo:
stk run action /Users/user.name/my-action-name
Executar Action publicada
Actions publicadas ficam disponíveis no Portal da StackSpot, você pode executar as Actions publicadas utilizando ou não as informações pré definidas no Workspace da sua Conta.
Você pode executar a Action utilizando o Workspace ou não, confira os exemplos:
1. Executar uma Action sem usar as variáveis de contexto do Workspace
Siga o padrão <studio-slug>/<action-name>@<action-version>
. Só pode ser utilizado quando não há um Workspace ativo.
Exemplo sem Workspace:
stk run action my-studio-name/action-name@1.0.0
2. Executar uma Action usando as variáveis de contexto configuradas para a Action na Stack dentro do Workspace ativo
A versão da Action (@stack-version
) só pode ser definida se não houver um Workspace ativo: <studio-slug>/<stack-slug>/<action-name>@<stack-version>
.
Exemplo com Workspace Ativo:
stk run action my-studio-name/my-stack-name/my-action-name
Confira se a Equipe em que você está ainda pertence ao Estúdio em que a Action foi adicionada. Caso a Equipe em que você está for deletada do Estúdio, não será possível fazer nenhuma ação nele.
- Configuração de Connection Interface
Durante a execução de uma action, ela pode depender de uma
connection
. Confira um exemplo de um trecho da sintaxe do manifesto:
requires:
connections:
- type: some-type
alias: some_alias
- type: some-type
alias: some_alias2
Agora, confira o exemplo completo do manifesto da Action com a dependência de uma connection
:
schema-version: v2
kind: action
metadata:
name: some-kebab-case-name
description: some description
display-name: Some display name
version: 1.0.1
picture: images/plugin.png
spec:
type: python
release-notes: docs/release-notes.md
requires:
connections:
- type: some-type
alias: some_alias
- type: some-type
alias: some_alias2
python:
workdir: another/random/path
script: random_name/a_cool_name.py