Skip to main content

Carol App usando um template disponível na Carol

Esta seção descreve como criar o Carol App usando o modelo disponível na Carol. Atualmente, você pode criar três tipos de aplicativos Carol:

  • Online Carol App
  • Batch Carol App
  • Web Carol App

As seções a seguir explicam detalhes sobre como criar esses aplicativos na Carol através do assistente fornecido pela Carol.

Primeiro passo para criar um aplicativo Carol

Esta seção demonstrará como iniciar o assistente para criar um dos três possíveis aplicativos Carol, conforme já descrito na seção anterior.

Por favor, execute o seguinte comando:

Shell
bash -c "$(curl -fsSL https://raw.github.com/totvslabs/carolapp/master/install.sh)"

Como resultado, a seguinte informação é mostrada ao usuário:

Shell
____                _    _
/ ___|__ _ _ __ ___ | | / \ _ __ _ __
| | / _` | '__/ _ \| | / _ \ | '_ \| '_ \
| |__| (_| | | | (_) | |/ ___ \| |_) | |_) |
\____\__,_|_| \___/|_/_/ \_\ .__/| .__/
|_| |_|

This script will help you create your new Carol App.
Just select which type of Carol App you want to create and answer the questions the script will ask about your new app.

? Which Carol App do you want to create? (Use arrow keys)
❯ Online App
Batch App
Web App

O principal objetivo do usuário é escolher o tipo de aplicativo Carol que ele deseja, seguindo a explicação no capítulo Introdução.

Dependendo da seleção do usuário, o processo orientará o usuário a criar um dos três aplicativos Carol disponíveis. Você precisa usar as setas para alterar sua seleção.

Dependendo do tipo de aplicativo Carol, você precisa seguir a documentação específica.

Repositórios de Exemplos

Estamos mantendo um repositório com alguns Carol App como exemplo. A estrutura segue exatamente a mesma apresentada nesta documentação.

https://github.com/totvslabs/carolapp-samples

Online App

Esta seção descreve como criar um Online Carol App a partir do modelo da Carol.

Para iniciar o processo de criação de um Carol App, você precisa executar o seguinte comando:

Shell
bash -c "$(curl -fsSL https://raw.github.com/totvslabs/carolapp/master/install.sh)"

Depois de optar por criar um Online Carol App, a seguinte pergunta pode aparecer caso essa não seja a primeira vez que você executa esse processo:

Carol App Online Step 1

Você pode pressionar enter, enviando yes, para que esse processo faça o download dos arquivos novamente para garantir que você esteja executando os modelos mais atualizados.

Depois disso, todo o processo fará as seguintes perguntas:

PowerShell
full_name [Totvs Labs]: Robson Poffo

email [info@totvslabs.com]: robson.poffo@totvs.com

github_username [totvslabs]:

project_name [Carol App Boilerplate]: First Online App

project_slug [first_online_app]:

project_short_description [Carol App Boilerplate contains all the boilerplate you need to create a Carol App.]: This is the description related to my project. Used inside the manifest file.

version [0.1.0]:

sonarqube [True]:

carol_app_organization [my_organization]: poffo

carol_app_tenant [my_tenant]: poffo

algorithm_name [alg_first_online_app]: server

algorithm_description_en_US [Algorithm Description]: Process responsible to make available all services for my first online carol app.

algorithm_description_pt_BR [Descrição do Algoritmo]: Processo responsavel em tornar disponivel todos os serviços relacionados ao meu primeiro online carol app.

carol_app_docker_image [carol/first_online_app:0.1.0]:

pycarol_version [latest]:

Select carol_app_machine_types:
1 - c1.nano
2 - c1.micro
3 - c1.small
4 - c1.medium
5 - c1.large
6 - c1.xlarge
7 - c1.2xlarge
8 - g1.v100.large
9 - g1.v100.xlarge
Choose from 1, 2, 3, 4, 5, 6, 7, 8, 9 (1, 2, 3, 4, 5, 6, 7, 8, 9) [1]: 1

First Online App created successfully.

✔ Your new Carol App was successfull created. Check Carol App documentation to learn more.

Esta é uma breve descrição para cada parâmetro solicitado:

ParâmetroDescrição
full_nameO usuário que está criando este aplicativo. Esta informação é usada para fins internos.
emailO usuário que está criando este aplicativo. Esta informação é usada para fins internos.
github_usernameO usuário que está criando este aplicativo. Esta informação é usada para fins internos.
project_nameO nome do projeto é usado para identificar o projeto e atualizar o arquivo Readme.md.
project_slugO projeto Slug é usado para criar a pasta do seu projeto.
project_short_descriptionÉ usado para atualizar o arquivo Readme.md.
versionÉ usado para referência interna para este aplicativo e para atualizar o arquivo Readme.md.
sonarqubeCaso você o habilite, o processo preparará o projeto para executar o sonarqube
carol_app_organizationA organização da Carol onde este projeto será implantado.
carol_app_tenantCarol's tenant where this project will be deployed.
algorithm_nameO nome do algoritmo é o algoritmo usado no arquivo de manifesto. Para referência relacionada ao arquivo de manifesto, consulte o capítulo Manifest file nesta documentação para obter mais detalhes.
algorithm_description_en_USA descrição do algoritmo (US) é usada para compartilhar informações com o usuário na interface da Carol. Esta informação será atualizada no arquivo de manifesto. Consulte a seção Manifest file para mais informações sobre este arquivo.
algorithm_description_pt_BRA descrição do algoritmo (PT) é usada para compartilhar informações com o usuário na interface da Carol. Esta informação será atualizada no arquivo de manifesto. Consulte a seção Manifest file para mais informações sobre este arquivo.
carol_app_docker_imageA imagem do docker fornecida neste momento atualizará o Dockerfile para criar a imagem do Docker com o nome especificado e atualizar o arquivo de manifesto. Quando você executa esse aplicativo, ele procura o nome do Docker especificado aqui.
pycarol_versionVersão PyCarol refere-se à versão pyCarol que este aplicativo tem dependência. O arquivo requirements.txt será atualizado com essas informações.
carol_app_machine_typesEste é o tipo de instância para executar este aplicativo. Para verificar todos os tipos de instância possíveis, verifique a seção Tipos de instância de aplicativo Carol.

Depois de concluir o processo, você verá a seguinte mensagem de sucesso:

Carol App Online Step 2

Esta mensagem significa que está tudo bem. Você pode inserir a nova pasta criada (slug) e podemos começar a explorar as opções make disponíveis.

Os seguintes comandos estão disponíveis quando executamos o comando make.

Shell
$ make
first_online_app Makefile help.

all_tests Runs all test related tasks
build_ci Build CI Docker Image
clean Cleans all temporary and preprocessed files
code_scan Execute a Code Qualiry scan and send the data to SonarQube server
coverage Create XML and HTML Test coverare report.
dev Install all development packages dependencies
dist Create the dist file to deploy on Carol
docker_image Build first_online_app-server Carol app docker image
docker_run Runs first_online_app-server Carol app docker image
docker_run_dev Runs first_online_app-server Carol app docker image in Development mode using local code
docs Compile all package documentation in HTML format
help Show this help message
htmlcov Opens the current test coverage report on the default browser
init Install all package dependencies
lint Lint all code for best practicies
run Runs the online app locally on http://localhost:5000
test Runs all project test suite, recording all test converage data
venv Create the virtualenv for this Carol App
Informações adicionais:

A imagem do docker fornecida por make cria a imagem localmente. Na seção Criando a imagem do Docker na Carol, explicaremos como criar a imagem do docker na plataforma, disponibilizando a imagem do docker para qualquer aplicativo Carol executado no topo da plataforma Carol.

Construindo a imagem do Docker

Se você quiser testar sua imagem local em seu próprio registro do docker, poderá criar a imagem usando o comando make, marcar sua imagem para prepará-la para o envio e, depois, precisará enviá-la para seu registro. Estes são os comandos para executá-lo:

Primeiro, criamos a imagem (certifique-se de ter o docker instalado em sua máquina):

Shell
$ make docker_image

Este comando retornará algo semelhante:

Shell
.....
Successfully built e0102c0e1526
Successfully tagged first_online_app:latest

Em seguida, marcamos a imagem para prepará-la para envio ao registro do Docker (certifique-se de usar a tag certa):

Shell
docker tag first_online_app:0.1.0 robsonpoffo/first_online_app:0.1.0

A última etapa é enviá-lo para o seu próprio Docker Registry. Se você não possui, verifique as etapas aqui: https://docs.docker.com/registry/

Shell
docker push robsonpoffo/first_online_app:0.1.0

Este comando retornará algo semelhante:

Shell
The push refers to repository [docker.io/robsonpoffo/first_online_app-server]
3dee5a222cd4: Pushed
84430b4585a1: Pushed
95e360319baa: Pushed
348c3d784eca: Pushed
e5cf317c6146: Pushed
7d1b621fef71: Pushed
93a8b7ed8c52: Pushed
3f975a33acbf: Pushed
69168fb9b7b0: Pushed
31f78d833a92: Pushed
2ea751c0f96c: Pushed
7a435d49206f: Pushed
9674e3075904: Pushed
831b66a484dc: Pushed
latest: digest: sha256:2b6d8b6cd660d783544d4710a4532a965fcf1d52f92004618d9a11b4ec421d59 size: 3261

Atualizando a imagem do Docker no arquivo Manifest

Depois disso, você pode atualizar seu arquivo de manifesto e testar a Imagem do Docker dentro da Carol:

JSON
{
"online": {
"processes": [{
"algorithmDescription": {
"en-US": "Online Description",
"pt-BR": "Descrição do Online app"
},
"algorithmName": "online_app",
"algorithmTitle": {
"en-US": "Online Description",
"pt-BR": "Descrição do Online app"
},
"instanceProperties": {
"profile": "",
"properties": {
"instanceType": "c1.micro",
"dockerImage": "online_app",
"autoscale": {
"enabled": true,
"minReplicas": 1,
"maxReplicas": 4
},
"healthcheck": {
"path": "/healthy"
},
"port": 8080,
"preemptible": true
}
},
"name": "online_carolapp"
}]
},
}

Caso você queira obter mais informações sobre os parâmetros acima Veja a seção compreendendo o arquivo de manifesto.

Informações adicionais

O Online Carol App suporta apenas um item em "processos". Caso você queira obter mais informações, Veja a seção manifesto de carol app.

O dockerImage foi alterado para obter a imagem de um registro do docker externo. Para obter a imagem do docker do registro da Carol, você precisa criar a imagem do docker na Carol.

O parâmetro healthcheck se faz necessário no manifesto, para que a aplicação possar ser monitorada.

Implantando o Online Carol App na Carol

Depois disso, na Carol:

  • Faça o upload do arquivo de manifesto:

Carol App Online Step 3

  • Execute a tarefa:

Carol App Online Step 4

  • Veja a nova URL disponível:

Carol App Online Step 5

Batch App

Esta seção descreve como criar um aplicativo de Lote na Carol a partir do modelo da Carol.

Para iniciar o processo de criação de um Carol App, você precisa executar o seguinte comando:

Shell
bash -c "$(curl -fsSL https://raw.github.com/totvslabs/carolapp/master/install.sh)"

Depois de optar por criar um aplicativo Batch Carol, a seguinte pergunta pode aparecer caso essa não seja a primeira vez que você executa esse processo:

Carol App Batch Step 1

Você pode pressionar enter, enviando yes, para que esse processo faça o download dos arquivos novamente para garantir que você esteja executando os modelos mais atualizados.

Depois disso, todo o processo fará as seguintes perguntas:

Shell
full_name [Totvs Labs]: Robson Poffo

email [info@totvslabs.com]: robson.poffo@totvs.com

github_username [totvslabs]:

project_name [Carol App Batch Boilerplate]: First Batch App

project_slug [first_batch_app]:

project_short_description [Carol App Batch Boilerplate contains all the boilerplate you need to create a Carol App.]: This is the description related to my project. Used inside the manifest file.

version [0.1.0]:

sonarqube [True]:

carol_app_organization [my_organization]: poffo

carol_app_tenant [my_tenant]: poffo

algorithm_name [first_batch_app_algorithm]: process_data

algorithm_description_en_US [Batch task Description]: Process responsible to read data from Carol, run the processing it is responsible for and send the final result back to Carol.

algorithm_description_pt_BR [Descrição do Tarefa Batch]: Processo responsavel por ler os dados da Carol, executar os procedimentos no qual ele se propos a fazer e enviar o resultado final para Carol.

luigi_workers [4]:

carol_app_docker_image [carol/first_batch_app:0.1.0]:

pycarol_version [latest]:

Select carol_app_machine_types:
1 - c1.nano
2 - c1.micro
3 - c1.small
4 - c1.medium
5 - c1.large
6 - c1.xlarge
7 - c1.2xlarge
8 - g1.v100.large
9 - g1.v100.xlarge
Choose from 1, 2, 3, 4, 5, 6, 7, 8, 9 (1, 2, 3, 4, 5, 6, 7, 8, 9) [1]: 1
First Batch App created successfully.

✔ Your new Carol App was successfull created. Check Carol App documentation to learn more.

Esta é uma breve descrição para cada parâmetro solicitado:

ParâmetroDescrição
full_nameO usuário que está criando este aplicativo. Esta informação é usada para fins internos.
emailO usuário que está criando este aplicativo. Esta informação é usada para fins internos.
github_usernameO usuário que está criando este aplicativo. Esta informação é usada para fins internos.
project_nameO nome do projeto é usado para identificar o projeto e atualizar o arquivo Readme.md.
project_slugO projeto Slug é usado para criar a pasta do seu projeto.
project_short_descriptionÉ usado para atualizar o arquivo Readme.md.
versionÉ usado para referência interna para este aplicativo e para atualizar o arquivo Readme.md.
sonarqubeCaso você o habilite, o processo preparará o projeto para executar o sonarqube
carol_app_organizationA organização da Carol onde este projeto será implantado.
carol_app_tenantCarol's tenant where this project will be deployed.
algorithm_nameO nome do algoritmo é o algoritmo usado no arquivo de manifesto. Para referência relacionada ao arquivo de manifesto, consulte o capítulo Manifest file nesta documentação para obter mais detalhes.
algorithm_description_en_USA descrição do algoritmo (US) é usada para compartilhar informações com o usuário na interface da Carol. Esta informação será atualizada no arquivo de manifesto.
Consulte a seção Manifest file para mais informações sobre este arquivo.
algorithm_description_pt_BRA descrição do algoritmo (PT) é usada para compartilhar informações com o usuário na interface da Carol. Esta informação será atualizada no arquivo de manifesto.
Consulte a seção Manifest file para mais informações sobre este arquivo.
carol_app_docker_imageA imagem do docker fornecida neste momento atualizará o Dockerfile para criar a imagem do docker com o nome especificado e atualizar o arquivo de manifesto. Quando você executa esse aplicativo, ele procura o nome do docker especificado aqui.
pycarol_versionVersão PyCarol refere-se à versão pyCarol que este aplicativo tem dependência. O arquivo requirements.txt será atualizado com essas informações.
carol_app_machine_typesEste é o tipo de instância para executar este aplicativo. Para verificar todos os tipos de instância possíveis, verifique a seção Tipos de instância de aplicativo Carol.

Depois de concluir o processo, você verá a seguinte mensagem de sucesso:

Carol App Batch Step 2

Esta mensagem significa que está tudo bem. Você pode inserir a nova pasta criada (slug) e podemos começar a explorar as opções "make" disponíveis.

Os seguintes comandos estão disponíveis quando executamos o comando "make".

Shell
$ make
first_batch_app Makefile help.

all_tests Runs all test related tasks
build_ci Build CI Docker Image
clean Cleans all temporary and preprocessed files
code_scan Execute a Code Qualiry scan and send the data to SonarQube server
coverage Create XML and HTML Test coverare report.
dev Install all development packages dependencies
dist Create the dist file to deploy on Carol
docker_image Build the Carol App docker image
docs Compile all package documentation in HTML format
help Show this help message
htmlcov Opens the current test coverage report on the default browser
init Install all package dependencies
lint Lint all code for best practicies
run Runs the Batch process locally
test Runs all project test suite, recording all test converage data
venv Create the virtualenv for this Carol App
Informações adicionais

Batch Carol App pode ter vários processos. Durante o fluxo de criação, ele pede apenas um, mas a qualquer momento você pode acessar o arquivo manifest e adicionar mais processos, conforme necessário. A imagem do docker fornecida por make cria a imagem localmente. Na seção "Criando a imagem do Docker na Carol", explicaremos como criar a imagem do docker na plataforma, disponibilizando a imagem do docker para qualquer aplicativo Carol executado no topo da plataforma Carol.

Construindo a imagem do Docker

Se você quiser testar sua imagem local em seu próprio registro do docker, poderá criar a imagem usando o comando make, marcar sua imagem para prepará-la para o envio e, depois, precisará enviá-la para seu registro. Estes são os comandos para executá-lo:

Primeiro, construímos a imagem:

Shell
make docker_image
Shell
.....
Successfully built b0bf90002a7d
Successfully tagged first_batch_app-process_data:0.1.0
Shell
docker tag first_batch_app-process_data:0.1.0 robsonpoffo/first_batch_app-process_data:0.1.0

A última etapa é enviá-lo para o seu próprio Docker Registry. Se você não possui, verifique as etapas aqui: https://docs.docker.com/registry/

Shell
docker push robsonpoffo/first_batch_app-process_data:0.1.0

Este comando retornará algo semelhante:

Shell
The push refers to repository [docker.io/robsonpoffo/first_batch_app-process_data]
ddb9ffc5b1b9: Pushed
bbe6a88aa3cf: Pushed
f8be782735d6: Mounted from robsonpoffo/first_batch_app
165b81c874a8: Mounted from robsonpoffo/first_batch_app
e5cf317c6146: Mounted from robsonpoffo/first_online_app
7d1b621fef71: Mounted from robsonpoffo/first_online_app
93a8b7ed8c52: Mounted from robsonpoffo/first_online_app
3f975a33acbf: Mounted from robsonpoffo/first_online_app
69168fb9b7b0: Mounted from robsonpoffo/first_online_app
31f78d833a92: Mounted from robsonpoffo/first_online_app
2ea751c0f96c: Mounted from robsonpoffo/first_online_app
7a435d49206f: Mounted from robsonpoffo/first_online_app
9674e3075904: Mounted from robsonpoffo/first_online_app
831b66a484dc: Mounted from robsonpoffo/first_online_app
0.1.0: digest: sha256:e9b9d1d347ecb4c53b664595b1472c3005c43ce36855e90ce28db3382028fd32 size: 3261

Atualizando a imagem do Docker no arquivo Manifest

Depois disso, você pode atualizar seu arquivo de manifesto e testar a Imagem do Docker dentro da Carol:

JSON
{
"batch": {
"processes": [
{
"algorithmDescription": {
"en-US": "Process responsible to read data from Carol, run the processing it is responsible for and send the final result back to Carol.",
"pt-BR": "Processo responsavel por ler os dados da Carol, executar os procedimentos no qual ele se propos a fazer e enviar o resultado final para Carol.",
"pt-br": "Processo responsavel por ler os dados da Carol, executar os procedimentos no qual ele se propos a fazer e enviar o resultado final para Carol."
},
"algorithmName": "process_data",
"algorithmTitle": {
"en-US": "Process responsible to read data from Carol, run the processing it is responsible for and send the final result back to Carol.",
"pt-BR": "Processo responsavel por ler os dados da Carol, executar os procedimentos no qual ele se propos a fazer e enviar o resultado final para Carol."
},
"instanceProperties": {
"tenants": {
"EXAMPLE_ENV_1": "value_1",
"EXAMPLE_ENV_2": "value_2"
},
"keepInstance": "false",
"luigi": {
"workers": "4"
},
"profile": "",
"properties": {
"dockername": "first_batch_app-process_data"
}
},
"name": "first_batch_app"
}
]
}
}
Informações adicionais

Batch Carol App suporta quantos processos em "processos" que você precisa. Caso você queira obter mais informações, verifique a seção Manifest file.

O "dockerImage" foi alterado para obter a imagem de um registro do docker externo. Para obter a imagem do docker do registro da Carol, você precisa criar a imagem do docker na Carol.

Implantando o Batch Carol App na Carol

Depois disso, na Carol:

  • Faça o upload do arquivo de manifesto:

Carol App Batch Step 3

  • Execute a tarefa:

Carol App Batch Step 4

  • Veja que a tarefa foi executada com sucesso:

Carol App Batch Step 5

Web App

Esta seção descreve como criar um aplicativo Web Carol a partir do modelo da Carol.

Para iniciar o processo de criação de um Carol App, você precisa executar o seguinte comando:

Shell
bash -c "$(curl -fsSL https://raw.github.com/totvslabs/carolapp/master/install.sh)"

Após optar por criar um aplicativo Web Carol, a seguinte pergunta pode aparecer caso essa não seja a primeira vez que você executa esse processo:

Carol App Web Step 1

Você pode pressionar enter, enviando yes, para que esse processo faça o download dos arquivos novamente para garantir que você esteja executando o modelo mais atualizado.

Depois disso, o processo fará as seguintes perguntas:

Shell
user_full_name [TotvsLabs User]: Robson Poffo
user_email [info@totvslabs.com]: robson.poffo@totvs.com
github_username [totvslabs]:
project_name [Carol App Boilerplate]: First Web App
project_slug [first_web_app]:
project_short_description [Carol App Web Boilerplate contains all the boilerplate you need to create a Carol App.]: This is the description related to my project. Used inside the manifest file.
carol_app_organization [my_organization]: poffo
carol_app_tenant [my_tenant]: poffo
version [0.1.0]:
First Web App created successfully.

✔ Your new Carol App was successfull created. Check Carol App documentation to learn more.

Esta é uma breve descrição para cada parâmetro solicitado:

ParâmetroDescrição
user_full_nameO usuário que está criando este aplicativo. Esta informação é usada para fins internos.
user_emailO usuário que está criando este aplicativo. Esta informação é usada para fins internos.
github_usernameO usuário que está criando este aplicativo. Esta informação é usada para fins internos.
project_nameO nome do projeto é usado para identificar o projeto e atualizar o arquivo Readme.md.
project_slugO projeto Slug é usado para criar a pasta do seu projeto.
project_short_descriptionÉ usado para atualizar o arquivo Readme.md.
carol_app_organizationA organização da Carol onde este projeto será implantado.
carol_app_tenantCarol's tenant where this project will be deployed.
versionÉ usado para referência interna para este aplicativo e para atualizar o arquivo Readme.md.

Depois de concluir o processo, você verá a seguinte mensagem de sucesso:

Carol App Web Step 2

Esta mensagem significa que está tudo bem. Você pode inserir a nova pasta criada (slug) e podemos começar a explorar as opções make disponíveis.

Os seguintes comandos estão disponíveis quando executamos o comando make.

Shell
make
first_web_app Makefile help.

build Build Carol Web App
clean Clean this project
datamodels Updates all data models from your Carol Tenant (requires Carol User and Password)
help Show this help message
install Install all project dependencies
lint Check the project source code for good practicies
run Starts a dev webserver at http://localhost:3000/
test Test current project. Runs all unit and end to end tests

Construindo o Angular dist

O comando make install instala a CLI Angular e todas as dependências descritas em package.json.

Depois disso, você pode executar o comando make build, este comando executa o ng build --prod para gerar o dist.

Implantar o aplicativo Web Carol Na Carol

Depois disso, na Carol:

  • Faça o upload do arquivo zip da Web:

IMAGE

  • Acesse o URL.

IMAGE

Storage

Cuidado

Ao desenvolver um Carol App que gera um arquivo ao final do processo, é importante evitar adicionar espaços em branco ao nomear o arquivo, pois a URL é codificada traduzindo o caracter branco para %20, fazendo com que se refira a um arquivo que não existe. Portanto, recomenda-se utilizar um caracter válido em substituição ao espaço em branco, como um traço alto - ou baixo _.

Carol App Storage