gantsign.intellij

Ansible-Rolle: IntelliJ

Tests Ansible Galaxy Lizenz

Rolle zum Herunterladen, Installieren und Konfigurieren der IntelliJ IDEA IDE https://www.jetbrains.com/idea.

Diese Rolle kann IntelliJ-Plugins installieren. Wenn Sie bestimmte Plugins bedingt installieren möchten, schauen Sie sich unsere Begleitrolle an: gantsign.intellij-plugins.

Anforderungen

  • Ansible Core >= 2.12

  • Linux-Distribution

    • Debian-Familie

      • Ubuntu

        • Focal (20.04)
        • Jammy (22.04)
    • RedHat-Familie

      • Rocky Linux

        • 9
    • Hinweis: Andere Versionen funktionieren wahrscheinlich, wurden jedoch nicht getestet.

  • Java JDK

    • Sie müssen das JDK und die JDK-Quellen installieren.
    • Wenn Sie Java > 9 verwenden, müssen Sie auch die jmods installieren.

    z.B. Folgendes ist erforderlich, wenn Sie OpenJDK 17 mit Rocky Linux verwenden:

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

Rollenvariablen

Die folgenden Variablen ändern das Verhalten dieser Rolle (Standardwerte sind unten angezeigt):

# Versionsnummer von IntelliJ IDEA
intellij_version: '2024.2'

# Spiegel, von dem das redistributable Paket von IntelliJ IDEA heruntergeladen werden soll
# Verwendet HTTP aufgrund von https://github.com/ansible/ansible/issues/11579
intellij_mirror: 'http://download.jetbrains.com/idea'

# Edition, die installiert werden soll (community oder ultimate)
intellij_edition: community

# Basisinstallationsverzeichnis für jede IntelliJ IDEA-Verteilung
intellij_install_dir: /opt/idea/idea-{{ intellij_edition }}-{{ intellij_version }}

# Besitzer der Installationsdateien
intellij_install_user: root

# Standort der Standardinstallation von Apache Maven für IntelliJ IDEA-Projekte
# Standardmäßig der Wert von ansible_local.maven.general.home (siehe gantsign.maven Rolle)
intellij_default_maven_home: '{{ ((((ansible_local | default(dict())).maven | default(dict())).general | default(dict())).home | default(None)) }}'

# URL für den IntelliJ IDEA Plugin-Manager-Webdienst
intellij_plugin_manager_url: 'https://plugins.jetbrains.com/pluginManager/'

# Liste der Benutzer, für die IntelliJ IDEA konfiguriert werden soll
users: []

# Verzeichnis zum Speichern von Dateien, die für die Installation von IntelliJ IDEA heruntergeladen wurden
intellij_download_dir: "{{ x_ansible_download_dir | default(ansible_facts.env.HOME + '/.ansible/tmp/downloads') }}"

# Timeout für die Download-Antwort von IntelliJ IDEA in Sekunden
intellij_idea_download_timeout_seconds: 600

Benutzer werden wie folgt konfiguriert:

users:
  - username: # Unix-Benutzername
    intellij_group: # Unix-Gruppe für die Dateien/Verzeichnisse des Benutzers (optional - Standardwert ist der Benutzername)
    intellij_jdks:
      - name: # Der Name, der für dieses JDK verwendet werden soll
        home: # Der Pfad zum JDK-Home.
    # Der Name des JDK, den Sie als Standard für neue Projekte verwenden möchten.
    # Erforderlich, wenn Sie `intellij_jdks` angeben.
    # Muss mit dem Namen übereinstimmen, der einem der `intellij_jdks` gegeben wurde.
    intellij_default_jdk:
    intellij_disabled_plugins: # siehe ~/.config/JetBrains/*Idea*/disabled_plugins.txt
      - # Plugin-ID
    intellij_codestyles:
      # Liste der Code-Stile (jeder XML-Standort kann durch URL oder Dateisystempfad angegeben werden)
      - name: # Name (muss mit dem Wert in der XML-Datei /code_scheme/@name übereinstimmen)
        url: # URL, um die Code-Stile XML herunterzuladen
      - name: # Name (muss mit dem Wert in der XML-Datei /code_scheme/@name übereinstimmen)
        src: # Pfad zur Code-Stile XML-Datei (kann absolut oder relativ sein, relative Pfade werden wie im Ansible Kopiermodul ausgewertet)
        remote_src: # ja/nein, ob von dem Remote-Dateisystem kopiert werden soll (Standard nein)
    intellij_default_codestyle: # Name (muss mit dem Wert in der XML-Datei /code_scheme/@name übereinstimmen)
    intellij_inspection_profiles:
      # Liste der Inspektionsprofile (jeder XML-Standort kann durch URL oder Dateisystempfad angegeben werden)
      - name: # Name (muss mit dem Wert in der XML-Datei /profile/option[@name='myName']/@value übereinstimmen)
        url: # URL, um das Inspektionsprofil XML herunterzuladen
      - name: # Name (muss mit dem Wert in der XML-Datei /profile/option[@name='myName']/@value übereinstimmen)
        src: # Pfad zur Inspektionsprofil XML-Datei (kann absolut oder relativ sein, relative Pfade werden wie im Ansible Kopiermodul ausgewertet)
        remote_src: # ja/nein, ob von dem Remote-Dateisystem kopiert werden soll (Standard nein)
    intellij_default_inspection_profile: # Name (muss mit dem Wert in der XML-Datei /profile/option[@name='myName']/@value übereinstimmen)
    intellij_plugins:
      - # Plugin-ID des zu installierenden Plugins
    # Nur in der Ultimate Edition: Speicherort des IntelliJ Lizenzschlüssels auf dem Ansible Master.
    # Ihr Lizenzschlüssel befindet sich unter ~/.config/JetBrains/*Idea*/idea.key
    intellij_license_key_path: # z.B. '/vagrant/idea.key'

Achtung: die Funktion zum Installieren zusätzlicher Plugins basiert auf internen IntelliJ IDEA APIs und sollte derzeit als experimentell betrachtet werden.

Unterstützte IntelliJ IDEA-Versionen

Die folgenden Versionen von IntelliJ IDEA werden ohne zusätzliche Konfiguration unterstützt (für andere Versionen folgen Sie den Anweisungen zur erweiterten Konfiguration):

  • 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

Erweiterte Konfiguration

Die folgende Rollenvariable hängt von der Version von IntelliJ IDEA ab; um eine IntelliJ IDEA-Version zu verwenden, die von dieser Rolle nicht vorkonfiguriert ist, müssen Sie die folgende Variable konfigurieren:

# SHA256-Summe für das redistributable Paket
# d.h. ideaIC-{{ intellij_version }}.tar.gz für die Community Edition
# oder ideaIU-{{ intellij_version }}.tar.gz für die Ultimate Edition
intellij_redis_sha256sum: d1cd3f9fd650c00ba85181da6d66b4b80b8e48ce5f4f15b5f4dc67453e96a179

IntelliJ Plugin-IDs

JetBrains macht die IntelliJ Plugin-IDs auf seiner Marktplatz-Website nicht sichtbar (https://plugins.jetbrains.com/idea). Aber es ist relativ einfach, die ID mit ein wenig JavaScript zu erhalten.

  1. Suchen Sie im JetBrains Marketplace nach einem Plugin, das Sie installieren möchten, und navigieren Sie zur Übersichtsseite (z.B. https://plugins.jetbrains.com/plugin/12195-concise-assertj-optimizing-nitpicker-cajon-).

  2. Geben Sie javascript: in die Adresszeile Ihres Browsers ein (drücken Sie noch nicht die Eingabetaste).

    Hinweis: Aus Sicherheitsgründen können Sie javascript: nicht in die Adresszeile einfügen (der Browser lässt das nicht zu), Sie müssen es eintippen.

  3. Fügen Sie nach javascript: Folgendes hinzu und drücken Sie Enter/Rücktaste:

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

    Dies verändert den Pfad der URL mit einer RegEx und nutzt die Fetch API, um eine Anfrage an die JetBrains Plugins REST-API zu stellen. Anschließend wird ein Alert angezeigt, der die Plugin-ID (xmlId aus der JSON-Antwort) anzeigt.

Beispiel-Playbooks

Minimal-Playbook:

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

Playbook mit benutzerspezifischer Konfiguration (Standard JDK, Maven, deaktivierte Plugins und Code-Stil):

- 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

Rollenfakten

Diese Rolle exportiert die folgenden Ansible-Fakten zur Nutzung durch andere Rollen:

  • ansible_local.intellij.general.home

    • z.B. /opt/idea/idea-community-2024.2
  • ansible_local.intellij.general.desktop_filename

    • z.B. jetbrains-idea-ce.desktop
  • ansible_local.intellij.general.desktop_file

    • z.B. /usr/share/applications/jetbrains-idea-ce.desktop
  • ansible_local.intellij.general.user_config_dir

    • z.B. .config/JetBrains/IntelliJIdea2023.2
  • ansible_local.intellij.general.user_plugins_dir

    • z.B. .local/share/JetBrains/IntelliJIdea2023.2

Weitere Rollen von GantSign

Sie finden weitere Rollen von GantSign auf Ansible Galaxy.

Entwicklung & Test

Dieses Projekt verwendet die folgenden Werkzeuge:

  • Molecule zum Orchestrieren von Testszenarien
  • Testinfra zum Testen der Änderungen auf dem Remote
  • pytest das Testframework
  • Tox verwaltet Python-virtuelle Umgebungen für Linting und Tests
  • pip-tools zur Verwaltung von Abhängigkeiten

Ein Visual Studio Code Dev Container steht zur Verfügung, um diese Rolle zu entwickeln und zu testen.

Lizenz

MIT

Autoreninformation

John Freeman

GantSign Ltd. Firma Nr. 06109112 (registriert in England)

Über das Projekt

Role for installing the IntelliJ IDEA IDE.

Installieren
ansible-galaxy install gantsign.intellij
Lizenz
mit
Downloads
62k
Besitzer