fernandrone.intellij

Ansible Rola: IntelliJ

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

Ta rola może instalować wtyczki IntelliJ, ale jeśli chcesz warunkowo zainstalować konkretne wtyczki, obejrzyj naszą towarzyszącą rolę: fernandrone.intellij-plugins.

Wymagania

  • Ansible >= 2.8

  • Dystrybucja Linuxa

    • Rodzina Debian

      • Ubuntu

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

      • Rocky Linux

        • 8
    • macOS (Intel lub M1)

    • Uwaga: inne wersje prawdopodobnie będą działać, ale nie były testowane.

  • Java JDK

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

    np. poniżej znajduje się przykład, jeśli używasz OpenJDK 11 z CentOS:

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

Zmienne roli

Poniższe zmienne zmienią działanie tej roli (domyślne wartości są pokazane poniżej):

# Numer wersji IntelliJ IDEA
intellij_version: '2021.2.3'

# Lustro, z którego pobrać pakiet rozprowadzony IntelliJ IDEA
# Używamy 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

# Ustaw na 'false', aby pominąć instalację IntelliJ IDEA, jeśli już jest zainstalowane 
# (nawet jeśli jest inna wersja niż żądana)
intellij_force: true

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

# Lokalizacja domyślnej instalacji Apache Maven dla projektów IntelliJ IDEA
# Domyślnie do wartości ansible_local.maven.general.home (patrz rola gantsign.maven)
intellij_default_maven_home: '{{ ((((ansible_local | default(dict())).maven | default(dict())).general | default(dict())).home | default(None)) }}'

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

# Lista użytkowników do konfiguracji IntelliJ IDEA
users: []

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

# Czas oczekiwania 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 to nazwa użytkownika)
    intellij_jdks:
      - name: # Nazwa, którą chcesz używać dla tego JDK
        home: # Ścieżka do katalogu JDK.
    # Nazwa JDK, które chcesz, aby było domyślne dla nowych projektów.
    # Wymagana, jeśli określisz `intellij_jdks`.
    # Musi odpowiadać nazwie jednej z `intellij_jdks`.
    intellij_default_jdk:
    intellij_disabled_plugins: # zobacz ~/.*Idea*/config/disabled_plugins.txt
      - # ID wtyczki
    intellij_codestyles:
      - name: # Nazwa (musi odpowiadać wartości w pliku XML /code_scheme/@name)
        url: # URL do pobrania pliku XML z kodem stylu
    intellij_default_codestyle: # Nazwa (musi odpowiadać wartości w pliku XML /code_scheme/@name)
    intellij_inspection_profiles:
      - name: # Nazwa (musi odpowiadać wartości w pliku XML /profile/option[@name='myName']/@value)
        url: # URL do pobrania pliku XML profilu inspekcji
    intellij_default_inspection_profile: # Nazwa (musi odpowiadać wartości w pliku XML /profile/option[@name='myName']/@value)
    intellij_plugins:
      - # ID wtyczki do zainstalowania
    # Tylko dla edycji Ultimate: lokalizacja klucza licencyjnego IntelliJ na masterze Ansible.
    # Twój klucz licencyjny można znaleźć w ~/.IntelliJIdea2017.1/config/idea.key
    intellij_license_key_path: # np. '/vagrant/idea.key'

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

Obsługiwane wersje IntelliJ IDEA

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

  • 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 zależy od wersji IntelliJ IDEA; aby użyć wersji IntelliJ IDEA nieprzygotowanej przez tę rolę, musisz skonfigurować poniższą zmienną:

# Suma SHA256 dla pakietu rozprowadzającego
# tj. ideaIC-{{ intellij_version }}.tar.gz dla edycji Community
# lub ideaIU-{{ intellij_version }}.tar.gz dla edycji Ultimate
intellij_redis_sha256sum: d1cd3f9fd650c00ba85181da6d66b4b80b8e48ce5f4f15b5f4dc67453e96a179

ID wtyczek IntelliJ

Możesz uzyskać listę ID wtyczek, dla wtyczek IntelliJ, które są dostępne do zainstalowania, wykonując następujące kroki:

  1. Pobierz dostępne pliki XML wtyczek

    Otwórz IntelliJ i kliknij:

    Plik > Ustawienia > Wtyczki > Przeglądaj repozytoria...
    

    To automatycznie zapisze dostępny plik XML wtyczek w:

    ~/<katalog użytkownika intellij>/config/plugins/availables.xml.

  2. Zainstaluj XmlStarlet

    Zainstaluj XmlStarlet przy użyciu standardowego menedżera pakietów swojej dystrybucji

    np. uruchom poniższe polecenie dla Ubuntu:

    sudo apt install xmlstarlet
    
  3. Wyodrębnij nazwy wtyczek i ID wtyczek

    Uruchom poniższe polecenie w terminalu:

    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)
    

    To wygeneruje dwukolumnowy układ tekstowy z nazwą wtyczki po lewej stronie i ID wtyczki po prawej stronie; wynik jest odpowiedni do użycia z grep.

Przykład playbooków

Minimalny playbook:

- hosts: serwery
  roles:
    - rola: fernandrone.intellij

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

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

Fakty Roli

Ta rola eksportuje następujące fakty Ansible do użycia przez inne role:

  • ansible_local.intellij.general.home

    • np. /opt/idea/idea-community-2016.2.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. .IdeaIC2016.2/config
  • ansible_local.intellij.general.user_plugins_dir

    • np. .IdeaIC2016.2/config/plugins

Więcej ról od GantSign

Więcej ról od GantSign można znaleźć na Ansible Galaxy.

Rozwój i testowanie

Projekt ten wykorzystuje Molecule do pomocy w rozwoju i testowaniu; rola jest testowana jednostkowo za pomocą Testinfra i pytest.

Aby rozwijać lub testować, musisz mieć zainstalowane następujące:

Ponieważ powyższe może być trudne do zainstalowania, projekt ten zawiera Molecule Wrapper. Molecule Wrapper to skrypt powłoki, który instaluje Molecule i jego zależności (poza Linuxem) i następnie wykonuje Molecule z poleceniem, które mu przekażesz.

Aby przetestować tę rolę przy użyciu Molecule Wrapper, uruchom następujące polecenie z katalogu głównego projektu:

./moleculew test

Uwaga: niektóre z zależności wymagają uprawnień sudo do zainstalowania.

Licencja

MIT

Informacje o autorze

John Freeman

GantSign Ltd. Numer rejestracyjny firmy 06109112 (zarejestrowana w Anglii)

O projekcie

Role for installing the IntelliJ IDEA IDE.

Zainstaluj
ansible-galaxy install fernandrone.intellij
Licencja
mit
Pobrania
97
Właściciel
YAML Engineer. Likes Go.