diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 0000000..c654aec --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,51 @@ +--- +name: Bug Report +about: Declaração de erros ou bugs envolvendo a biblioteca +title: "[BUG]" +labels: bug +assignees: ThiagoPanini + +--- + +✍️ **_Descrição do problema:_** + +ToDo: proporcione uma visão clara do bug a ser reportado. Adicionalmente, insira blocos de código capazes de facilitar na identificação e reprodução do problema. + +```python +# Insira seu código aqui +``` +___ + +🐞 **_Reproduzindo o problema:_** + +Para reproduzir o bug, siga os passos abaixo (exemplo): + +1. [ ] Importar o módulo ```package.module``` +2. [ ] Executar a função ```function()``` +3. [ ] Incluir os parâmetros ```(param_a='a', param_b='b')``` +4. [ ] Verificar os erros ```Exception e``` +___ + +⚙️ **_Comportamento esperado:_** + +ToDo: descreva o comportamento esperado pela função. + +___ + +🌎 **_Informações adicionais:_** + +ToDo: se aplicável, forneça detalhes adicionais sobre o ambiente utilizado (por exemplo, o sistema operacional, versão da linguagem de programa, versão da biblioteca, entre outras). + +___ + +📷 **_Screenshots:_** [OPCIONAL] + +ToDo: se aplicável, forneça algumas capturas de tela para ajudar no entendimento do bug/problema + +___ + +💬 **_Possíveis soluções:_** [OPCIONAL] + +Provavelmente soluções para o problema poderiam ser testadas através dos caminhos: +- Tentativa A +- Tentativa B diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md new file mode 100644 index 0000000..367b409 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation.md @@ -0,0 +1,16 @@ +--- +name: Documentação +about: Aprimoramento de Documentação +title: "[DOC]" +labels: documentation +assignees: ThiagoPanini + +--- + +📚 **_Aprimoramentos necessários:_** + +ToDo: Liste aqui seções, módulos, classes ou funções que precisam melhorar, corrigir ou até mesmo incluir documentações: + +- Seção X +- Módulo Y +- Método Z da Classe W \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000..657730d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,42 @@ +--- +name: Feature Request +about: Requisição de novas funcionalidades +title: "[FEATURE]" +labels: feature +assignees: ThiagoPanini + +--- + +🚀 **_Funcionalidade requerida:_** + +ToDo: forneça detalhes sobre as funcionalidades requeridas. + +___ + +🏆 **_Benefícios da nova funcionalidade:_** + +Possíveis benefícios atrelados à nova funcionalidade +* Aprimoramento... +* Melhoria... +* Garantia de que... +* Aumento... +* ... + +___ + +🧙‍♂️ **_Complexidade:_** + +- [ ] Extrema +- [ ] Alta +- [ ] Média +- [ ] Baixa + +___ + +💡 **_Ideias de desenvolvimento:_** [OPCIONAL] + +Alguns caminhos promissores para o desenvolvimento desta nova funcionalidade seriam: + +- Procurar por... +- Aplicar... +- Tentar... diff --git a/.github/ISSUE_TEMPLATE/help-needed.md b/.github/ISSUE_TEMPLATE/help-needed.md new file mode 100644 index 0000000..7e86744 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/help-needed.md @@ -0,0 +1,21 @@ +--- +name: Help +about: Ajuda Necessária +title: "[HELP]" +labels: help wanted +assignees: '' + +--- + +⚠️ **_Pedido de ajuda:_** + +ToDo: descreva aqui o pedido de ajuda + +___ + +✅ **_Checklist útil antes da oficialização do pedido:_** + +- [ ] Eu já li a documentação do projeto +- [ ] Já levantei a possibilidade de conflitos de ambiente, como sistema operacional, versão do Python, versão da biblioteca, entre outros +- [ ] Já consumi as demonstrações das funcionalidades existentes na documentação +- [ ] Já procurei por issues similares no repositório do projeto diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..5524f73 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,28 @@ +📑 **_Detalhes do Pull Request:_** + +ToDo: forneça uma breve descrição sobre o PR aberto e garanta que os demais usuários interessados possam entender facilmente as alterações propostas. + +___ + +🔨 **_Atividades/features contempladas:_** + +- Atividade A +- Melhoria B +- ... + +___ + +🔗 **_Issues vinculadas_** + +Este PR eventualmente está atrelado às seguintes *issues*: + +- [ ] Nenhuma *issue vinculada* +- [ ] # + +___ + +✅ **_Checklist:_** + +- [ ] As novas parcelas de código seguiram as boas práticas de desenvolvimento +- [ ] Novas funcionalidades foram testadas adequadamente +- [ ] Espera-se que as novas funcionalidades não comprometam a solução como um todo \ No newline at end of file diff --git a/.github/workflows/ci-feature.yml b/.github/workflows/ci-feature.yml new file mode 100644 index 0000000..208e1e0 --- /dev/null +++ b/.github/workflows/ci-feature.yml @@ -0,0 +1,58 @@ +name: "⚙️ CI Feature Branch" + +on: + push: + branches: + - feature** + - '[0-9].[0-9].x' + - 'v[0-9].[0-9].[0-9]' + - 'v[0-9].[0-9].x' + - docs** + +permissions: + id-token: write + contents: write + pull-requests: write + +jobs: + ci-terraform-dynamodb-table: + name: 🛠️ ci-terraform-dynamodb-table + runs-on: ubuntu-latest + + steps: + - name: 🔄 Checkout + uses: actions/checkout@v4 + + - name: ⛏️ Terraform Setup + uses: hashicorp/setup-terraform@v2 + with: + terraform_version: 1.10.5 + + - name: 🍃 Terraform Init + run: terraform init + working-directory: aws/dynamodb-table + + - name: ✅ Terraform Validate + run: terraform validate + working-directory: aws/dynamodb-table + + open-pr-to-main: + name: 🔓 open-pr-to-main + runs-on: ubuntu-latest + needs: + - ci-terraform-dynamodb-table + + steps: + - name: 🔄 Checkout + uses: actions/checkout@v4 + + - name: 🔓 PR to main + uses: peter-evans/create-pull-request@v7 + with: + base: main + branch: ${{ github.ref }} + title: "pr(main): ${{ github.ref }} -> main" + body-path: ".github/pull_request_template.md" + labels: "github-bot 🤖" + commit-message: "bot: abertura automática de PR para branch main" + diff --git a/.github/workflows/ci-tf-module-releaser.yml b/.github/workflows/ci-tf-module-releaser.yml new file mode 100644 index 0000000..3e9c1e5 --- /dev/null +++ b/.github/workflows/ci-tf-module-releaser.yml @@ -0,0 +1,52 @@ +name: "🚀 CI Terraform Module Releaser" + +on: + pull_request: + types: [opened, reopened, synchronize, closed] # Closed required + branches: + - main + +permissions: + contents: write # Required for to push tags, create release, and push changes to the wiki + pull-requests: write # Required to comment on pull request + +jobs: + ci-terraform-dynamodb-table: + name: 🛠️ ci-terraform-dynamodb-table + runs-on: ubuntu-latest + + steps: + - name: 🔄 Checkout + uses: actions/checkout@v4 + + - name: ⛏️ Terraform Setup + uses: hashicorp/setup-terraform@v2 + with: + terraform_version: 1.10.5 + + - name: 🍃 Terraform Init + run: terraform init + working-directory: aws/dynamodb-table + + - name: ✅ Terraform Validate + run: terraform validate + working-directory: aws/dynamodb-table + + release: + name: 🚀 terraform-module-releaser + runs-on: ubuntu-latest + needs: + - ci-terraform-dynamodb-table + + steps: + - name: 🔄 Checkout + uses: actions/checkout@v4 + + - name: 🚀 Terraform Module Releaser + uses: techpivot/terraform-module-releaser@v1.4.1 + with: + default-first-tag: v0.0.1 + major-keywords: major change,breaking change + minor-keywords: feat,feature + patch-keywords: fix,hotfix,chore,docs,config,ci + terraform-docs-version: v0.19.0 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 21e6d3c..eff3570 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Local .terraform directories **/.terraform/* +**.terraform.** # .tfstate files *.tfstate diff --git a/aws/dynamodb-table/data.tf b/aws/dynamodb-table/data.tf new file mode 100644 index 0000000..34a2406 --- /dev/null +++ b/aws/dynamodb-table/data.tf @@ -0,0 +1,11 @@ +/* -------------------------------------------------------- +ARQUIVO: data.tf + +Arquivo criado para centralizar todas as definições de +data sources do Terraform definidos para facilitar a +declaração e configuração de recursos ao longo do módulo +-------------------------------------------------------- */ + +# Definindo data sources para coleta de ID da conta e nome da regiao +data "aws_caller_identity" "current" {} +data "aws_region" "current" {} diff --git a/aws/dynamodb-table/locals.tf b/aws/dynamodb-table/locals.tf new file mode 100644 index 0000000..63d33dd --- /dev/null +++ b/aws/dynamodb-table/locals.tf @@ -0,0 +1,15 @@ +/* -------------------------------------------------------- +ARQUIVO: locals.tf + +Arquivo responsável por declarar variáveis/valores locais +capazes de auxiliar na obtenção de informações dinâmicas +utilizadas durante a implantação do projeto, como por +exemplo, o ID da conta alvo de implantação ou o nome da +região. +-------------------------------------------------------- */ + +locals { + # Extraindo ID da conta e nome da região + account_id = data.aws_caller_identity.current.account_id + region_name = data.aws_region.current.name +} diff --git a/aws/dynamodb-table/main.tf b/aws/dynamodb-table/main.tf new file mode 100644 index 0000000..ae00a88 --- /dev/null +++ b/aws/dynamodb-table/main.tf @@ -0,0 +1,12 @@ +/* -------------------------------------------------------- +ARQUIVO: main.tf @ aws/dynamodb-table module + +Definição e aplicação de regras necessárias para criação +e implantação de uma tabela pré configurada no DynamoDB. +-------------------------------------------------------- */ + +resource "aws_dynamodb_table" "this" { + name = var.name + billing_mode = var.billing_mode + +} diff --git a/aws/dynamodb-table/variables.tf b/aws/dynamodb-table/variables.tf new file mode 100644 index 0000000..6c11721 --- /dev/null +++ b/aws/dynamodb-table/variables.tf @@ -0,0 +1,23 @@ +/* -------------------------------------------------------- +ARQUIVO: variables.tf @ get-active-tickers module + +Variáveis utilizadas no módulo aws/dynamodb-table para +definição e criação de tabelas no DynamoDB +-------------------------------------------------------- */ + +variable "name" { + description = "[REQUIRED] Nome da tabela a ser criada no DynamoDB" + type = string +} + + +variable "billing_mode" { + description = "Tipo de cobrança associada ao consumo dos itens da tabela criada" + type = string + default = "PAY_PER_REQUEST" + + validation { + condition = var.billing_mode == "PROVISIONED" || var.billing_mode == "PAY_PER_REQUEST" + error_message = "O valor da variável deve ser 'PROVISIONED' ou 'PAY_PER_REQUEST'." + } +} diff --git a/aws/dynamodb-table/versions.tf b/aws/dynamodb-table/versions.tf new file mode 100644 index 0000000..8125104 --- /dev/null +++ b/aws/dynamodb-table/versions.tf @@ -0,0 +1,17 @@ +/* -------------------------------------------------------- +ARQUIVO: versions.tf @ aws/dynamodb-table module + +Configuração de versão do Terraform e do provider utilizado +para implantação de recursos de infraestrutura do módulo. +-------------------------------------------------------- */ + +terraform { + required_version = ">= 1.4" + + required_providers { + aws = { + source = "hashicorp/aws" + version = "~> 4.61" + } + } +}