plugin.yaml
Exemplo de um plugin.yaml
- v1 (descontinuado)
- v2
- v3 (atual)
schema-version: v1 #optional #warning
kind: plugin #required
metadata: #required
name: lambda-new-endpoint #required
description: Add new endpoint to an existing Lambda API. #required
display-name: Endpoint para Lambda #required
version: 1.0.0 #required
picture: plugin.png #optional
spec: #required
type: app #required #accpeted values: app or infra
compatibility: #optional
- python
about: docs/about.md #optional #warning
usage: docs/usage.md #optional #warning
implementation: docs/implementation.md #optional #warning
requirements: docs/requirements.md #optional #warning
repository: https://github.com/stack-spot/environments-runtime-stack #optional
technologies: #optional
- Api
schema-version: v2 #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
picture: plugin.png #optional
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
connections:
- type: ecs-task-conn
alias: ecs-task-creator-placeholder
- type: ec2-alb-conn
alias: ec2-alb-creator-placeholder
- type: ec2-alb-conn
alias: ec2-alb
generates: #it only exists if the plugin is type: infra
connections:
- type: aws-iam-role-conn
alias: rds-access-iam-role
outputs:
- from: rds-access-iam-role-arn
to: arn
- type: aws-iam-role-conn
alias: sqs-access-iam-role
outputs:
- from: sqs-access-iam-role-arn
to: arn
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/ #dinamic links use JINJA expressions
type: dynamic #dinamic 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 #acceepted values: true or false
inputs: #optional
- label: Input label
name: Input name
type: text
required: true
default: Input default value
pattern: '([A-Z][a-z]+)+'
help: 'Insert any text'
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
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
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
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