我正在尝试为我的项目实施CI / CD管道。我正在使用Ansible,Docker和jenkins。 SVN checkout,映像docker映像构建,将映像推送到Dockerhub,拉出和部署等计划在每个阶段都使用ansible角色完成。
我正在使用Maven构建工具。所以在这里我感到困惑,在从svn存储库中签出后,我需要使用ansible运行“ mvn clean install”。现在,我试图找到一个ansible模块。但是我没有得到一个有趣的模块。为此,是否有适用于maven的ansible模块,例如docker_image和svn?我如何使用ansible角色运行maven命令?
答案 0 :(得分:2)
如果找不到用于特定任务的模块,则有两个选择:
command
或shell
模块执行所需的行为。有些系统过于复杂,无法快速实现为可访问的模块,但是,使用其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)
我有类似的情况,我必须下载源代码(从 git)并将编译结果(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 }}"