86 lines
3.2 KiB
YAML
86 lines
3.2 KiB
YAML
|
---
|
||
|
- block:
|
||
|
# Handle plugins
|
||
|
# If Jenkins is installed or updated, wait for pulling the Jenkins CLI, assuming 10s should be sufficiant
|
||
|
- name: 120 seconds delay while starting Jenkins
|
||
|
wait_for: port={{ jenkins_http_port }} delay={{ jenkins_restart_delay }}
|
||
|
|
||
|
# Create Jenkins CLI destination directory
|
||
|
- name: "Create Jenkins CLI destination directory"
|
||
|
file: path={{ jenkins_dest }} state=directory
|
||
|
|
||
|
- name: Get Jenkins CLI
|
||
|
get_url: url=http://localhost:{{ jenkins_http_port }}/jnlpJars/jenkins-cli.jar dest={{ jenkins_cli_dest }} mode=0440
|
||
|
|
||
|
# Create the Jenkins administrative user password file
|
||
|
- name: Create the Jenkins administrative user password file
|
||
|
copy: content={{ jenkins_admin_pwd }} dest={{ jenkins_admin_user_pwd_file }} mode=600
|
||
|
|
||
|
- name: Install plugins without a specific version
|
||
|
jenkins_plugin: name="{{ item.key }}" params='{{ jenkins_access_params }}'
|
||
|
register: my_jenkins_plugin_unversioned
|
||
|
when: '"version" not in item.value'
|
||
|
with_dict: '{{ jenkins_plugins }}'
|
||
|
|
||
|
- name: Install plugins with a specific version
|
||
|
jenkins_plugin: name="{{ item.key }}" version="{{ item.value['version'] }}" params='{{ jenkins_access_params }}'
|
||
|
register: my_jenkins_plugin_versioned
|
||
|
when: '"version" in item.value'
|
||
|
with_dict: '{{ jenkins_plugins }}'
|
||
|
|
||
|
- name: Initiate the jenkins_restart_required fact
|
||
|
set_fact:
|
||
|
jenkins_restart_required: no
|
||
|
|
||
|
- name: Check if restart is required by any of the versioned plugins
|
||
|
set_fact:
|
||
|
jenkins_restart_required: yes
|
||
|
when: item is changed
|
||
|
with_items: '{{ my_jenkins_plugin_versioned.results }}'
|
||
|
|
||
|
- name: Check if restart is required by any of the unversioned plugins
|
||
|
set_fact:
|
||
|
jenkins_restart_required: yes
|
||
|
when: item is changed
|
||
|
with_items: '{{ my_jenkins_plugin_unversioned.results }}'
|
||
|
|
||
|
- name: Restart Jenkins if required
|
||
|
become_user: root
|
||
|
service: name=jenkins state=restarted
|
||
|
when: jenkins_restart_required
|
||
|
|
||
|
- name: Wait for Jenkins to start up
|
||
|
uri:
|
||
|
url: '{{ jenkins_local_url }}'
|
||
|
status_code: 200
|
||
|
timeout: 5
|
||
|
register: jenkins_service_status
|
||
|
# Keep trying for 5 mins in 5 sec intervals
|
||
|
retries: 60
|
||
|
delay: 5
|
||
|
until: >
|
||
|
'status' in jenkins_service_status and
|
||
|
jenkins_service_status['status'] == 200
|
||
|
when: jenkins_restart_required
|
||
|
|
||
|
- name: Reset the jenkins_restart_required fact
|
||
|
set_fact:
|
||
|
jenkins_restart_required: no
|
||
|
when: jenkins_restart_required
|
||
|
|
||
|
- name: Plugin pinning
|
||
|
jenkins_plugin: name="{{ item.key }}" state="{{ 'pinned' if item.value['pinned'] else 'unpinned'}}" params='{{ jenkins_access_params }}'
|
||
|
when: '"pinned" in item.value'
|
||
|
with_dict: '{{ jenkins_plugins }}'
|
||
|
|
||
|
- name: Plugin enabling
|
||
|
jenkins_plugin: name="{{ item.key }}" state="{{ 'enabled' if item.value['enabled'] else 'disabled'}}" params='{{ jenkins_access_params }}'
|
||
|
when: '"enabled" in item.value'
|
||
|
with_dict: '{{ jenkins_plugins }}'
|
||
|
|
||
|
become: True
|
||
|
become_user: '{{ jenkins_username }}'
|
||
|
when: jenkins_install
|
||
|
tags: [ 'jenkins', 'jenkins_plugins', 'jenkins_master' ]
|
||
|
|