gantsign.intellij
Rola Ansible: IntelliJ
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: presentApache 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.22024.1.42024.1.32024.1.22024.1.12024.12023.3.62023.3.52023.3.42023.3.32023.3.22023.3.12023.32023.2.52023.2.42023.2.32023.2.22023.2.12023.22023.1.52023.1.42023.1.32023.1.22023.1.12023.12022.3.32022.3.22022.3.12022.32022.2.42022.2.32022.2.22022.2.12022.22022.1.42022.1.32022.1.22022.1.12022.12021.3.32021.3.22021.3.12021.32021.2.32021.2.22021.2.12021.22021.1.32021.1.22021.1.12021.12020.3.32020.3.22020.3.12020.32020.2.42020.2.32020.2.22020.2.12020.22020.1.22020.1.12020.12019.3.42019.3.32019.3.22019.3.12019.32019.2.42019.2.32019.2.22019.2.12019.22019.1.32019.1.22019.1.12019.12018.3.62018.3.52018.3.42018.3.32018.3.22018.3.12018.32018.2.52018.2.42018.2.32018.2.22018.2.12018.22018.1.62018.1.52018.1.42018.1.32018.1.22018.1.12018.12017.3.52017.3.42017.3.32017.3.22017.3.12017.32017.2.62017.2.52017.2.42017.2.32017.2.22017.2.12017.22017.1.52017.1.42017.1.32017.1.22017.1.12017.12016.3.52016.3.42016.3.32016.3.22016.3.12016.32016.2.52016.2.42016.2.32016.2.22016.2.12016.22016.1.32016.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.
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-).
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ć.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 (
xmlIdz 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
- np.
ansible_local.intellij.general.desktop_filename- np.
jetbrains-idea-ce.desktop
- np.
ansible_local.intellij.general.desktop_file- np.
/usr/share/applications/jetbrains-idea-ce.desktop
- np.
ansible_local.intellij.general.user_config_dir- np.
.config/JetBrains/IntelliJIdea2023.2
- np.
ansible_local.intellij.general.user_plugins_dir- np.
.local/share/JetBrains/IntelliJIdea2023.2
- np.
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)
ansible-galaxy install gantsign.intellij