gantsign.intellij

Ansibleロール: IntelliJ

テスト Ansible Galaxy ライセンス

IntelliJ IDEA IDEをダウンロード、インストール、設定するためのロール
https://www.jetbrains.com/idea

このロールはIntelliJプラグインをインストールできますが、特定のプラグインを条件付きでインストールしたい場合は、以下のロールを確認してください:
gantsign.intellij-plugins

要件

  • Ansible Core >= 2.12

  • Linuxディストリビューション

    • Debian系

      • Ubuntu

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

      • Rocky Linux

        • 9
    • 注: 他のバージョンも動作する可能性がありますが、テストは行われていません。

  • Java JDK

    • JDKとJDKのソースをインストールする必要があります。
    • Java > 9を使用する場合、jmodsもインストールする必要があります。

    例えば、Rocky LinuxでOpenJDK 17を使用する場合は以下が必要です:

    - name: OpenJDK 17をインストール
      become: true
      yum:
        name:
          - java-17-openjdk-devel
          - java-17-openjdk-jmods
          - java-17-openjdk-src
        state: present
    
  • Apache Maven

ロール変数

このロールの動作を変更するための変数(デフォルト値は以下に示されています):

# IntelliJ IDEAのバージョン番号
intellij_version: '2024.2'

# IntelliJ IDEA再配布パッケージをダウンロードするミラー
# HTTPSの問題からHTTPを使用しています。
intellij_mirror: 'http://download.jetbrains.com/idea'

# インストールするエディション(communityまたはultimate)
intellij_edition: community

# IntelliJ IDEAの任意の配布の基本インストールディレクトリ
intellij_install_dir: /opt/idea/idea-{{ intellij_edition }}-{{ intellij_version }}

# インストールファイルの所有者
intellij_install_user: root

# IntelliJ IDEAプロジェクトのためのデフォルトのApache Mavenインストールの場所
# ansible_local.maven.general.homeの値が使われます(gantsign.mavenロール参照)
intellij_default_maven_home: '{{ ((((ansible_local | default(dict())).maven | default(dict())).general | default(dict())).home | default(None)) }}'

# IntelliJ IDEAプラグインマネージャのウェブサービスのURL
intellij_plugin_manager_url: 'https://plugins.jetbrains.com/pluginManager/'

# IntelliJ IDEAを設定するユーザのリスト
users: []

# IntelliJ IDEAインストールのためにダウンロードしたファイルを保存するディレクトリ
intellij_download_dir: "{{ x_ansible_download_dir | default(ansible_facts.env.HOME + '/.ansible/tmp/downloads') }}"

# IntelliJ IDEAのダウンロード応答のタイムアウト(秒)
intellij_idea_download_timeout_seconds: 600

ユーザは以下のように設定されます:

users:
  - username: # Unixユーザー名
    intellij_group: # ユーザーのファイル/ディレクトリのUnixグループ(オプション - デフォルトはユーザー名)
    intellij_jdks:
      - name: # このJDKに使用する名前
        home: # JDKホームのパス
    # 新しいプロジェクトのデフォルトのJDK名。
    # 'intellij_jdks'を指定した場合は必須。
    # 'intellij_jdks'の一つと同じ名前である必要があります。
    intellij_default_jdk:
    intellij_disabled_plugins: # ~/.config/JetBrains/*Idea*/disabled_plugins.txtを参照
      - # プラグインID
    intellij_codestyles:
      # コードスタイルのリスト(各XMLの場所はURLまたはファイルシステムパスで指定可能)
      - name: # 名前(XMLファイルの/code_scheme/@nameと一致する必要があります)
        url: # コードスタイルのXMLをダウンロードするURL
      - name: # 名前(XMLファイルの/code_scheme/@nameと一致する必要があります)
        src: # コードスタイルのXMLファイルのパス(絶対または相対、相対パスはAnsibleのコピー方式と同じように評価されます)
        remote_src: # yes/no、リモートファイルシステムからコピーするかどうか(デフォルトはno)
    intellij_default_codestyle: # 名前(XMLファイルの/code_scheme/@nameと一致する必要があります)
    intellij_inspection_profiles:
      # 検査プロファイルのリスト(各XMLの場所はURLまたはファイルシステムパスで指定可能)
      - name: # 名前(XMLファイルの/profile/option[@name='myName']/@valueと一致する必要があります)
        url: # 検査プロファイルのXMLをダウンロードするURL
      - name: # 名前(XMLファイルの/profile/option[@name='myName']/@valueと一致する必要があります)
        src: # 検査プロファイルのXMLファイルのパス(絶対または相対、相対パスはAnsibleのコピー方式と同じように評価されます)
        remote_src: # yes/no、リモートファイルシステムからコピーするかどうか(デフォルトはno)
    intellij_default_inspection_profile: # 名前(XMLファイルの/profile/option[@name='myName']/@valueと一致する必要があります)
    intellij_plugins:
      - # インストールするプラグインのプラグインID
    # Ultimate Editionのみ: Ansibleマスター上のIntelliJライセンスキーの場所。
    # ライセンスキーは~/.config/JetBrains/*Idea*/idea.keyにあります。
    intellij_license_key_path: # 例: '/vagrant/idea.key'

警告: 追加プラグインをインストールする機能は内部のIntelliJ IDEA APIに依存しており、現時点では実験的と見なすべきです。

サポートされているIntelliJ IDEAのバージョン

以下のIntelliJ IDEAのバージョンは、追加の設定なしでサポートされます(他のバージョンは高级設定の指示に従ってください):

  • 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

高度な設定

以下のロール変数はIntelliJ IDEAのバージョンに依存します。このロールによって事前に設定されていないIntelliJ IDEAのバージョンを使用するには、以下の変数を設定してください:

# 再配布パッケージのSHA256サム
# つまり、Community Editionの場合はideaIC-{{ intellij_version }}.tar.gz
# または、Ultimate Editionの場合はideaIU-{{ intellij_version }}.tar.gz
intellij_redis_sha256sum: d1cd3f9fd650c00ba85181da6d66b4b80b8e48ce5f4f15b5f4dc67453e96a179

IntelliJプラグインID

JetBrainsはIntelliJプラグインIDをマーケットプレイスのウェブサイトで表示していません
(https://plugins.jetbrains.com/idea)。しかし、少しのJavaScriptを使用するとIDを取得するのは比較的簡単です。

  1. インストールしたいプラグインをJetBrains Marketplaceで検索し、その概要ページに移動します
    (例: https://plugins.jetbrains.com/plugin/12195-concise-assertj-optimizing-nitpicker-cajon-)。

  2. ブラウザのアドレスバーにjavascript:と入力します(Enterを押さないでください)。

    注: セキュリティ上の理由から、javascript:をアドレスバーに貼り付けることはできません(ブラウザはそれを許可しません)、そのためタイプする必要があります。

  3. 次のように入力した後にEnterを押します:

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

    これはURLのパスを変更するためにRegExを使用し、
    fetch API を用いてJetBrainsプラグインのREST APIにリクエストを送信します。その後、アラートにプラグインID(JSONレスポンスのxmlId)を表示します。

例プレイブック

最小限のプレイブック:

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

ユーザー固有の設定を持つプレイブック(デフォルトJDK、Maven、無効なプラグインとコードスタイル):

- 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

ロールファクト

このロールは他のロールで使用するための以下のAnsibleファクトをエクスポートします:

  • ansible_local.intellij.general.home

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

    • 例: jetbrains-idea-ce.desktop
  • ansible_local.intellij.general.desktop_file

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

    • 例: .config/JetBrains/IntelliJIdea2023.2
  • ansible_local.intellij.general.user_plugins_dir

    • 例: .local/share/JetBrains/IntelliJIdea2023.2

GantSignの他のロール

GantSignの他のロールは
Ansible Galaxyで見つけることができます。

開発とテスト

このプロジェクトは以下のツールを使用しています:

  • Molecule - テストシナリオのオーケストレーション
  • Testinfra - リモートの変更をテスト
  • pytest - テストフレームワーク
  • Tox - LintingとテストのためのPython仮想環境を管理
  • pip-tools - 依存関係を管理

Visual Studio Codeの
Dev Containerが提供されており、このロールの開発とテストに使用できます。

ライセンス

MIT

著者情報

John Freeman

GantSign Ltd.
会社番号: 06109112(イングランドに登録)

プロジェクトについて

Role for installing the IntelliJ IDEA IDE.

インストール
ansible-galaxy install gantsign.intellij
ライセンス
mit
ダウンロード
62k
所有者