Commit ce208fc6 by Will Daly

Merge pull request #440 from edx/will/jenkins-master-updates

Updates to Jenkins master
parents 059696ca 35aed245
...@@ -6,5 +6,7 @@ ...@@ -6,5 +6,7 @@
hosts: jenkins_master hosts: jenkins_master
sudo: True sudo: True
gather_facts: True gather_facts: True
vars:
COMMON_DATA_DIR: "/mnt"
roles: roles:
- jenkins_master - jenkins_master
...@@ -4,8 +4,9 @@ jenkins_group: "edx" ...@@ -4,8 +4,9 @@ jenkins_group: "edx"
jenkins_server_name: "jenkins.testeng.edx.org" jenkins_server_name: "jenkins.testeng.edx.org"
jenkins_port: 8080 jenkins_port: 8080
jenkins_deb_url: "http://pkg.jenkins-ci.org/debian/binary/jenkins_1.530_all.deb" jenkins_version: 1.538
jenkins_deb: "jenkins_1.530_all.deb" jenkins_deb_url: "http://pkg.jenkins-ci.org/debian/binary/jenkins_{{ jenkins_version }}_all.deb"
jenkins_deb: "jenkins_{{ jenkins_version }}_all.deb"
jenkins_plugins: jenkins_plugins:
- { name: "build-name-setter", version: "1.3" } - { name: "build-name-setter", version: "1.3" }
...@@ -13,6 +14,7 @@ jenkins_plugins: ...@@ -13,6 +14,7 @@ jenkins_plugins:
- { name: "build-timeout", version: "1.11" } - { name: "build-timeout", version: "1.11" }
- { name: "cobertura", version: "1.9.2" } - { name: "cobertura", version: "1.9.2" }
- { name: "copyartifact", version: "1.28" } - { name: "copyartifact", version: "1.28" }
- { name: "copy-to-slave", version: "1.4.3" }
- { name: "credentials", version: "1.8.3" } - { name: "credentials", version: "1.8.3" }
- { name: "dashboard-view", version: "2.9.1" } - { name: "dashboard-view", version: "2.9.1" }
- { name: "ec2", version: "1.19" } - { name: "ec2", version: "1.19" }
...@@ -23,12 +25,14 @@ jenkins_plugins: ...@@ -23,12 +25,14 @@ jenkins_plugins:
- { name: "javadoc", version: "1.1" } - { name: "javadoc", version: "1.1" }
- { name: "jobConfigHistory", version: "2.4" } - { name: "jobConfigHistory", version: "2.4" }
- { name: "jquery", version: "1.7.2-1" } - { name: "jquery", version: "1.7.2-1" }
- { name: "mailer", version: "1.5" }
- { name: "nested-view", version: "1.10" } - { name: "nested-view", version: "1.10" }
- { name: "next-build-number", version: "1.0" } - { name: "next-build-number", version: "1.0" }
- { name: "notification", version: "1.5" } - { name: "notification", version: "1.5" }
- { name: "pam-auth", version: "1.0" } - { name: "pam-auth", version: "1.0" }
- { name: "parameterized-trigger", version: "2.20" } - { name: "parameterized-trigger", version: "2.20" }
- { name: "postbuild-task", version: "1.8" } - { name: "postbuild-task", version: "1.8" }
- { name: "sauce-ondemand", version: "1.61" }
- { name: "s3", version: "0.5" } - { name: "s3", version: "0.5" }
- { name: "ssh-agent", version: "1.3" } - { name: "ssh-agent", version: "1.3" }
- { name: "ssh-credentials", version: "1.5.1" } - { name: "ssh-credentials", version: "1.5.1" }
...@@ -55,7 +59,7 @@ jenkins_custom_plugins: ...@@ -55,7 +59,7 @@ jenkins_custom_plugins:
- { repo_name: "git-plugin", - { repo_name: "git-plugin",
repo_url: "https://github.com/edx/git-plugin.git", repo_url: "https://github.com/edx/git-plugin.git",
package: "git.hpi", package: "git.hpi",
version: "4c2fb3517ca11b04dfc06c714530f885698fcfb7" } version: "4dc0c5ce7d38855d0ab0d9cef9cd3325917d748b" }
jenkins_debian_pkgs: jenkins_debian_pkgs:
- openjdk-7-jdk - openjdk-7-jdk
......
...@@ -7,56 +7,61 @@ ...@@ -7,56 +7,61 @@
tags: tags:
- jenkins - jenkins
- name: jenkins_master | Create jenkins group - name: jenkins_master | create jenkins group
group: name={{ jenkins_group }} state=present group: name={{ jenkins_group }} state=present
- name: jenkins_master | Add the jenkins user to the group - name: jenkins_master | add the jenkins user to the group
user: name={{ jenkins_user }} append=yes groups={{ jenkins_group }} user: name={{ jenkins_user }} append=yes groups={{ jenkins_group }}
- name: jenkins_master | Download Jenkins package # Should be resolved in the next release, but until then we need to do this
# https://issues.jenkins-ci.org/browse/JENKINS-20407
- name: jenkins_master | workaround for JENKINS-20407
command: "mkdir -p /var/run/jenkins"
- name: jenkins_master | download Jenkins package
get_url: url="{{ jenkins_deb_url }}" dest="/tmp/{{ jenkins_deb }}" get_url: url="{{ jenkins_deb_url }}" dest="/tmp/{{ jenkins_deb }}"
- name: jenkins_master | Install Jenkins package - name: jenkins_master | install Jenkins package
command: dpkg -i --force-depends "/tmp/{{ jenkins_deb }}" command: dpkg -i --force-depends "/tmp/{{ jenkins_deb }}"
- name: jenkins_master | Stop Jenkins - name: jenkins_master | stop Jenkins
service: name=jenkins state=stopped service: name=jenkins state=stopped
# Move /var/lib/jenkins to Jenkins home (on the EBS) # Move /var/lib/jenkins to Jenkins home (on the EBS)
- name: jenkins_master | Move /var/lib/jenkins - name: jenkins_master | move /var/lib/jenkins
command: mv /var/lib/jenkins {{ jenkins_home }} command: mv /var/lib/jenkins {{ jenkins_home }}
creates={{ jenkins_home }} creates={{ jenkins_home }}
- name: jenkins_master | Set owner for Jenkins home - name: jenkins_master | set owner for Jenkins home
file: path={{ jenkins_home }} recurse=yes state=directory file: path={{ jenkins_home }} recurse=yes state=directory
owner={{ jenkins_user }} group={{ jenkins_group }} owner={{ jenkins_user }} group={{ jenkins_group }}
# Symlink /var/lib/jenkins to {{ COMMON_DATA_DIR }}/jenkins # Symlink /var/lib/jenkins to {{ COMMON_DATA_DIR }}/jenkins
# since Jenkins will expect its files to be in /var/lib/jenkins # since Jenkins will expect its files to be in /var/lib/jenkins
- name: jenkins_master | Symlink /var/lib/jenkins - name: jenkins_master | symlink /var/lib/jenkins
file: src={{ jenkins_home }} dest=/var/lib/jenkins state=link file: src={{ jenkins_home }} dest=/var/lib/jenkins state=link
owner={{ jenkins_user }} group={{ jenkins_group }} owner={{ jenkins_user }} group={{ jenkins_group }}
notify: notify:
- jenkins_master | restart Jenkins - jenkins_master | restart Jenkins
- name: jenkins_master | Make plugins directory - name: jenkins_master | make plugins directory
sudo_user: jenkins sudo_user: jenkins
shell: mkdir -p {{ jenkins_home }}/plugins shell: mkdir -p {{ jenkins_home }}/plugins
# We first download the plugins to a temp directory and include # We first download the plugins to a temp directory and include
# the version in the file name. That way, if we increment # the version in the file name. That way, if we increment
# the version, the plugin will be updated in Jenkins # the version, the plugin will be updated in Jenkins
- name: jenkins_master | Download Jenkins plugins - name: jenkins_master | download Jenkins plugins
get_url: url=http://updates.jenkins-ci.org/download/plugins/${item.name}/${item.version}/${item.name}.hpi get_url: url=http://updates.jenkins-ci.org/download/plugins/{{ item.name }}/{{ item.version }}/{{ item.name }}.hpi
dest=/tmp/${item.name}_${item.version} dest=/tmp/{{ item.name }}_{{ item.version }}
with_items: "{{ jenkins_plugins }}" with_items: "{{ jenkins_plugins }}"
- name: jenkins_master | Install Jenkins plugins - name: jenkins_master | install Jenkins plugins
command: cp /tmp/${item.name}_${item.version} {{ jenkins_home }}/plugins/${item.name}.hpi command: cp /tmp/{{ item.name }}_{{ item.version }} {{ jenkins_home }}/plugins/{{ item.name }}.hpi
with_items: "{{ jenkins_plugins }}" with_items: "{{ jenkins_plugins }}"
- name: jenkins_master | Set Jenkins plugin permissions - name: jenkins_master | set Jenkins plugin permissions
file: path={{ jenkins_home }}/plugins/${item.name}.hpi file: path={{ jenkins_home }}/plugins/{{ item.name }}.hpi
owner={{ jenkins_user }} group={{ jenkins_group }} mode=700 owner={{ jenkins_user }} group={{ jenkins_group }} mode=700
with_items: "{{ jenkins_plugins }}" with_items: "{{ jenkins_plugins }}"
notify: notify:
...@@ -66,23 +71,23 @@ ...@@ -66,23 +71,23 @@
# certain issues. If these changes get merged # certain issues. If these changes get merged
# upstream, we may be able to use the regular plugin install process. # upstream, we may be able to use the regular plugin install process.
# Until then, we compile and install the forks ourselves. # Until then, we compile and install the forks ourselves.
- name: jenkins_master | Checkout custom plugin repo - name: jenkins_master | checkout custom plugin repo
git: repo=${item.repo_url} dest=/tmp/${item.repo_name} version=${item.version} git: repo={{ item.repo_url }} dest=/tmp/{{ item.repo_name }} version={{ item.version }}
with_items: "{{ jenkins_custom_plugins }}" with_items: "{{ jenkins_custom_plugins }}"
- name: jenkins_master | Compile custom plugins - name: jenkins_master | compile custom plugins
command: mvn -Dmaven.test.skip=true install chdir=/tmp/${item.repo_name} command: mvn -Dmaven.test.skip=true install chdir=/tmp/{{ item.repo_name }}
with_items: "{{ jenkins_custom_plugins }}" with_items: "{{ jenkins_custom_plugins }}"
- name: jenkins_master | Install custom plugins - name: jenkins_master | install custom plugins
command: mv /tmp/${item.repo_name}/target/${item.package} command: mv /tmp/{{ item.repo_name }}/target/{{ item.package }}
{{ jenkins_home }}/plugins/${item.package} {{ jenkins_home }}/plugins/{{ item.package }}
with_items: "{{ jenkins_custom_plugins }}" with_items: "{{ jenkins_custom_plugins }}"
notify: notify:
- jenkins_master | restart Jenkins - jenkins_master | restart Jenkins
- name: jenkins_master | Set custom plugin permissions - name: jenkins_master | set custom plugin permissions
file: path={{ jenkins_home }}/plugins/${item.package} file: path={{ jenkins_home }}/plugins/{{ item.package }}
owner={{ jenkins_user }} group={{ jenkins_group }} mode=700 owner={{ jenkins_user }} group={{ jenkins_group }} mode=700
with_items: "{{ jenkins_custom_plugins }}" with_items: "{{ jenkins_custom_plugins }}"
...@@ -91,12 +96,12 @@ ...@@ -91,12 +96,12 @@
# Jenkins will overwrite updated plugins with its built-in version # Jenkins will overwrite updated plugins with its built-in version
# unless we create a ".pinned" file for the plugin. # unless we create a ".pinned" file for the plugin.
# See https://issues.jenkins-ci.org/browse/JENKINS-13129 # See https://issues.jenkins-ci.org/browse/JENKINS-13129
- name: jenkins_master | Create plugin pin files - name: jenkins_master | create plugin pin files
command: touch {{ jenkins_home }}/plugins/${item}.jpi.pinned command: touch {{ jenkins_home }}/plugins/{{ item }}.jpi.pinned
creates={{ jenkins_home }}/plugins/${item}.jpi.pinned creates={{ jenkins_home }}/plugins/{{ item }}.jpi.pinned
with_items: "{{ jenkins_bundled_plugins }}" with_items: "{{ jenkins_bundled_plugins }}"
- name: jenkins_master | Setup nginix vhost - name: jenkins_master | setup nginix vhost
template: template:
src=etc/nginx/sites-available/jenkins.j2 src=etc/nginx/sites-available/jenkins.j2
dest=/etc/nginx/sites-available/jenkins dest=/etc/nginx/sites-available/jenkins
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment