Uma ferramenta para a execução de códigos 4D no CLI

Na indústria do desenvolvimento, a CI/CD tornou-se uma prática padrão. Com cada modificação de código, são geradas ações automatizadas tais como testes, compilação, construção, lançamento e, por vezes, implementação para assegurar que o código é de alta qualidade e facilmente integrado no sistema existente.

Estas ações requerem uma ferramenta para executar o código necessário. Como programadores 4D, decidimos fornecer uma ferramenta gratuita que permite aos programadores executar ações elementares. Esta ferramenta chama-se ferramenta4d, e simplifica o processo de execução das ações necessárias dentro do ambiente 4D.

Neste artigo, vamos explorar as funcionalidades do tool4d e como pode ser utilizado para melhorar o seu processo de desenvolvimento.

Esta nova aplicação é principalmente dedicada a ser integrada em condutas CI/CD. O principal objetivo do tool4d é, portanto, executar o código 4D com um conjunto mínimo de instruções, uma pegada de memória mínima, e um tamanho mínimo. A aplicação do tool4d pode ser vista como um subconjunto da aplicação 4D.

Como é que funciona?

Primeiro, o tool4d é lançado como o 4D, pelo que partilham a mesma versão e o mesmo número de compilação.
Embora o tool4d seja exibido com o seu ícone, a aplicação só pode ser executada através da Interface de Linha de Comando.
A sua execução é sempre feita em modo headless. Para alimentar informação, pode usar o fluxo stdout, mesmo no Windows, como se segue:

LOG EVENT(Into system standard outputs; “message”)

A seguinte sequência de métodos é sempre executada:
1. tool4d executa o método On Startup database, exceto se o parâmetro –skip-onstartup estiver definido.
2. o tool4d executa o método designado pelo parâmetro –startup-method, se estiver definido.
3. tool4d executa o método On Exit database, exceto se o parâmetro –skip-onstartup estiver definido.
4. o tool4d sai.

Para tornar o tool4d o mais leve possível, muitos elementos do 4D foram desativados, tais como o servidor de aplicação, servidor Web, servidor SQL, programador de backup, e assim por diante.
E por último, mas não menos importante, o tool4d não necessita de qualquer licença para ser executado.
Pode encontrar mais detalhes na documentação.

Como obtê-lo?

As aplicações do tool4d estão disponíveis no portal de Download de Produtos para três alvos do sistema: Windows, MacOS Intel, e MacOS Silicon.
Como o tool4d é gratuito e pode ser utilizado em condutas CI/CD, pode obtê-lo sem autenticação sob o https://resources-downloads.4d.com com a cadeia de consulta exata para Downloads de Produtos.
Por exemplo, as últimas versões v20 LTS podem ser descarregadas diretamente com estes links:

https://resources-download.4d.com/release/20.x/20.0/latest/mac/tool4d_v20.0_mac_arm.tar.xz
https://resources-download.4d.com/release/20.x/20.0/latest/mac/tool4d_v20.0_mac_x86.tar.xz
https://resources-download.4d.com/release/20.x/20.0/latest/win/tool4d_v20.0_win.tar.xz

Os pacotes são comprimidos com o algoritmo tar.xz, garantindo um tamanho de arquivo mínimo. Se nenhuma aplicação compatível com este formato estiver instalada no seu sistema, pode descomprimir o pacote usando as seguintes linhas de comando.

Windows:
tar xvzf {tool4dCompressedFile} -C {destinoFolder}

macOS:
tar xvzf {tool4dCompressedFile}

UseCases

Há muitos casos de utilização de ferramentas4d. Aqui estão alguns deles, mas deixamos-lhe imaginar muitos outros casos de utilização!

Compilação

tool4d é muito adequado para tarefas de construção, tais como testes unitários ou compilações. Aqui está um exemplo de um pequeno projeto denominado compilaçãoThisProject compilando outro projeto.
O projeto compileThisProject obtém um caminho de arquivo de projeto, compila-o, e depois exibe o resultado da compilação no terminal. O seu método de base de dados “On Startup” contém este código:

LOG EVENT(Into system standard outputs; "Compilation starts\r\n")
var $projectPath : Text
var $result : Integer
var $compilationReturn : Object

// Obter o valor string do parametro --user-param em CLI
$result:=Get database parameter(User param value; $projectPath)
If ($projectPath#"")
	$compilationReturn:=Compile project(File($projectPath))
	LOG EVENT(Into system standard outputs; "Compilation returns:\r\n"+JSON Stringify($compilationReturn; *))
End if 

A linha de comando a executar:

/Applications/tool4d.app/Contents/MacOS/tool4d --project "/Users/Me/compileThisProject/Project/compileThisProject.4DProject" --user-param "/Users/Me/Test/Project/Test.4DProject".

E aqui está o resultado:

A compilação começa
A compilação regressa:
{
"sucesso": true,
"erros"
:[
}
}

Integração contínua

A compilação é uma etapa nos CI/CD. Qualquer que seja a sua plataforma CI/CD, pode utilizar a ferramenta4d para cada etapa!
Já falámos sobre ações GitHub neste post do blogue. É uma plataforma GitHub que lhe permite executar automaticamente ações em eventos GitHub como empurrar código ou fundir um pedido de puxar. E estas ações podem ser executadas em máquinas virtuais MacOS ou Windows.
Aqui está uma amostra de um script YAML para ações GitHub que executam testes unitários em cada carregamento de código no GitHub:

nome: Testes unitários
em:
push:
ramificações: [
jobs:
Unit-tests-on-windows:
nome: Unit Tests on Windows
runs-on: windows-latest
permissões: write-all
passos:
- utilizações: actions/checkout@v3
- nome: "Download latest tool4d release and expand"
runs-on: |
curl
-o tool4d.tar.xz -sL  tar xvJf tool4d.tar.xz -C tool4d
- nome: "Run Unit Tests" run: |
./tool4d/tool4d.exe --project ${{{ github.workspace }}\Project\myProject.4DProject --dataless --skip-onstartup -- startup-method "runUnitTests"
Unit-tests-on-macos:
nome: Testes unitários em macOS
necessidades: [Unit-tests-on-windows]
runs-on: macOS-latest
permissões: escrever-tudo
passos:
- utilizações: actions/checkout@v3
- nome: "Download latest tool4d release and expand"
run: |
curl -o tool4d.tar.xz -sL  tar xvzf tool4d.tar.xz
- nome: "Run Project Unit Tests"
run: |
./tool4d.app/Contents/MacOS/tool4d --project ${{{ github.workspace }}/Project/myProject.4DProject --dataless --skip-onstartup -- startup-method "runUnitTests"

Note que a ferramenta4d não precisa de licença para funcionar, por isso não há necessidade de registar nada nas máquinas virtuais!

Manutenção

Também pode utilizar a ferramenta4d para tarefas de manutenção. Por exemplo, se quiser verificar um arquivo de dados do Servidor 4D e assegurar que nenhum usuário se liga ao servidor. Note que para esta utilização, também pode utilizar a aplicação Servidor 4D com o parâmetro “–utility”: executará a mesma sequência de métodos que o tool4d.

Linha de comando para o fazer:
/Applications/4D/4D\ Server.app/Contents/MacOS/4D\ Server --utility --project "{pathToProjectFile}" --skip-onstartup -- startup-method "verifyDataFile".

O método verifyDataFile contém uma chamada para o comando VERIFY CURRENT DATA FILE.

 

Espero que essa ferramenta4d o ajude na sua concepção de condutas CI/CD e outras tarefas!

Esforçamo-nos constantemente por proporcionar aos nossos utilizadores a melhor experiência possível, e encorajamo-lo a partilhar as suas ideias e feedback no fórum 4D. O seu feedback ajuda-nos a compreender melhor as suas necessidades e a melhorar continuamente os nossos produtos e serviços.

Avatar
• Proprietário do produto - Damien Fuzeau entrou ao time 4D Product em fevereiro de 2019. Como Proprietário do Produto, está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Damien é formado em engenharia de software pela Universidade de Nantes. Trabalhou mais de 23 anos em sua empresa anterior, primeiro como desenvolvedor (descobrindo 4D em 1997), e mais tarde como gerente de engenharia e arquiteto de software. Essa empresa é um Partner OEM de 4D e lançou softwares empresariais baseados em 4D para milhares de usuários em centenas de servidores. Portanto Damien está acostumado ao desenvolvimento e lançamento de 4D em contextos multilinguais.