gantsign.intellij

Rol de Ansible: IntelliJ

Pruebas Ansible Galaxy Licencia

Rol para descargar, instalar y configurar el IDE IntelliJ IDEA https://www.jetbrains.com/idea.

Aunque este rol puede instalar complementos de IntelliJ, si deseas instalar complementos específicos de manera condicional, consulta nuestro rol complementario: gantsign.intellij-plugins.

Requisitos

  • Ansible Core >= 2.12

  • Distribución de Linux

    • Familia Debian

      • Ubuntu

        • Focal (20.04)
        • Jammy (22.04)
    • Familia RedHat

      • Rocky Linux

        • 9
    • Nota: otras versiones probablemente funcionarán, pero no han sido probadas.

  • Java JDK

    • Debes instalar tanto el JDK como el src del JDK.
    • Si utilizas Java > 9, también debes instalar los jmods.

    Por ejemplo, lo siguiente es necesario si usas OpenJDK 17 con Rocky Linux:

    - name: Instalar OpenJDK 17
      become: true
      yum:
        name:
          - java-17-openjdk-devel
          - java-17-openjdk-jmods
          - java-17-openjdk-src
        state: present
    
  • Apache Maven

Variables del Rol

Las siguientes variables modificarán el comportamiento de este rol (los valores predeterminados están mostrados a continuación):

# Número de versión de IntelliJ IDEA
intellij_version: '2024.2'

# Enlace desde donde descargar el paquete redistribuible de IntelliJ IDEA
# Usando HTTP debido a https://github.com/ansible/ansible/issues/11579
intellij_mirror: 'http://download.jetbrains.com/idea'

# Edición a instalar (comunidad o definitiva)
intellij_edition: community

# Directorio base de instalación para cualquier distribución de IntelliJ IDEA
intellij_install_dir: /opt/idea/idea-{{ intellij_edition }}-{{ intellij_version }}

# Propietario de los archivos de instalación
intellij_install_user: root

# Ubicación de la instalación predeterminada de Apache Maven para los proyectos de IntelliJ IDEA
# Por defecto es el valor de ansible_local.maven.general.home (ver rol gantsign.maven)
intellij_default_maven_home: '{{ ((((ansible_local | default(dict())).maven | default(dict())).general | default(dict())).home | default(None)) }}'

# URL del servicio web del administrador de complementos de IntelliJ IDEA
intellij_plugin_manager_url: 'https://plugins.jetbrains.com/pluginManager/'

# Lista de usuarios para configurar IntelliJ IDEA
users: []

# Directorio para almacenar archivos descargados para la instalación de IntelliJ IDEA
intellij_download_dir: "{{ x_ansible_download_dir | default(ansible_facts.env.HOME + '/.ansible/tmp/downloads') }}"

# Tiempo de espera para la respuesta de descarga de IntelliJ IDEA en segundos
intellij_idea_download_timeout_seconds: 600

Los usuarios se configuran de la siguiente manera:

users:
  - username: # Nombre de usuario de Unix
    intellij_group: # Grupo Unix para los archivos/directorios del usuario (opcional - por defecto es el nombre de usuario)
    intellij_jdks:
      - name: # El nombre que deseas usar para este JDK
        home: # La ruta al directorio del JDK.
    # El nombre del JDK que deseas que sea el predeterminado para nuevos proyectos.
    # Requerido si especificas `intellij_jdks`.
    # Debe coincidir con el nombre dado a uno de los `intellij_jdks`.
    intellij_default_jdk:
    intellij_disabled_plugins: # ver ~/.config/JetBrains/*Idea*/disabled_plugins.txt
      - # ID del complemento
    intellij_codestyles:
      # Lista de estilos de código (cada ubicación XML puede especificarse por URL o ruta del sistema de archivos)
      - name: # Nombre (debe coincidir con el valor en el archivo XML /code_scheme/@name)
        url: # URL para descargar el XML de estilos de código
      - name: # Nombre (debe coincidir con el valor en el archivo XML /code_scheme/@name)
        src: # ruta al archivo XML de estilos de código (puede ser absoluta o relativa; las rutas relativas se evalúan de la misma manera que el módulo de copia de Ansible)
        remote_src: # sí/no, si copiar del sistema de archivos remoto (por defecto no)
    intellij_default_codestyle: # Nombre (debe coincidir con el valor en el archivo XML /code_scheme/@name)
    intellij_inspection_profiles:
      # Lista de perfiles de inspección (cada ubicación XML puede especificarse por URL o ruta del sistema de archivos)
      - name: # Nombre (debe coincidir con el valor en el archivo XML /profile/option[@name='myName']/@value)
        url: # URL para descargar el perfil de inspección en XML
      - name: # Nombre (debe coincidir con el valor en el archivo XML /profile/option[@name='myName']/@value)
        src: # ruta al archivo XML del perfil de inspección (puede ser absoluta o relativa; las rutas relativas se evalúan de la misma manera que el módulo de copia de Ansible)
        remote_src: # sí/no, si copiar del sistema de archivos remoto (por defecto no)
    intellij_default_inspection_profile: # Nombre (debe coincidir con el valor en el archivo XML /profile/option[@name='myName']/@value)
    intellij_plugins:
      - # ID del complemento para instalar
    # Solo para la edición definitiva: ubicación de la clave de licencia de IntelliJ en el maestro de Ansible.
    # Tu clave de licencia puede encontrarse en ~/.config/JetBrains/*Idea*/idea.key
    intellij_license_key_path: # por ejemplo '/vagrant/idea.key'

Advertencia: la función para instalar complementos adicionales se basa en APIs internas de IntelliJ IDEA y debe ser considerada experimental en este momento.

Versiones soportadas de IntelliJ IDEA

Las siguientes versiones de IntelliJ IDEA son compatibles sin ninguna configuración adicional (para otras versiones sigue las instrucciones de Configuración Avanzada):

  • 2024.2
  • 2024.1.4
  • 2024.1.3
  • 2024.1.2
  • 2024.1.1
  • 2024.1
  • 2023.3.6
  • 2023.3.5
  • 2023.3.4
  • 2023.3.3
  • 2023.3.2
  • 2023.3.1
  • 2023.3
  • 2023.2.5
  • 2023.2.4
  • 2023.2.3
  • 2023.2.2
  • 2023.2.1
  • 2023.2
  • 2023.1.5
  • 2023.1.4
  • 2023.1.3
  • 2023.1.2
  • 2023.1.1
  • 2023.1
  • 2022.3.3
  • 2022.3.2
  • 2022.3.1
  • 2022.3
  • 2022.2.4
  • 2022.2.3
  • 2022.2.2
  • 2022.2.1
  • 2022.2
  • 2022.1.4
  • 2022.1.3
  • 2022.1.2
  • 2022.1.1
  • 2022.1
  • 2021.3.3
  • 2021.3.2
  • 2021.3.1
  • 2021.3
  • 2021.2.3
  • 2021.2.2
  • 2021.2.1
  • 2021.2
  • 2021.1.3
  • 2021.1.2
  • 2021.1.1
  • 2021.1
  • 2020.3.3
  • 2020.3.2
  • 2020.3.1
  • 2020.3
  • 2020.2.4
  • 2020.2.3
  • 2020.2.2
  • 2020.2.1
  • 2020.2
  • 2020.1.2
  • 2020.1.1
  • 2020.1
  • 2019.3.4
  • 2019.3.3
  • 2019.3.2
  • 2019.3.1
  • 2019.3
  • 2019.2.4
  • 2019.2.3
  • 2019.2.2
  • 2019.2.1
  • 2019.2
  • 2019.1.3
  • 2019.1.2
  • 2019.1.1
  • 2019.1
  • 2018.3.6
  • 2018.3.5
  • 2018.3.4
  • 2018.3.3
  • 2018.3.2
  • 2018.3.1
  • 2018.3
  • 2018.2.5
  • 2018.2.4
  • 2018.2.3
  • 2018.2.2
  • 2018.2.1
  • 2018.2
  • 2018.1.6
  • 2018.1.5
  • 2018.1.4
  • 2018.1.3
  • 2018.1.2
  • 2018.1.1
  • 2018.1
  • 2017.3.5
  • 2017.3.4
  • 2017.3.3
  • 2017.3.2
  • 2017.3.1
  • 2017.3
  • 2017.2.6
  • 2017.2.5
  • 2017.2.4
  • 2017.2.3
  • 2017.2.2
  • 2017.2.1
  • 2017.2
  • 2017.1.5
  • 2017.1.4
  • 2017.1.3
  • 2017.1.2
  • 2017.1.1
  • 2017.1
  • 2016.3.5
  • 2016.3.4
  • 2016.3.3
  • 2016.3.2
  • 2016.3.1
  • 2016.3
  • 2016.2.5
  • 2016.2.4
  • 2016.2.3
  • 2016.2.2
  • 2016.2.1
  • 2016.2
  • 2016.1.3
  • 2016.1.1

Configuración Avanzada

La siguiente variable de rol depende de la versión de IntelliJ IDEA. Para usar una versión de IntelliJ IDEA que no está preconfigurada por este rol, debes configurar la variable a continuación:

# Suma SHA256 para el paquete redistribuible
# es decir, ideaIC-{{ intellij_version }}.tar.gz para la edición comunitaria
# o ideaIU-{{ intellij_version }}.tar.gz para la edición definitiva
intellij_redis_sha256sum: d1cd3f9fd650c00ba85181da6d66b4b80b8e48ce5f4f15b5f4dc67453e96a179

IDs de Complementos de IntelliJ

JetBrains no hace visibles los IDs de los complementos de IntelliJ en su sitio web de mercado (https://plugins.jetbrains.com/idea). Pero es relativamente fácil conseguir el ID con un poco de JavaScript.

  1. Busca en el Mercado de JetBrains un complemento que desees instalar y navega a su página de resumen (por ejemplo, https://plugins.jetbrains.com/plugin/12195-concise-assertj-optimizing-nitpicker-cajon-).

  2. Escribe javascript: en la barra de direcciones de tu navegador (no presiones enter aún).

    Nota: por razones de seguridad no puedes pegar javascript: en la barra de direcciones (el navegador no te lo permitirá), debes escribirlo.

  3. Pega lo siguiente después de javascript: y luego presiona enter/return:

    fetch(window.location.pathname.replace(/\/plugin\/(\d+).*/, "/api/plugins/$1"))
        .then((response) => response.json())
        .then((data) => alert(`Plugin ID: "${data.xmlId}"`));
    

    Esto usa una expresión regular para modificar la ruta de la URL y la API fetch para hacer una solicitud a la API REST de complementos de JetBrains. Luego muestra una alerta que muestra el ID del complemento (xmlId de la respuesta JSON).

Ejemplos de Playbooks

Playbook mínimo:

- hosts: servers
  roles:
    - role: gantsign.intellij

Playbook con configuración específica del usuario (JDK predeterminado, Maven, complementos deshabilitados y estilo de código):

- hosts: servers
  roles:
    - role: gantsign.intellij
      intellij_default_maven_home: '/opt/maven/apache-maven-3.9.4'
      users:
        - username: vagrant
          intellij_jdks:
            - name: '17'
              home: '/usr/lib/jvm/java-17-openjdk-amd64'
            - name: '11'
              home: '/usr/lib/jvm/java-11-openjdk-amd64'
            - name: '1.8'
              home: '/usr/lib/jvm/java-8-openjdk-amd64'
          intellij_default_jdk: '17'
          intellij_disabled_plugins:
            - org.jetbrains.plugins.gradle
            - CVS
            - com.intellij.uiDesigner
            - org.jetbrains.android
            - TestNG-J
            - hg4idea
            - Subversion
            - AntSupport
            - DevKit
          intellij_codestyles:
            - name: Example1
              src: Example-style1.xml
            - name: Example2
              src: /example/Example-style2.xml
              remote_src: true
            - name: GoogleStyle
              url: 'https://raw.githubusercontent.com/google/styleguide/gh-pages/intellij-java-google-style.xml'
          intellij_default_codestyle: GoogleStyle
          intellij_inspection_profiles:
            - name: Example1
              src: Example1.xml
            - name: Example2
              src: /example/Example2.xml
              remote_src: true
            - name: GantSign
              url: 'https://raw.githubusercontent.com/gantsign/inspection-profile-intellij/master/GantSign.xml'
          intellij_default_inspection_profile: GantSign
          intellij_plugins:
            - CheckStyle-IDEA

Hechos del Rol

Este rol exporta los siguientes hechos de Ansible para el uso de otros roles:

  • ansible_local.intellij.general.home

    • por ejemplo, /opt/idea/idea-community-2024.2
  • ansible_local.intellij.general.desktop_filename

    • por ejemplo, jetbrains-idea-ce.desktop
  • ansible_local.intellij.general.desktop_file

    • por ejemplo, /usr/share/applications/jetbrains-idea-ce.desktop
  • ansible_local.intellij.general.user_config_dir

    • por ejemplo, .config/JetBrains/IntelliJIdea2023.2
  • ansible_local.intellij.general.user_plugins_dir

    • por ejemplo, .local/share/JetBrains/IntelliJIdea2023.2

Más Roles de GantSign

Puedes encontrar más roles de GantSign en Ansible Galaxy.

Desarrollo y Pruebas

Este proyecto utiliza las siguientes herramientas:

  • Molecule para orquestar escenarios de prueba
  • Testinfra para probar los cambios en el sistema remoto
  • pytest el marco de pruebas
  • Tox gestiona entornos virtuales de Python para la verificación y pruebas
  • pip-tools para gestionar dependencias

Se proporciona un Contenedor de Desarrollo de Visual Studio Code para desarrollar y probar este rol.

Licencia

MIT

Información del Autor

John Freeman

GantSign Ltd. Número de compañía 06109112 (registrada en Inglaterra)

Acerca del proyecto

Role for installing the IntelliJ IDEA IDE.

Instalar
ansible-galaxy install gantsign.intellij
Licencia
mit
Descargas
62k
Propietario