Add the script for Jenkins setup
[icn.git] / ci / site_jenkins.yaml
diff --git a/ci/site_jenkins.yaml b/ci/site_jenkins.yaml
new file mode 100644 (file)
index 0000000..1510fc8
--- /dev/null
@@ -0,0 +1,89 @@
+- hosts: localhost
+  vars:
+    jenkins_hostname: "{{ ansible_default_ipv4.address }}"
+    jenkins_version: 2.192
+    jenkins_plugin_timeout: 360
+    jenkins_plugins:
+      - gerrit-trigger
+      - workflow-aggregator
+      - git
+  roles:
+    - role: geerlingguy.java
+      become: yes
+    - role: geerlingguy.jenkins
+      become: yes
+  tasks:
+    - name: restart jenkins to use new installed plugins
+      meta: flush_handlers
+
+    - name: Wait for Jenkins to start up before proceeding.
+      command: >
+        curl -D - --silent --max-time 5 http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix }}/cli/
+      args:
+        warn: false
+      register: result
+      until: >
+        (result.stdout.find("403 Forbidden") != -1)
+        or (result.stdout.find("200 OK") != -1)
+        and (result.stdout.find("Please wait while") == -1)
+      retries: "{{ jenkins_connection_retries | default(60) }}"
+      delay: "{{ jenkins_connection_delay | default(5) }}"
+      changed_when: false
+      check_mode: false
+
+    - name: create directory /var/lib/jenkins/.ssh
+      file:
+        path: /var/lib/jenkins/.ssh
+        owner: jenkins
+        group: jenkins
+        state: directory
+
+    - name: place gerrit ssh key
+      copy:
+        src: "{{ gerrit_key_path | default('gerrit.key') }}"
+        dest: /var/lib/jenkins/.ssh/gerrit.key
+        owner: jenkins
+        group: jenkins
+        mode: '0600'
+      tags: [gerrit]
+
+    - name: grant jenkins user sudo
+      copy:
+        content: "jenkins        ALL=(ALL)       NOPASSWD: ALL"
+        dest: /etc/sudoers.d/jenkins
+        owner: root
+        group: root
+        mode: '0660'
+      tags: [gerrit]
+
+    - name: add gerrit server
+      jenkins_script:
+        script: "{{lookup('file', 'gerrit.groovy')}}"
+        url: "http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix }}"
+        user: "{{ jenkins_admin_username }}"
+        password: "{{ jenkins_admin_password }}"
+        validate_certs: no
+      register: result
+      failed_when: "'Result: success\n' != result.output"
+      tags: [gerrit]
+
+    - name: Install python-pip
+      apt:
+        name: python-pip
+      tags: [jobs]
+
+    - name: Install python-jenkins and lxml(required by jenkins_job module)
+      pip:
+        name:
+          - python-jenkins
+          - lxml
+      tags: [jobs]
+
+    - name: Add pipeline job for ICN CI
+      jenkins_job:
+        name: icn_check
+        config: "{{lookup('file', 'icn_check.xml')}}"
+        url: "http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix }}"
+        user: "{{ jenkins_admin_username }}"
+        password: "{{ jenkins_admin_password }}"
+      tags: [jobs]