Definir e implementar a melhor forma de subir projetos Node.js, que seguem a estrutura de monorepo, na esteira de automação do Openshift
Automatizar a atualização das aplicações Node.js que seguem o padrão monorepo, evitando possíveis erros humanos. Além de diminuir, significativamente, o tempo para atualizar as aplicações que seguem esse padrão. É esperado que os projetos Node.js, ****no padrão monorepo, possam ser atualizados utilizando a esteira de automação do Openshift. Para a execução dos projetos na esteira de automação, é necessário configurar um Dockerfile. Para atender a necessidade dos projetos, criaremos na raiz do projeto o arquivo Dockerfile, com o seguinte conteúdo: Além do Dockerfile, também será necessário realizar as configurações relativas ao GitLab. Para isso iremos criar o arquivo .gitlab-ci.yml na raiz do projeto, e configurar conforme abaixo. Para cada projeto do monorepo, um novo job deverá ser adicionado com configurações específicas de cada projeto. Os jobs terão a seguinte estrutura: Exemplo de um .gitlab-ci.yml com todas as configurações necessárias: Após isso, sempre que houver alterações nas branches development, staging e production, os projetos dentro do monorepo que sofreram alguma alteração que afete o funcionamento da aplicação serão atualizados. A partir do estudo realizado foi possível identificar e implementar a melhor forma de se configurar projetos Node.js, que seguem o padrão monorepo, na esteira de automação do Openshift. [1] Product Direction - Monorepos. Disponível em: https://about.gitlab.com/direction/monorepos. Data:
Data de elaboração
16/01/2022
Autores:
Responsável pelo estudo
1.Objetivo
Equipe do estudo
Esquadrão Suicida
Alvo
Serviços E-estado / Automação no Openshift
Origem
Objetivo
Definir a configuração mais adequada para que seja possível executar na esteira de automação do Openshift os projetos Node.js que seguem o padrão monorepo.
Documentação correlata (opcional)
https://about.gitlab.com/direction/monorepos
https://docs.gitlab.com/ee/ci/pipelines/parent_child_pipelines.html
https://docs.gitlab.com/ee/ci/yaml
https://how-to.dev/how-to-set-up-monorepo-build-in-gitlab-ci
https://docs.docker.com/engine/reference/builder
Observações
Não possui.
2.1. Introdução3.2. Desenvolvimento.job-common:
stage: deploy
only:
refs:
- development
- staging
- production
trigger:
include:
- project: ci-cd/templates
ref: production
file:
- "deploy.openshift.yml"
- "variables.yml"
strategy: depend
stages:
- deploy
variables:
PROJECT_DISPLAY_NAME: "${PROJECT_NAME}"
DOCKERFILE_PATH: "Dockerfile"
DOCKERFILE_CONTEXT: "/"
ROUTER_PORT: "3000"
ROUTER_TERMINATION: "edge"
DEPLOY_ENVIRONMENT: >
"TZ=America/Porto_Velho"
BUILD_ENVIRONMENT_FILE: "packages/${APP_PATH}/.env.${CI_COMMIT_REF_NAME}"
nome-job:
extends: .job-common
only:
changes:
- "packages/caminho/relativo/**/*"
- "packages/common/**/*"
- ".gitlab-ci.yml"
- "Dockerfile"
- "package.json"
- "yarn.lock"
variables:
APP_PATH: caminho/relativo
PROJECT_NAME: nome-projeto
.job-common:
stage: deploy
only:
refs:
- development
- staging
- production
trigger:
include:
- project: ci-cd/templates
ref: production
file:
- "deploy.openshift.yml"
- "variables.yml"
strategy: depend
stages:
- deploy
variables:
PROJECT_DISPLAY_NAME: "${PROJECT_NAME}"
DOCKERFILE_PATH: "Dockerfile"
DOCKERFILE_CONTEXT: "/"
ROUTER_PORT: "3000"
ROUTER_TERMINATION: "edge"
DEPLOY_ENVIRONMENT: >
"TZ=America/Porto_Velho"
BUILD_ENVIRONMENT_FILE: "packages/${APP_PATH}/.env.${CI_COMMIT_REF_NAME}"
almoxarifado-estoque:
extends: .job-common
only:
changes:
- "packages/almoxarifado/estoque/**/*"
- "packages/common/**/*"
- ".gitlab-ci.yml"
- "Dockerfile"
- "package.json"
- "yarn.lock"
variables:
APP_PATH: almoxarifado/estoque
PROJECT_NAME: eestado-almoxarifado-estoque
4.3. Conclusão5.4. Referências
[2] Parent-child pipelines. Disponível em: https://docs.gitlab.com/ee/ci/pipelines/parent_child_pipelines.html.
[3] Keyword reference for the .gitlab-ci.yml file. Disponível em: https://docs.gitlab.com/ee/ci/yaml.
[4] How to set up monorepo build in GitLab CI. Disponível em: https://how-to.dev/how-to-set-up-monorepo-build-in-gitlab-ci.
[5] Dockerfile reference. Disponível em: https://docs.docker.com/engine/reference/builder.