1.0.0 • Published 2 years ago

abstract-ci-worker v1.0.0

Weekly downloads
-
License
UNLICENSED
Repository
-
Last release
2 years ago

Introdução

O Abstract CI Worker é um módulo Node.js que é responsável por fazer o build dos componentes visuais (widgets) e publicá-los nos repositórios de recursos compilados.

abstract-ci.png Nesta imagem, o Abstract CI Worker é o componente que fica entre o Source Code Repository e o Compiled Assets Repository

Instruções

Invocar via linha de comando:

node .\bin\cli.js --workdir /projects/thea-repos/workspaces/thea.core

onde: --workdir /projects/thea-repos/workspaces/thea.core é o local onde está o projeto com o código-fonte que deverá ser compilado e publicado

Compiled Assets Repository

O Compiled Assets Repository (referenciado neste documento como CAR) é o repositório onde os componentes compilados são primariamente publicados.

Este repositório, inicialmente seria um repositório GIT. Porém, por questões de segurança e complexidade, foi decidido que, na primeira versão ele será simplemente uma tabela em um banco postgresql. Um App será criado e disponibilizará uma API para que seja feito o upload dos componentes compilados.

O Abstract CI Worker tem o objetivo de pegar o código-fonte de um widget (ou lib front) compilar, gerando os assets de produção e de dev e, publicá-los no CAR. A publicação em ambientes de dev, tst, prod, store, etc. Será feita por outro Aplicativo que será desenvolvido no futuro. processo-ci.png


Detalhes do funcionamento:

Nesta seção será detalhado o funcionamento do abstract-ci

O abstract-ci funciona basicamente, compilando o código-fonte de um componente visual, comprimindo e subindo para o CAR.

Funcionamento geral

O seguinte diagrama descreve o funcionamento geral: abstract-ci.png


A seguir, a documentação detalhada do código:

Documentação do código-fonte

Importações

O código faz as seguintes importações de módulos Node.js:

const abstractCI = require("../index");
const utl = require("../lib/utils");
const package = require("../package.json");
const fs = require("fs");
const path = require("path");
global.stdout = require('../lib/STDOut').initialize({unformated:true});
const artifactPublisher = require('../lib/ArtifactPublisher');
  • abstractCI é um módulo que contém a implementação principal do Abstract CI Worker;
  • utl é um módulo com funções utilitárias;
  • package é um objeto JSON que contém informações sobre o pacote do Node.js em execução;
  • fs é um módulo que fornece uma API para interagir com o sistema de arquivos;
  • path é um módulo que fornece ferramentas para trabalhar com caminhos de arquivos e diretórios;
  • global.stdout é um objeto que contém a implementação da saída padrão usada pelo Abstract CI Worker;
  • artifactPublisher é um módulo que contém a implementação da publicação de artefatos do Abstract CI Worker.

Função exitWithError

A função exitWithError é uma função auxiliar que é usada para imprimir uma mensagem de erro na saída padrão e sair do processo com um código de erro (-1). A função recebe um objeto error como parâmetro, que contém informações sobre o erro.

Função openManifest

A função openManifest é uma função assíncrona que é responsável por abrir o arquivo de manifesto thea-compose.json e devolver o objeto JSON correspondente. A função recebe um parâmetro workDir que indica o diretório em que o arquivo de manifesto está localizado. Se o arquivo não for encontrado, a função rejeita a promessa com um objeto Error. Se o arquivo for encontrado, a função lê o arquivo e devolve o objeto JSON correspondente na promessa resolvida.

Função publishArtifacts

A função publishArtifacts é uma função assíncrona que é responsável por publicar os artefatos gerados pela execução do Abstract CI Worker em um determinado ambiente. A função recebe dois parâmetros: environment que indica o ambiente de destino e manifest que contém as informações do manifesto. A função verifica se as informações de publicação para o ambiente de destino estão definidas no manifesto. Se estiverem, a função inicia o processo de publicação de artefatos, caso contrário, a função rejeita a promessa com um objeto Error.

Função start

A função start é a função principal do módulo que é responsável por iniciar o processo de execução do Abstract CI Worker. A função imprime uma mensagem de informação com a versão do pacote na saída padrão. Em seguida, a função obtém o diretório de trabalho e o ambiente de destino a partir dos argumentos de linha de comando usando o módulo utl. A função chama a função openManifest para abrir o arquivo de manifesto thea-compose.json. Se a função openManifest for resolvida com sucesso, a função inicia a execução do Abstract CI Worker chamando a função abstractCI.getTaskRunner com os parâmetros taskRunner, que contém o nome do executor de tarefas definido no manifesto, e manifest, que contém as informações do manifesto. A função abstractCI.getTaskRunner retorna um objeto que implementa a interface TaskRunner, que é responsável por executar as tarefas definidas no manifesto. A função startTask é chamada no objeto TaskRunner para iniciar a execução das tarefas. Se a execução das tarefas for bem-sucedida, a função chama a função publishArtifacts para publicar os artefatos gerados. Se a publicação for bem-sucedida, a função chama a função process.exit para encerrar o processo com código de sucesso (0). Se ocorrer algum erro durante a execução do Abstract CI Worker, a função exitWithError é chamada para imprimir uma mensagem de erro na saída padrão e encerrar o processo com um código de erro (-1).

Função principal

A função principal start é chamada ao final do código para iniciar a execução do Abstract CI Worker.

1.0.0

2 years ago