gantsign.intellij
Rôle Ansible : IntelliJ
Rôle pour télécharger, installer et configurer l'IDE IntelliJ IDEA https://www.jetbrains.com/idea.
Ce rôle peut également installer des plugins IntelliJ, mais si vous souhaitez installer des plugins spécifiques sous certaines conditions, consultez notre rôle complémentaire : gantsign.intellij-plugins.
Exigences
Ansible Core >= 2.12
Distribution Linux
Famille Debian
Ubuntu
- Focal (20.04)
- Jammy (22.04)
Famille RedHat
Rocky Linux
- 9
Remarque : d'autres versions devraient fonctionner mais n'ont pas été testées.
Java JDK
- Vous devez installer à la fois le JDK et le JDK src.
- Si vous utilisez Java > 9, vous devez également installer les jmods.
Par exemple, ce qui suit est requis si vous utilisez OpenJDK 17 avec Rocky Linux :
- name: Installer OpenJDK 17 become: true yum: name: - java-17-openjdk-devel - java-17-openjdk-jmods - java-17-openjdk-src state: present
Apache Maven
Variables du 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: '2024.2'
# Miroir pour télécharger le paquet 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
# Répertoire d'installation de base pour toute distribution d'IntelliJ IDEA
intellij_install_dir: /opt/idea/idea-{{ intellij_edition }}-{{ intellij_version }}
# Propriétaire des fichiers d'installation
intellij_install_user: root
# Emplacement de l'installation par défaut d'Apache Maven pour les projets IntelliJ IDEA
# Défaut à la valeur de ansible_local.maven.general.home (voir le 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 d'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_facts.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 - défaut au nom d'utilisateur)
intellij_jdks:
- name: # Le nom que vous souhaitez utiliser pour ce JDK
home: # Le chemin vers le répertoire d'accueil du JDK.
# Le nom du JDK que vous souhaitez définir 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 ~/.config/JetBrains/*Idea*/disabled_plugins.txt
- # ID du plugin
intellij_codestyles:
# Liste de styles de code (chaque emplacement XML peut être spécifié par URL ou chemin du système de fichiers)
- 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
- name: # Nom (doit correspondre à la valeur dans le fichier XML /code_scheme/@name)
src: # chemin vers le fichier XML des styles de code (peut être absolu ou relatif)
remote_src: # oui/non, s'il faut copier depuis le système de fichiers distant (par défaut non)
intellij_default_codestyle: # Nom (doit correspondre à la valeur dans le fichier XML /code_scheme/@name)
intellij_inspection_profiles:
# Liste de profils d'inspection (chaque emplacement XML peut être spécifié par URL ou chemin du système de fichiers)
- 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
- name: # Nom (doit correspondre à la valeur dans le fichier XML /profile/option[@name='myName']/@value)
src: # chemin vers le fichier XML du profil d'inspection
remote_src: # oui/non, s'il faut copier depuis le système de fichiers distant (par défaut non)
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 uniquement : emplacement de la clé de licence d'IntelliJ sur le maître Ansible.
# Votre clé de licence peut être trouvée à ~/.config/JetBrains/*Idea*/idea.key
intellij_license_key_path: # ex. '/vagrant/idea.key'
Avertissement : la fonctionnalité d'installation de plugins supplémentaires repose sur les API internes d'IntelliJ IDEA et doit être considérée comme expérimentale pour l'instant.
Versions d'IntelliJ IDEA Supportées
Les versions suivantes d'IntelliJ IDEA sont prises en charge sans configuration supplémentaire (pour d'autres versions, suivez les instructions de configuration avancée) :
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
Configuration Avancée
La variable 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 paquet 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 Plugins IntelliJ
JetBrains ne rend pas les IDs des plugins IntelliJ visibles sur leur site de marché (https://plugins.jetbrains.com/idea). Mais il est relativement facile d'obtenir l'ID avec un peu de JavaScript.
Recherchez sur le marché JetBrains un plugin que vous souhaitez installer et naviguez jusqu'à sa page de présentation (par exemple, https://plugins.jetbrains.com/plugin/12195-concise-assertj-optimizing-nitpicker-cajon-).
Tapez
javascript:
dans la barre d'adresse de votre navigateur (ne pas appuyer sur entrer encore).Remarque : pour des raisons de sécurité, vous ne pouvez pas coller
javascript:
dans la barre d'adresse (le navigateur ne vous le permettra pas), vous devez le taper.Collez ce qui suit après
javascript:
puis pressez entrée :fetch(window.location.pathname.replace(/\/plugin\/(\d+).*/, "/api/plugins/$1")) .then((response) => response.json()) .then((data) => alert(`Plugin ID: "${data.xmlId}"`));
Cela utilise une RegEx pour modifier le chemin de l'URL, et l' API fetch pour faire une requête à l'API REST des plugins JetBrains. Ensuite, il affiche une alerte montrant l'ID du plugin (
xmlId
de la réponse JSON).
Exemples de Playbooks
Playbook minimal :
- hosts: servers
roles:
- role: gantsign.intellij
Playbook avec configuration utilisateur spécifique (JDK par défaut, Maven, plugins désactivés et style de code) :
- 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
Faits du Rôle
Ce rôle exporte les faits Ansible suivants pour être utilisés par d'autres rôles :
ansible_local.intellij.general.home
- ex.
/opt/idea/idea-community-2024.2
- ex.
ansible_local.intellij.general.desktop_filename
- ex.
jetbrains-idea-ce.desktop
- ex.
ansible_local.intellij.general.desktop_file
- ex.
/usr/share/applications/jetbrains-idea-ce.desktop
- ex.
ansible_local.intellij.general.user_config_dir
- ex.
.config/JetBrains/IntelliJIdea2023.2
- ex.
ansible_local.intellij.general.user_plugins_dir
- ex.
.local/share/JetBrains/IntelliJIdea2023.2
- ex.
Autres Rôles de GantSign
Vous pouvez trouver d'autres rôles de GantSign sur Ansible Galaxy.
Développement et Tests
Ce projet utilise les outils suivants :
- Molecule pour orchestrer des scénarios de test
- Testinfra pour tester les changements à distance
- pytest le framework de test
- Tox gère les environnements virtuels Python pour le linting et les tests
- pip-tools pour gérer les dépendances
Un Dev Container Visual Studio Code est fourni pour le développement et les tests de ce rôle.
Licence
MIT
Informations sur l'Auteur
John Freeman
GantSign Ltd. Numéro de Société : 06109112 (enregistrée en Angleterre)
Role for installing the IntelliJ IDEA IDE.
ansible-galaxy install gantsign.intellij