template-js-cloudfunction-with-terraform
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 `` 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
e
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
- Google Cloud SDK
- Pacotes zip, unzip e curl
- Criar service Account com as permissões (Storage Object Admin, Cloud Functions Admin, BigQuery Admin e Service Account User)
- Variável GOOGLE_APPLICATION_CREDENTIALS
- Instalar o Terraform
- 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
- 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/.git
Para fazer deploy no GCP usando o Terraform, o utilize o shell script terraform_deploy
cd
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