Docker


Nossos Analyzers são publicados como imagens Docker.

Leia as informações gerais sobre Docker em Ferramentas para você se familiarizar com o funcionamento deles.

Integração

Quando rodamos um Analyzer para analisar uma solução, executamos um comando Docker parecido com este:

docker run \
        --rm \
        --network none \
        --mount type=bind,src="${solution_dir}",dst=/solution \
        --mount type=bind,src="${output_dir}",dst=/output \
        --tmpfs /tmp:rw \
        "exercism/${track_slug}-analyzer" \
        "${exercise_slug}" "/solution" "/output"

Como você pode ver, passamos três argumentos para a imagem Docker:

  1. O slug do exercício
  2. O caminho para o diretório da solução
  3. O caminho para o diretório de saída

Convenções

Todos os nossos Analyzers seguem as seguintes convenções na implementação:

  • O Dockerfile fica no diretório raiz do repositório.
  • O diretório de trabalho deve ser /opt/analyzer.
  • O entrypoint é /opt/analyzer/bin/run.sh
  • O script /opt/analyzer/bin/run.sh recebe 3 argumentos:
    1. O slug do exercício
    2. O caminho para o diretório da solução
    3. O caminho para o diretório de saída

Para mais informações, veja A Interface.

Note

Novos repositórios de analyzers usarão estas convenções por padrão.