gantsign.intellij

Rola Ansible: IntelliJ

Testy Ansible Galaxy Licencja

Rola do pobierania, instalacji i konfiguracji środowiska IDE IntelliJ IDEA https://www.jetbrains.com/idea.

Chociaż ta rola może instalować dodatki do IntelliJ, jeśli chcesz warunkowo zainstalować konkretne dodatki, zapoznaj się z naszą rolą towarzyszącą: gantsign.intellij-plugins.

Wymagania

  • Ansible Core >= 2.12

  • Dystrybucja Linux

    • Rodzina Debian

      • Ubuntu

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

      • Rocky Linux

        • 9
    • Uwaga: inne wersje prawdopodobnie zadziałają, ale nie zostały przetestowane.

  • Java JDK

    • Musisz zainstalować źródła JDK oraz JDK.
    • Przy używaniu Java > 9 musisz również zainstalować jmods.

    np. poniżej znajduje się wymagane, jeśli używasz OpenJDK 17 na Rocky Linux:

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

Zmienne roli

Poniższe zmienne zmieniają działanie tej roli (pokaź wartości domyślne):

# Numer wersji IntelliJ IDEA
intellij_version: '2024.2'

# Lustro, z którego pobierany jest pakiet instalacyjny IntelliJ IDEA
# Używanie HTTP z powodu https://github.com/ansible/ansible/issues/11579
intellij_mirror: 'http://download.jetbrains.com/idea'

# Edycja do zainstalowania (community lub ultimate)
intellij_edition: community

# Podstawowy katalog instalacyjny dla dowolnej dystrybucji IntelliJ IDEA
intellij_install_dir: /opt/idea/idea-{{ intellij_edition }}-{{ intellij_version }}

# Właściciel plików instalacyjnych
intellij_install_user: root

# Adres domyślnej instalacji Apache Maven dla projektów IntelliJ IDEA
# Domyślnie ustawia wartości ansible_local.maven.general.home (zobacz rolę gantsign.maven)
intellij_default_maven_home: '{{ ((((ansible_local | default(dict())).maven | default(dict())).general | default(dict())).home | default(None)) }}'

# URL dla internetowej usługi menedżera dodatków IntelliJ IDEA
intellij_plugin_manager_url: 'https://plugins.jetbrains.com/pluginManager/'

# Lista użytkowników, dla których konfigurowana jest IntelliJ IDEA
users: []

# Katalog do przechowywania plików pobranych do instalacji IntelliJ IDEA
intellij_download_dir: "{{ x_ansible_download_dir | default(ansible_facts.env.HOME + '/.ansible/tmp/downloads') }}"

# Limit czasowy na odpowiedź podczas pobierania IntelliJ IDEA w sekundach
intellij_idea_download_timeout_seconds: 600

Użytkownicy są konfigurowani w następujący sposób:

users:
  - username: # Nazwa użytkownika Unix
    intellij_group: # Grupa Unix dla plików/katalogów użytkownika (opcjonalnie - domyślnie ustawiono na nazwę użytkownika)
    intellij_jdks:
      - name: # Nazwa, którą chcesz używać dla tego JDK
        home: # Ścieżka do katalogu domowego JDK.
    # Nazwa JDK, które chcesz ustawić jako domyślne dla nowych projektów.
    # Wymagane, jeśli określasz `intellij_jdks`.
    # Musi odpowiadać nazwie podanej jednemu z `intellij_jdks`.
    intellij_default_jdk:
    intellij_disabled_plugins: # patrz ~/.config/JetBrains/*Idea*/disabled_plugins.txt
      - # ID dodatku
    intellij_codestyles:
      # Lista stylów kodu (każda lokalizacja XML może być określona przez URL lub ścieżkę w systemie plików)
      - name: # Nazwa (musi odpowiadać wartości w pliku XML /code_scheme/@name)
        url: # URL do pobrania XML stylów kodu
      - name: # Nazwa (musi odpowiadać wartości w pliku XML /code_scheme/@name)
        src: # ścieżka do pliku XML stylów kodu (może być absolutna lub względna, względne ścieżki są oceniane w ten sam sposób jak moduł kopiowania Ansible)
        remote_src: # tak/nie, czy kopiować z zdalnego systemu plików (domyślnie nie)
    intellij_default_codestyle: # Nazwa (musi odpowiadać wartości w pliku XML /code_scheme/@name)
    intellij_inspection_profiles:
      # Lista profili inspekcji (każda lokalizacja XML może być określona przez URL lub ścieżkę w systemie plików)
      - name: # Nazwa (musi odpowiadać wartości w pliku XML /profile/option[@name='myName']/@value)
        url: # URL do pobrania XML profilu inspekcji
      - name: # Nazwa (musi odpowiadać wartości w pliku XML /profile/option[@name='myName']/@value)
        src: # ścieżka do pliku XML profilu inspekcji (może być absolutna lub względna, względne ścieżki są oceniane w ten sam sposób jak moduł kopiowania Ansible)
        remote_src: # tak/nie, czy kopiować z zdalnego systemu plików (domyślnie nie)
    intellij_default_inspection_profile: # Nazwa (musi odpowiadać wartości w pliku XML /profile/option[@name='myName']/@value)
    intellij_plugins:
      - # ID dodatku do zainstalowania
    # Tylko Edycja Ultimate: lokalizacja klucza licencyjnego IntelliJ na hoście Ansible.
    # Twój klucz licencyjny można znaleźć w ~/.config/JetBrains/*Idea*/idea.key
    intellij_license_key_path: # np. '/vagrant/idea.key'

Ostrzeżenie: funkcja instalacji dodatkowych dodatków opiera się na wewnętrznych interfejsach API IntelliJ IDEA i obecnie powinna być traktowana jako eksperymentalna.

Obsługiwane Wersje IntelliJ IDEA

Poniższe wersje IntelliJ IDEA są obsługiwane bez dodatkowej konfiguracji (dla innych wersji postępuj zgodnie z instrukcjami zaawansowanej konfiguracji):

  • 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

Zaawansowana konfiguracja

Poniższa zmienna roli jest zależna od wersji IntelliJ IDEA; aby użyć wersji IntelliJ IDEA nie skonfigurowanej przez tę rolę, musisz skonfigurować poniższą zmienną:

# Suma SHA256 dla pakietu instalacyjnego
# tzn. ideaIC-{{ intellij_version }}.tar.gz dla Edycji Community
# lub ideaIU-{{ intellij_version }}.tar.gz dla Edycji Ultimate
intellij_redis_sha256sum: d1cd3f9fd650c00ba85181da6d66b4b80b8e48ce5f4f15b5f4dc67453e96a179

Identyfikatory dodatków IntelliJ

JetBrains nie udostępnia identyfikatorów dodatków IntelliJ na swojej stronie rynkowej (https://plugins.jetbrains.com/idea). Jednak stosunkowo łatwo można uzyskać ID z odrobiną JavaScriptu.

  1. Wyszukaj w JetBrains Marketplace dodatek, który chcesz zainstalować, i przejdź do jego strony przeglądowej (np. https://plugins.jetbrains.com/plugin/12195-concise-assertj-optimizing-nitpicker-cajon-).

  2. Wpisz javascript: w pasku adresu przeglądarki (nie naciskaj jeszcze enter).

    Uwaga: z powodów bezpieczeństwa nie możesz wkleić javascript: do paska адреса (przeglądarka tego nie pozwoli), musisz to wpisać.

  3. Wklej poniższe po javascript: i naciśnij enter:

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

    To używa wyrażenia regularnego do zmiany ścieżki URL i fetch API do wysłania żądania do interfejsu API JetBrains dodatków REST. Następnie wyświetla okno dialogowe z identyfikatorem dodatku (xmlId z odpowiedzi JSON).

Przykład playbooków

Minimalny playbook:

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

Playbook z konfiguracją specyficzną dla użytkownika (domyślne JDK, Maven, wyłączone dodatki i styl kodu):

- hosts: serwery
  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

Fakty roli

Ta rola eksportuje następujące fakty Ansible do wykorzystania w innych rolach:

  • ansible_local.intellij.general.home

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

    • np. jetbrains-idea-ce.desktop
  • ansible_local.intellij.general.desktop_file

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

    • np. .config/JetBrains/IntelliJIdea2023.2
  • ansible_local.intellij.general.user_plugins_dir

    • np. .local/share/JetBrains/IntelliJIdea2023.2

Więcej ról od GantSign

Możesz znaleźć więcej ról od GantSign na Ansible Galaxy.

Rozwój i testowanie

Ten projekt korzysta z następujących narzędzi:

  • Molecule do organizowania scenariuszy testowych
  • Testinfra do testowania zmian na zdalnych systemach
  • pytest jako framework do testowania
  • Tox zarządza wirtualnymi środowiskami Pythona do linting i testowania
  • pip-tools do zarządzania zależnościami

Dostępny jest kontener zwany Kontenerem Dev w Visual Studio Code do rozwoju i testowania tej roli.

Licencja

MIT

Informacje o autorze

John Freeman

GantSign Ltd. Numer firmy 06109112 (zarejestrowana w Anglii)

O projekcie

Role for installing the IntelliJ IDEA IDE.

Zainstaluj
ansible-galaxy install gantsign.intellij
Licencja
mit
Pobrania
62k
Właściciel