fernandrone.intellij

Rôle Ansible : IntelliJ

Tests Ansible Galaxy License

Rôle pour télécharger, installer et configurer l'IDE IntelliJ IDEA https://www.jetbrains.com/idea.

Bien que ce rôle puisse installer des plugins IntelliJ, si vous souhaitez installer certains plugins de manière conditionnelle, consultez notre rôle compagnon : fernandrone.intellij-plugins.

Exigences

  • Ansible >= 2.8

  • Distribution Linux

    • Famille Debian

      • Ubuntu

        • Bionic (18.04)
        • Focal (20.04)
    • Famille RedHat

      • Rocky Linux

        • 8
    • macOS (Intel ou M1)

    • Remarque : d'autres versions fonctionneront probablement mais n'ont pas été testées.

  • Java JDK

    • Vous devez installer le JDK source ainsi que le JDK.
    • Si vous utilisez Java > 9, vous devez également installer les jmods.

    Par exemple, ce qui suit est requis si vous utilisez OpenJDK 11 avec CentOS :

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

Variables de Rôle

Les variables suivantes changeront le comportement de ce rôle (les valeurs par défaut sont affichées ci-dessous) :

# Numéro de version d'IntelliJ IDEA
intellij_version: '2021.2.3'

# Miroir d'où télécharger le package redistribuable d'IntelliJ IDEA
# Utilisation de HTTP en raison de https://github.com/ansible/ansible/issues/11579
intellij_mirror: 'http://download.jetbrains.com/idea'

# Édition à installer (community ou ultimate)
intellij_edition: community

# Définit sur 'false' pour ignorer l'installation d'IntelliJ IDEA si elle est
# déjà installée (même si une version différente de celle demandée)
intellij_force: true

# Répertoire d'installation de base pour toute distribution d'IntelliJ IDEA
intellij_install_dir: /opt/idea/idea-{{ intellij_edition }}-{{ intellij_version }}

# Emplacement de l'installation par défaut d'Apache Maven pour les projets IntelliJ IDEA
# Valeur par défaut de ansible_local.maven.general.home (voir rôle gantsign.maven)
intellij_default_maven_home: '{{ ((((ansible_local | default(dict())).maven | default(dict())).general | default(dict())).home | default(None)) }}'

# URL pour le service web du gestionnaire de plugins d'IntelliJ IDEA
intellij_plugin_manager_url: 'https://plugins.jetbrains.com/pluginManager/'

# Liste des utilisateurs à configurer pour IntelliJ IDEA
users: []

# Répertoire pour stocker les fichiers téléchargés pour l'installation d'IntelliJ IDEA
intellij_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '~/.ansible/tmp/downloads') }}"

# Délai d'attente pour la réponse de téléchargement d'IntelliJ IDEA en secondes
intellij_idea_download_timeout_seconds: 600

Les utilisateurs sont configurés comme suit :

users:
  - username: # Nom d'utilisateur Unix
    intellij_group: # Groupe Unix pour les fichiers/répertoires de l'utilisateur (optionnel - par défaut, correspond au nom d'utilisateur)
    intellij_jdks:
      - name: # Le nom que vous voulez utiliser pour ce JDK
        home: # Le chemin vers le répertoire d'accueil du JDK.
    # Le nom du JDK que vous voulez comme défaut pour les nouveaux projets.
    # Requis si vous spécifiez `intellij_jdks`.
    # Doit correspondre au nom donné à l'un des `intellij_jdks`.
    intellij_default_jdk:
    intellij_disabled_plugins: # voir ~/.*Idea*/config/disabled_plugins.txt
      - # ID du plugin
    intellij_codestyles:
      - name: # Nom (doit correspondre à la valeur dans le fichier XML /code_scheme/@name)
        url: # URL pour télécharger le XML des styles de code
    intellij_default_codestyle: # Nom (doit correspondre à la valeur dans le fichier XML /code_scheme/@name)
    intellij_inspection_profiles:
      - name: # Nom (doit correspondre à la valeur dans le fichier XML /profile/option[@name='myName']/@value)
        url: # URL pour télécharger le profil d'inspection XML
    intellij_default_inspection_profile: # Nom (doit correspondre à la valeur dans le fichier XML /profile/option[@name='myName']/@value)
    intellij_plugins:
      - # ID du plugin à installer
    # Édition Ultimate seulement : emplacement de la clé de licence IntelliJ sur le maître Ansible.
    # Votre clé de licence peut être trouvée à ~/.IntelliJIdea2017.1/config/idea.key
    intellij_license_key_path: # par exemple, '/vagrant/idea.key'

Avertissement : la fonctionnalité d'installation de plugins supplémentaires repose sur des API internes d'IntelliJ IDEA et doit être considérée comme expérimentale à ce stade.

Versions d'IntelliJ IDEA Supportées

Les versions suivantes d'IntelliJ IDEA sont supportées sans configuration supplémentaire (pour d'autres versions, suivez les instructions de configuration avancée) :

  • 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

Configuration Avancée

La variable de rôle suivante dépend de la version d'IntelliJ IDEA ; pour utiliser une version d'IntelliJ IDEA non pré-configurée par ce rôle, vous devez configurer la variable ci-dessous :

# Somme SHA256 pour le package redistribuable
# c'est-à-dire ideaIC-{{ intellij_version }}.tar.gz pour l'édition Community
# ou ideaIU-{{ intellij_version }}.tar.gz pour l'édition Ultimate
intellij_redis_sha256sum: d1cd3f9fd650c00ba85181da6d66b4b80b8e48ce5f4f15b5f4dc67453e96a179

IDs de Plugin IntelliJ

Vous pouvez obtenir une liste des IDs de plugins, pour les plugins IntelliJ disponibles à installer, en suivant la procédure suivante :

  1. Téléchargez le XML des plugins disponibles

    Ouvrez IntelliJ et cliquez sur :

    Fichier > Paramètres > Plugins > Parcourir les dépôts...
    

    Cela enregistrera automatiquement le fichier XML des plugins disponibles sous :

    ~/<répertoire utilisateur d'intelliJ>/config/plugins/availables.xml.

  2. Installez XmlStarlet

    Installez XmlStarlet en utilisant le gestionnaire de paquets standard pour votre distribution

    par exemple, exécutez ce qui suit pour Ubuntu :

    sudo apt install xmlstarlet
    
  3. Extraire les Noms de Plugin et les IDs de Plugin

    Exécutez ce qui suit dans votre terminal :

    xmlstarlet sel -T -t -m '//idea-plugin' \
        -v 'str:align(name, str:padding(50, " "), "left")' -v '" "'  -v 'id' -n \
        $(find ~ | grep --color=never '/plugins/availables.xml$' | sort | tail -n 1)
    

    Cela produira un affichage en texte brut à deux colonnes avec le Nom du Plugin à gauche et l'ID du Plugin à droite ; la sortie est adaptée à une utilisation avec grep.

Exemples de Playbooks

Playbook minimal :

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

Playbook avec configuration spécifique à l'utilisateur (JDK par défaut, Maven, plugins désactivés et style de code) :

- hosts: servers
  roles:
    - role: fernandrone.intellij
      intellij_default_maven_home: '/opt/maven/apache-maven-3.3.9'
      users:
        - username: vagrant
          intellij_jdks:
            - name: '1.8'
              home: '/usr/lib/jvm/java-8-openjdk-amd64'
            - name: '1.7'
              home: '/usr/lib/jvm/java-7-openjdk-amd64'
            - name: '1.6'
              home: '/usr/lib/jvm/java-6-openjdk-amd64'
          intellij_default_jdk: '1.8'
          intellij_disabled_plugins:
            - org.jetbrains.plugins.gradle
            - CVS
            - com.intellij.uiDesigner
            - org.jetbrains.android
            - TestNG-J
            - hg4idea
            - Subversion
            - AntSupport
            - DevKit
          intellij_codestyles:
            - name: GoogleStyle
              url: 'https://raw.githubusercontent.com/google/styleguide/gh-pages/intellij-java-google-style.xml'
          intellij_default_codestyle: GoogleStyle
          intellij_inspection_profiles:
            - name: GantSign
              url: 'https://raw.githubusercontent.com/gantsign/inspection-profile-intellij/master/GantSign.xml'
          intellij_default_inspection_profile: GantSign
          intellij_plugins:
            - CheckStyle-IDEA

Informations sur le Rôle

Ce rôle exporte les faits Ansible suivants pour être utilisés par d'autres rôles :

  • ansible_local.intellij.general.home

    • par exemple /opt/idea/idea-community-2016.2.2
  • ansible_local.intellij.general.desktop_filename

    • par exemple jetbrains-idea-ce.desktop
  • ansible_local.intellij.general.desktop_file

    • par exemple /usr/share/applications/jetbrains-idea-ce.desktop
  • ansible_local.intellij.general.user_config_dir

    • par exemple .IdeaIC2016.2/config
  • ansible_local.intellij.general.user_plugins_dir

    • par exemple .IdeaIC2016.2/config/plugins

Autres Rôles de GantSign

Vous pouvez trouver plus de rôles de GantSign sur Ansible Galaxy.

Développement & Tests

Ce projet utilise Molecule pour faciliter le développement et les tests ; le rôle est testé unitairement à l'aide de Testinfra et pytest.

Pour développer ou tester, vous devez avoir installé ce qui suit :

Comme l'installation de tout cela peut être délicate, ce projet inclut Molecule Wrapper. Molecule Wrapper est un script shell qui installe Molecule et ses dépendances (sauf Linux) et exécute ensuite Molecule avec la commande que vous lui passez.

Pour tester ce rôle à l'aide de Molecule Wrapper, exécutez la commande suivante depuis la racine du projet :

./moleculew test

Remarque : certaines des dépendances nécessitent des permissions sudo pour être installées.

Licence

MIT

Informations sur l'Auteur

John Freeman

GantSign Ltd. Numéro d'entreprise 06109112 (enregistré en Angleterre)

À propos du projet

Role for installing the IntelliJ IDEA IDE.

Installer
ansible-galaxy install fernandrone.intellij
Licence
mit
Téléchargements
97
Propriétaire
YAML Engineer. Likes Go.