Pular para o conteúdo principal

plugin.yaml

Exemplo de um plugin.yaml

schema-version: v3 #required
kind: plugin #required
metadata:
name: ecs-service #required
description: Plugin to create an ECS server #required
display-name: Esc Service #optional
version: 1.0.0 #required
spec:
type: app/infra #required #accepted values: app or infra
compatibility: #optional
- python
docs: #optional
pt-br: docs/pt-br/docs.md
en-us: docs/en-us/docs.md
runtime: #required if the plugin is type: infra
environment: # required for infra Plugins
- terraform-1-4
- aws-cli-2-2
single-use: false #optional #accepted values: true or false
justification: "Justification text" # required
requires: #optional
actions:
- my-studio-slug/my-action-or-plugin-slug
plugins:
- my-studio/single-use-app-plugin
- my-studio/terraform-aws-elasticache-redis
- my-studio/sqs-create-plugin
- studio/plugin
generates: #it only exists if the plugin is type: infra
links: #optional
- name: Link name
url: Link URL
type: static #static type
picture: icon.png
- name: Link name
url: https://{{connections.rds.host}}.com.br/ #dynamic links use JINJA expressions
type: dynamic #dynamic type
picture: docs/grafana.png
stk-projects-only: true #required #accepted values: true or false
app-allowed: false #it only exists if the plugin is type: infra #accepted values: true or false
inputs: #optional
- label: Select the connection for your ecs-task-creator-placeholder
type: required-connection
name: ecs-task-creator-placeholder
connection-interface-type: ecs-task-conn
- label: Select the connection for your ec2-alb-creator-placeholder
type: required-connection
name: ec2-alb-creator-placeholder
connection-interface-type: ec2-alb-conn
- label: Select the connection for your ec2-alb-creator-placeholder2
type: required-connection
name: ec2-alb-creator-placeholder2
connection-interface-type: ec2-alb-conn
- label: Inform the connection for bucket_s3
name: bucket_s3
type: generated-connection
connection-interface-type: aws-s3-conn
outputs:
- from: aws-s3-alias-arn
to: arn
- from: aws-s3-alias-bucket_name
to: bucket_name
- label: Input label
name: Input name
type: text
required: true
default: Input default value
pattern: '([A-Z][a-z]+)+'
help: 'Insert any text'

Atributos Mandatórios

schema-version

Versão do schema do Manifesto.

- schema-version: v3

kind

Tipo do Manifesto.

- kind: plugin

metadata

É o que identifica o Plugin. São do tipo string:

name

Nome do Plugin que será exibido no Portal. Quando você não nomeia, o nome informado anteriormente será exibido. Utiliza kebab case.

- name: lambda-new-endpoint

description

Descrição do Plugin. A descrição precisa ter, no mínimo, três caracteres e no máximo, 500.

- description: Add new endpoint to an existing Lambda API.

version

Versão do Plugin. Segue o Versionamento Semântico (SemVer).

- version: 1.0.1

spec

É a especificação do Plugin.

repository

Link do código fonte do Plugin.

- repository:  {{repository}}
{% endif %}

type

É o tipo do Plugin. Pode ser app ou infra.

- type: app

Atributos Opcionais

metadata

É o que identifica o Plugin. São do tipo string:

display-name

Nome do Plugin que será exibido no Portal. Quando você não nomeia, o nome informado anteriormente será exibido.

- display-name: Endpoint para Lambda.

picture:

Ícone do Plugin que será exibido no Portal da StackSpot.

- picture: plugin.png 

spec

É a especificação do Plugin. São do tipo string:

single-use

Se esse atributo estiver como true, indica que o Plugin só pode ser aplicado uma vez em uma Aplicação ou Infraestrutura.

- single-use: true

stk-projects-only

Se o atributo estiver como true, indica que apenas um Plugin pode ser utilizado em projetos já criados na StackSpot. Não é permitido converter projetos externos em projetos da StackSpot.

- stk-projects-only: true

app-allowed

O atributo app-allowed está presente apenas nos Plugins do tipo infra. Se o atributo estiver com o valor true, indica que o Plugin de Infraestrutura pode ser aplicado em uma Aplicação. Se estiver com o valor false, o Plugin só pode ser aplicado em Infraestruturas.

requires

Determina se um Plugin ou Action será requerido por outro. Caso um ou mais Actions e Plugins que foram exigidos ainda não estejam aplicados, o STK CLI informará a necessidade da aplicação. Para isso, é preciso aplicá-los manualmente antes de prosseguir.

requires:
plugins:
- studio-slug/plugin-slug

compatibility

Lista de compatibilidade do Plugin.

-  compatibility: 
- python

docs

Markdown com a documentação do Plugin.

  docs:
pt-br: docs/pt-br/docs.md
en-us: docs/en-us/docs.md

single-use

Determina se o Plugin pode ser aplicado uma única vez ou ser aplicado várias vezes em uma mesma Aplicação ou Infraestrutura. Os valores aceitos são:

  • true: O Plugin será aplicado uma única vez em uma Aplicação ou Infraestrutura;
  • false: O Plugin pode ser aplicado várias vezes em uma mesma Aplicação ou Infraestrutura.

Ao criar um Plugin, a opção single-use vem preenchida como false por padrão.

spec:
single-use: true
...

technologies

Lista de tecnologias relacionadas ao Plugin.

-   technologies: 
- Api
- Node
- npm
- Cypress

spec.generates.links[n]

Permite definir links estáticos ou dinâmicos no seu Plugin. Esses links redirecionam para ambientes externos ao da StackSpot. Por exemplo, um link de documentação externa do Plugin, ou um link para um serviço de monitoramento Amazon Cloud Watch.

Exemplo de um link estático:

spec:
generates:
links:
- name: Plugin Name
url: link URL
type: static
picture: link icon

Exemplo de um link dinâmico:

spec:
generates:
links:
- name: Link name
url: https://{{connections.rds.host}}.com.br/ #dinamic links use JINJA expressions
type: dynamic #dinamic type
picture: docs/grafana.png

Para saber mais sobre links, acesse sobre como adicionar links dinâmicos e estáticos no Plugin.

spec.runtime.environment

Permite definir a configuração limitada a ser usada durante uma execução, conforme definido no Run da configuração do ambiente.

Este campo é utilizado somente em plugins do tipo infra.

runtime:
environment:
- terraform-1-4
- aws-cli-2
- git-2
Dica!

As versões que têm suporte para Terraform nos Plugins de Infraestrutura são:

  • 1.3 (1.3.10)
  • 1.4 (1.4.7)
  • 1.5 (1.5.7)

spec.requires.actions

A opção actions define no Plugin atual, uma lista de Actions que devem existir no Estúdio e Stack informados para que o Plugin seja aplicado. As Actions listadas serão executadas durante a aplicação do Plugin.

A Action deve ser informada da seguinte maneira:

<studio-slug>/<action-slug>

Exemplo:

Considere o trecho de código:

requires:
actions:
- my-studio-slug/my-action-slug
Atenção!

As Actions listadas no campo requires devem estar publicadas no Estúdio informado.

spec.requires.plugins

A opção plugins define no Plugin atual, uma lista de Plugins que devem existir previamente em uma Aplicação ou Infraestrutura para que o seu Plugin seja aplicado. Dessa forma você estabelece uma lista de Plugins como pré-requisito da aplicação do seu Plugin.

Considere o trecho de código a seguir:

requires:
plugins:
- studio-slug/plugin-slug
Atenção!

Os Plugins listados no campo requires devem estar publicados no Estúdio informado.

spec.justification

Essa opção é incluída automaticamente ao usar os comandos stk create plugin e stk create action. Nessa opção você deve inserir um texto com a justificativa da aplicação do Plugin ou execução da Action. Esse texto será enviado como resposta para o Estúdio que estiver com a opção de governança habilitada. Estúdios com governança ativa exigem uma justificativa da aplicação ou execução de um recurso.

Se a justificativa não for preenchida, você pode informá-la no momento da publicação do Plugin ou Action, usando a flag --justification.

Exemplo:

stk publish plugin --studio my-studio-name --justification "my justification text"

inputs

Coletam informações relevantes para o escopo do Plugin. Os inputs são interpretados pelo STK CLI durante a execução dos comandos para pedir essas informações para os usuários.

Para ver todos os inputs possíveis, confira a seção Inputs.

inputs-envs

Assim como os inputs, os inputs-envs coletam informações relevantes para o escopo do Plugin de acordo com os ambientes disponíveis na sua Conta ou Workspace.

Os inputs-envs são interpretados pelo STK CLI durante a execução dos comandos para pedir essas informações para os usuários. Dessa forma, ao preencher os inputs-envs você pode informar valores diferentes para cada ambiente ou o mesmo valor para todos os ambientes em uma única aplicação/uso do Plugin.

Confira o exemplo:

schema-version: v3
kind: plugin
metadata:
name: plugin-env-input
display-name: plugin-env-input
description: Describe your plugin explaining its purpose
version: 1.0.0
spec:
type: app
compatibility:
- python
docs:
pt-br: docs/pt-br/docs.md
en-us: docs/en-us/docs.md
single-use: False
runtime:
environment:
- terraform-1-4
- aws-cli-2
- git-2
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 ecs-task-creator-placeholder
name: ecs-task-creator-placeholder
type: required-connection
connection-interface-type: ecs-task-conn
- label: Select a language
name: language
type: select
items:
- Java
- Kotlin
- label: Inform your project name
name: project_name
type: text
default: My Project
inputs-envs:
- label: Connection Pool
type: text
name: connection_pool
- label: Https
type: bool
name: http

computed.inputs

Cria inputs baseados em outros inputs. Confira mais sobre Computed Inputs em Inputs Avançados

-  computed.inputs: 

technologies

Lista de strings das tecnologias relacionadas ao Plugin.

As tecnologias permitidas para o uso são:

  • Allure
  • Angular
  • Apache Spark
  • API
  • AWS API Gateway
  • AWS Athena
  • AWS Batch
  • AWS CloudFront
  • AWS CloudWatch
  • AWS Cognito
  • AWS Data Pipeline
  • AWS DynamoDB
  • AWS EC2
  • AWS ECS/Fargate
  • AWS EKS
  • AWS Elastic Beanstalk
  • AWS ELB
  • AWS EMR
  • AWS EventBridge
  • AWS Glue
  • AWS IAM
  • AWS Kafka
  • AWS Kinesis
  • AWS Lake Formation
  • AWS Lambda
  • AWS PrivateLink
  • AWS QuickSight
  • AWS RDS
  • AWS Resource Access Manager
  • AWS Route 53
  • AWS S3
  • AWS SageMaker
  • AWS Secret Manager
  • AWS SNS
  • AWS SQS
  • AWS Step Functions
  • AWS Systems Manager
  • AWS Transit Gateway
  • Azure
  • Azure Active Directory
  • Azure App Service
  • Azure Bastion
  • Azure Blob Storage
  • Azure Cognitive Services
  • Azure Cosmos DB
  • Azure DevOps
  • Azure Functions
  • Azure Kubernetes Service
  • Azure Logic Apps
  • Azure Machine Learning
  • Azure Monitor
  • Azure Search
  • Azure SQL Database
  • Azure Synapse Analytics
  • Azure Virtual Machines
  • C#
  • Cassandra
  • Citric
  • CocoaPods
  • Couchbase
  • Cucumber
  • Cypress
  • Dart
  • Deno
  • Django
  • Docker
  • ElasticSearch
  • Elixir
  • FastAPI
  • Firebase
  • Flask
  • Flink
  • Go
  • Google BigQuery
  • Google Cloud Functions
  • Google Cloud Pub/Sub
  • Google Cloud Run
  • Google Cloud SQL
  • Google Cloud Storage
  • Google Kubernetes Engine
  • Gradle
  • GraphQL
  • Hadoop
  • IBM Cloud Functions
  • IBM Db2
  • Jaeger
  • Java
  • JavaScript
  • Jenkins
  • Junit
  • Kakfa
  • Kotlin
  • Kubernetes
  • Maven
  • Microfrontend
  • MongoDB
  • MySql
  • NestJs
  • .NET
  • NextJS
  • Node
  • npm
  • Observability
  • OCI
  • OpenAPI
  • OpenTelemetry
  • Oracle
  • Oracle APEX
  • Oracle Autonomous Database
  • Oracle Cloud Infrastructure
  • Oracle Database
  • Oracle GoldenGate
  • Oracle Identity Cloud
  • Parquet
  • PHP
  • PostgreSql
  • Prometheus
  • Puppet
  • Python
  • Queue
  • RabbitMQ
  • React
  • Redis
  • Rest
  • Rest Assured
  • Robot Framework
  • Ruby
  • Ruby on Rails
  • Rust
  • SAP HANA
  • Scala
  • Secrets
  • Serenity BDD
  • Splunk
  • Springboot
  • SQLite
  • Svelte
  • Swift
  • Tauri
  • Terraform
  • Typescript
  • Vercel
  • Vue.js
  • Web

Próximos passos