Compilação e Implantação do WebSpoon 9.0 (Versão Web do Kettle) com Tomcat, Docker e Depuração Remota

Introdução

O Kettle é uma ferramenta ETL open source desenvolvida em Java puro, compatível com Windows, Linux e Unix, sem necessidade de instalação, oferecendo extração de dados eficiente e estável.
O WebSpoon é a versão web do Kettle, mantida pela comunidade Kettle, sem suporte oficial do Pentaho, e implementa a maioria das funcionalidades do Kettle.

Clonagem do Repositório

Endereço do repositório: https://github.com/HiromuHota/pentaho-kettle

git clone https://github.com/HiromuHota/pentaho-kettle.git

Compilação

Configure as variáveis de ambiente do Maven.

Coloque o arquivo settings.xml no diretório ~/.m2 e ajuste conforme necessário.

Conteúdo do settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
          http://maven.apache.org/xsd/settings-1.0.0.xsd">

    <!-- settings.xml recomendado para desenvolvimento de projetos Hitachi Vantara -->

    <!--
    Caso deseje espelhar tudo pelo repositório pentaho-public, descomente abaixo.
    Não recomendado para desenvolvedores externos.
    -->
    <!--
    <mirrors>
        <mirror>
            <id>pentaho-public</id>
            <url>https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/</url>
            <mirrorOf>*</mirrorOf>
        </mirror>
    </mirrors>
    -->

    <!--
    Não se esqueça de adicionar o setting-security.xml para descriptografar a senha.
    -->
    <servers>
        <server>
            <id>pentaho-public</id>
            <username>devreaduser</username>
            <password>{zIMyJWfHKfoHiBJAVsAgW4E5BcJzR+nhTtgPy0J+/rs=}</password>
        </server>
    </servers>

    <!--
    Ajuste a política de atualização ('updatePolicy') conforme sua necessidade para snapshots e releases.
    Recomenda-se usar 'never' e executar o Maven com a flag '-U' quando necessário.
    -->
    <profiles>
        <profile>
            <id>pentaho</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <repositories>
                <repository>
                    <id>pentaho-public</id>
                    <name>Pentaho Public</name>
                    <url>https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/</url>
                    <releases>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>pentaho-public</id>
                    <name>Pentaho Public</name>
                    <url>https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/</url>
                    <releases>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>

    <!-- Permite usar plugins desses grupos na forma abreviada -->
    <pluginGroups>
        <pluginGroup>org.pentaho.maven.plugins</pluginGroup>
        <pluginGroup>com.pentaho.maven.plugins</pluginGroup>
        <pluginGroup>com.github.spotbugs</pluginGroup>
    </pluginGroups>
</settings>

Compile as seguintes dependências localmente:

pentaho-xul-swt

git clone -b webspoon-9.0 https://github.com/HiromuHota/pentaho-commons-xul.git
cd pentaho-commons-xul
mvn clean install -pl swt -DskipTests

rap
Após clonar, navegue até o diretório rap/releng/org.eclipse.rap.build e edite o arquivo pom.xml. Localize a tag properties e altere os seguintes valores:

  • Altere a propriedade jetty-repo.url para: https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.44.v20210927/
  • Altere a propriedade rap-extra-repo.url para: https://download.eclipse.org/rt/rap/base-platforms/3.14/extra-dependencies/
git clone -b webspoon-3.12.0 https://github.com/HiromuHota/rap.git
cd rap
mvn clean install -DskipTests

pentaho-vfs-browser

git clone -b webspoon-9.0 https://github.com/HiromuHota/apache-vfs-browser.git
cd apache-vfs-browser
mvn clean install -DskipTests

Após as etapas acima, execute mvn clean install -DskipTests para construir o projeto.

Após a compilação bem-sucedida, o arquivo spoon.war estará disponível em assemblies/client/target.
Alternativamente, é possível baixar o arquivo WAR já compilado em: https://github.com/HiromuHota/pentaho-kettle/releases

Implantação

Implantação com Tomcat

Copie o arquivo spoon.war para o diretório tomcat/webapps.
Baixe e descompacte o arquivo pdi-ce-xxxx.zip (versão 9.x).
Copie os diretórios system e plugins para tomcat/bin.
Inicie o Tomcat e acesse a aplicação.

Implantação com Docker
# Baixar a imagem
docker pull hiromuhota/webspoon
# Executar e acessar http://localhost:8080
docker run -d -p 8080:8080 hiromuhota/webspoon

Implantação com Docker Compose

Arquivo docker-compose.yml:

version: "3.3"

services:
  kettle:
    image: hiromuhota/webspoon:latest
    volumes:
      # Montar arquivos JAR adicionais no container, se necessário
      - ./volumes/lib/mysql-connector-java-5.1.48.jar:/usr/local/tomcat/webapps/spoon/WEB-INF/lib/mysql-connector-java-5.1.48.jar
      # Montar diretório .kettle para persistir dados do repositório (criar com mkdir -m 777 ./volumes/.kettle)
      - ./volumes/.kettle:/home/tomcat/.kettle
      # Montar arquivo de configuração para localização (ex.: chinês simplificado)
      - ./volumes/setenv.sh:/usr/local/tomcat/bin/setenv.sh
    environment:
      - LANG=zh_CN.UTF-8
    ports:
      - "9002:8080"

Conteúdo do arquivo setenv.sh:

CLASSPATH=/usr/local/tomcat/lib/webspoon-security-9.0.0.0-423-22.jar
CATALINA_OPTS="-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
JAVA_OPTS="-Duser.language=zh -Duser.region=CN -Dfile.encoding=UTF-8"

Inicialização e parada

# Executar no diretório onde está o docker-compose.yml
# Iniciar
docker compose up -d
# Parar
docker compose down

Depuração Remota

Habilitar o serviço de depuração remota

docker run -d -p 8080:8080 -p 9003:8000 \
  -e JPDA_ADDRESS=8000 \
  -e CATALINA_OPTS="-Dorg.eclipse.rap.rwt.developmentMode=true" \
  hiromuhota/webspoon catalina.sh jpda run

Ou configure via docker-compose.yml:

version: "3.3"

services:
  kettle:
    image: hiromuhota/webspoon:latest
    environment:
      - JPDA_ADDRESS=8000
      - CATALINA_OPTS="-Dorg.eclipse.rap.rwt.developmentMode=true"
    ports:
      - "8080:8080"
      - "9003:8000"
    command: ["catalina.sh", "jpda", "run"]

Configurar o IntelliJ IDEA para depuração remota:

Adicione uma configuração do tipo Remote JVM Debug e inicie-a.
Configuração de depuração remota no IntelliJ IDEA
O console exibirá a mensagem: Connected to the target VM, address: '192.168.5.22:9003', transport: 'socket'
Console do IntelliJ IDEA conectado à VM remota

Tags: WebSpoon Kettle ETL java maven

Publicado em 6-25 04:27