使用Ansible模块运行“ mvn clean install” maven命令

时间:2018-11-07 13:36:30

标签: maven docker ansible

我正在尝试为我的项目实施CI / CD管道。我正在使用Ansible,Docker和jenkins。 SVN checkout,映像docker映像构建,将映像推送到Dockerhub,拉出和部署等计划在每个阶段都使用ansible角色完成。

我正在使用Maven构建工具。所以在这里我感到困惑,在从svn存储库中签出后,我需要使用ansible运行“ mvn clean install”。现在,我试图找到一个ansible模块。但是我没有得到一个有趣的模块。为此,是否有适用于maven的ansible模块,例如docker_image和svn?我如何使用ansible角色运行maven命令?

3 个答案:

答案 0 :(得分:2)

如果找不到用于特定任务的模块,则有两个选择:

  1. 用Python编写自己的代码。将它们放在角色或剧本的“ library /”目录中。
  2. 使用commandshell模块执行所需的行为。

有些系统过于复杂,无法快速实现为可访问的模块,但是,使用其CLI通常非常容易。

答案 1 :(得分:1)

如果找不到适用于Maven的任何Ansible插件。您可以使用shell模块来执行此操作。 这是一个示例:

  - name: Running mvn clean
    shell: "mvn clean install"
    register: mvn_result

  - name: "mvn clean task output"
    debug:
     var: mvn_result

答案 2 :(得分:0)

我有类似的情况,我必须下载源代码(从 gi​​t)并将编译结果(Java jar)安装到本地 Maven 存储库中。

AFAIK 没有适用于 Maven 的 Ansible 模块,但使用 command-module 编写功能实际上非常简单。我使用以下任务,其中 Maven 仅在 repo 的本地克隆已更改时运行。

- name: "source code : download"
  register: source_code_clones
  git:
    repo: ssh://git@somewhere.invalid/projects/{{ item }}.git
    dest: "{{ repodir }}/{{ item }}"
    version: master
    depth: 1
  with_items:
  - project1
  - project2
  - project3

# - debug:
#     msg: "{{ item }}"
#   with_items: "{{ source_code_clones.results }}"

- name: "source code : local install"
  when: item.changed
  command: mvn --batch-mode --quiet install
  args:
     chdir: "{{ repodir }}/{{ item.item }}"
  with_items: "{{ source_code_clones.results }}"