fernandrone.intellij

Ansible 角色:IntelliJ

测试 Ansible Galaxy 许可证

这个角色用于下载、安装和配置 IntelliJ IDEA IDE https://www.jetbrains.com/idea

虽然此角色可以安装 IntelliJ 插件,但如果您想有条件地安装特定插件,请查看我们的配套角色: fernandrone.intellij-plugins

要求

  • Ansible >= 2.8

  • Linux 发行版

    • Debian 家族

      • Ubuntu

        • Bionic (18.04)
        • Focal (20.04)
    • RedHat 家族

      • Rocky Linux

        • 8
    • macOS (Intel 或 M1)

    • 注意:其他版本可能有效,但未经过测试。

  • Java JDK

    • 需要安装 JDK 的源代码和 JDK。
    • 当使用 Java > 9 时,还需要安装 jmods。

    例如,使用 OpenJDK 11 和 CentOS 时需要以下内容:

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

角色变量

以下变量将改变此角色的行为(默认值如下所示):

# IntelliJ IDEA 版本号
intellij_version: '2021.2.3'

# 用于下载 IntelliJ IDEA 可再分发包的镜像地址
# 使用 HTTP,因为 https://github.com/ansible/ansible/issues/11579
intellij_mirror: 'http://download.jetbrains.com/idea'

# 安装的版本(社区版或终极版)
intellij_edition: community

# 设置为 'false',以跳过安装 IntelliJ IDEA,如果它已经安装(即使是与请求的版本不同)
intellij_force: true

# IntelliJ IDEA 发布版的基本安装目录
intellij_install_dir: /opt/idea/idea-{{ intellij_edition }}-{{ intellij_version }}

# 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 插件管理器 Web 服务的 URL
intellij_plugin_manager_url: 'https://plugins.jetbrains.com/pluginManager/'

# 用户列表,以为他们配置 IntelliJ IDEA
users: []

# 存储下载的 IntelliJ IDEA 安装文件的目录
intellij_download_dir: "{{ x_ansible_download_dir | default(ansible_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: # 请查看 ~/.*Idea*/config/disabled_plugins.txt
      - # 插件 ID
    intellij_codestyles:
      - name: # 名称(必须与 XML 文件 /code_scheme/@name 中的值匹配)
        url: # 下载 codestyles XML 的 URL
    intellij_default_codestyle: # 名称(必须与 XML 文件 /code_scheme/@name 中的值匹配)
    intellij_inspection_profiles:
      - name: # 名称(必须与 XML 文件 /profile/option[@name='myName']/@value 中的值匹配)
        url: # 下载检查配置文件 XML 的 URL
    intellij_default_inspection_profile: # 名称(必须与 XML 文件 /profile/option[@name='myName']/@value 中的值匹配)
    intellij_plugins:
      - # 要安装的插件的插件 ID
    # 仅限终极版:Ansible 主机上 IntelliJ 注册密钥的位置。
    # 您的注册密钥可以在 ~/.IntelliJIdea2017.1/config/idea.key 找到
    intellij_license_key_path: # 例如 '/vagrant/idea.key'

警告: 安装额外插件的功能依赖于内部 IntelliJ IDEA API,目前应被视为实验性。

支持的 IntelliJ IDEA 版本

以下版本的 IntelliJ IDEA 支持无需额外配置(其他版本请参阅高级配置说明):

  • 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 值
# 例如社区版的 ideaIC-{{ intellij_version }}.tar.gz
# 或终极版的 ideaIU-{{ intellij_version }}.tar.gz
intellij_redis_sha256sum: d1cd3f9fd650c00ba85181da6d66b4b80b8e48ce5f4f15b5f4dc67453e96a179

IntelliJ 插件 ID

您可以通过以下步骤获取可安装的 IntelliJ 插件的插件 ID 列表:

  1. 下载可用插件的 XML

    打开 IntelliJ,然后点击:

    文件 > 设置 > 插件 > 浏览库...
    

    这会自动将可用插件的 XML 文件保存在:

    ~/<intellij 用户目录>/config/plugins/availables.xml.

  2. 安装 XmlStarlet

    使用您发行版的标准包管理器安装 XmlStarlet

    例如,在 Ubuntu 上运行以下命令:

    sudo apt install xmlstarlet
    
  3. 提取插件名称和插件 ID

    在终端运行以下命令:

    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)
    

    这将生成一个两列的纯文本布局,左侧是插件名称,右侧是插件 ID;输出适合与 grep 配合使用。

示例剧本

最小剧本:

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

具有用户特定配置的剧本(默认 JDK、Maven、禁用插件和代码风格):

- hosts: servers
  roles:
    - role: 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

角色事实

此角色为其他角色导出了以下 Ansible 事实:

  • ansible_local.intellij.general.home

    • 例如:/opt/idea/idea-community-2016.2.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

    • 例如:.IdeaIC2016.2/config
  • ansible_local.intellij.general.user_plugins_dir

    • 例如:.IdeaIC2016.2/config/plugins

来自 GantSign 的更多角色

您可以在 Ansible Galaxy 上找到更多来自 GantSign 的角色。

开发与测试

该项目使用 Molecule 来辅助开发和测试;角色使用 Testinfrapytest 进行单元测试。

要进行开发或测试,您需要安装以下内容:

由于上述内容可能安装起来比较复杂,因此该项目包含 Molecule Wrapper。Molecule Wrapper 是一个 Shell 脚本,用于安装 Molecule 及其依赖项(Linux 除外),然后使用您传递的命令执行 Molecule。

要使用 Molecule Wrapper 测试该角色,请在项目根目录运行以下命令:

./moleculew test

注意:一些依赖项需要 sudo 权限进行安装。

许可证

MIT

作者信息

John Freeman

GantSign Ltd. 公司编号:06109112(注册于英格兰)

关于项目

Role for installing the IntelliJ IDEA IDE.

安装
ansible-galaxy install fernandrone.intellij
许可证
mit
下载
97
拥有者
YAML Engineer. Likes Go.