Skip to content

DP6/template-js-cloudfunction-with-terraform

Repository files navigation

template-js-cloudfunction-with-terraform

semantic-release Code coverage Test Code quality

{{Texto introdutorio}}

Respositório template para CF utilizando

  • Deploy com terraform de (Arquivos para GCS, Tabelas BQ e CF)
  • Arquivo de configuração dinamico para CF
  • Testes unitários
  • Teste de integração
  • Formatação de código
  • Geração de documentação das funcões javascrip
  • Criação de release automatica
  • Cobertura de código
  • Analise de qualidade de código
  • Github pages com template do github.dp6.io

Preparando o repositório

Crie seu projeto baseado nesse repositório.

(Passo a passo github)[https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/creating-a-repository-from-a-template]

Variáveis de ambiente no github (secrets)

Primeiro é necessário conectar o repositório do Github com o (coday.com)[https://app.codacy.com/organizations/gh/DP6/repositories] (referência para conexão)[https://docs.codacy.com/organizations/managing-repositories/#adding-a-repository].

Necessário criar a screte CODACY_PROJECT_TOKEN nas configurações do seu repositório no Github em Settings > Secret > New repository Secret

Renomeando os arquivos

  • Substituir o nome template-js-cloudfunction-with-terraform pelo nome do novo repositório criado no arquivo package.json
  • Substituir a chave {{nome_projeto}} no arquivo _config.yml com o nome do projeto em linguagem natural, para ser usado como titulo da página no site.
  • As variáveis do terraform e e arquivos de exemplo para criação das tabelas no BQ usa a vável project_name que pode ser alterado a critério do usuário.
  • No README.md as chaves {{token-codacy}} e {{repo}} localizada no cabecalho do documento dentro do comentário nas linhas 20-37 deve ser substituida pelo token do projeto no codacy.io e novo nome do repositório.

Entendendo o terraform

É recomendo a leitura da documentação oficial do (terraform para Google)[https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/getting_started]

Entendendo os running do NPM

  • unit-test: Realiza uma bateria de testes unitários dos arquivos de js presentes na pasta test/unit;
  • integration-test: Realiza uma bateria de testes de integração dos arquivos de js presentes na pasta test/integration;
  • all-test:Realiza uma bateria de todos os testes presentes na pasta test/;
  • test: alias para o comando all-test;
  • lint-md: Submete o código a markdown a uma avaliação do remark;
  • lint-prettier: Submete o código a uma avaliação utilizando o Prettier, de acordo com a configuração descrita no arquivo .prettierrc;,
  • lint: Alias para executar todos os lints;
  • format: Formata todo o código do projeto, utilizando o Prettier, de acordo com a configuração descrita no arquivo .prettierrc;
  • coverage: Análise da cobertura dos testes;
  • local: Executa a cloud function localmente utilizando o functions-frameworks;
  • coverage: "nyc --reporter=lcov --reporter=cobertura npm run unit-test",
  • docs: Gera a documentção do código fonte seguindo o padrão do jsdoc2md aplicado no arquivo index.js, a doc é armanezada em docs/index.md",

1. Requisitos para utilização

1.1 Produtos do GCP

  • BigQuery
  • Cloud Storage
  • Cloud Function
  • Service account

1.2 Dependências ambiente local

  1. Google Cloud SDK
  2. Pacotes zip, unzip e curl
  3. Criar service Account com as permissões (Storage Object Admin, Cloud Functions Admin, BigQuery Admin e Service Account User)
  4. Variável GOOGLE_APPLICATION_CREDENTIALS
  5. Instalar o Terraform
  6. Habilitar os produtos no GCP Cloud Function, BigQuery, Cloud Build API, Cloud Resource Manager API, BigQuery Data Transfer API e Cloud Storage, para uso do BigQuery é necessário ter um billing ativo
  7. Importante o usuário que executar o script do terraform precisa ter a permissão de owner no projeto do GCP.

Observação: Utilizando o ambiente no Google Cloud Shell não é necessário fazer os 1, 2, 4 e 5

2. Instalando

Clone o projeto do github para sua máquina local ou Cloud Shell

git clone https://github.com/DP6/{{repo}}.git

Para fazer deploy no GCP usando o Terraform, o utilize o shell script terraform_deploy

cd {{repo}}
sh terraform_deploy.sh

Como contribuir

Pull requests são bem-vindos! Nós vamos adorar ajuda para evoluir esse modulo. Sinta-se livre para navegar por issues abertas buscando por algo que possa fazer. Caso tenha uma nova feature ou bug, por favor abra uma nova issue para ser acompanhada pelo nosso time.

Requisitos obrigatórios

Só serão aceitas contribuições que estiverem seguindo os seguintes requisitos:

Api Docs

Suporte:

DP6 Koopa-troopa Team

e-mail: koopas@dp6.com.br