Install private jenkins for CD jobs
[icn.git] / ci / roles / jenkins-config / tasks / jenkins_gerrit.yaml
diff --git a/ci/roles/jenkins-config/tasks/jenkins_gerrit.yaml b/ci/roles/jenkins-config/tasks/jenkins_gerrit.yaml
new file mode 100644 (file)
index 0000000..e19173e
--- /dev/null
@@ -0,0 +1,75 @@
+---
+- 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]