Commit 5cb1a4b8 by Ben Patterson

Refactor: clearer delineation across jenkins worker types.

parent 19912d40
......@@ -9,6 +9,7 @@
vars:
mongo_enable_journal: False
serial_count: 1
platform_worker: True
serial: "{{ serial_count }}"
vars_files:
- roles/edxapp/defaults/main.yml
......
---
dependencies:
- common
- jscover
# dependencies for edx-app jenkins worker:
- role: edxapp_common
when: not sitespeed_worker
when: platform_worker is defined
- role: rbenv
rbenv_user: "{{ jenkins_user }}"
rbenv_dir: "{{ jenkins_home }}"
rbenv_ruby_version: "{{ jenkins_ruby_version }}"
jenkins_worker: true
when: not sitespeed_worker
when: platform_worker is defined
# dependencies for sitespeed worker
- role: sitespeedio
when: sitespeed_worker
# dependencies for generic worker
- role: jscover
when: not sitespeed_worker
when: sitespeed_worker is defined
---
# jenkins
#
# Provision a Jenkins instance.
#
# Parameters:
# `jenkins_user`: jenkins
# `jenkins_home`: /var/lib/jenkins
# `jenkins_user_home`: /home/jenkins
# Provision a Jenkins worker instance.
# - When sitespeed_worker is set, only apply the configuraiton necessary for running sitespeed.io
# - When platform_worker is set, the resulting instance can run edx-platform tests
# All jenkins workers
- include: packer.yml
- include: system.yml
- include: python.yml
- include: ruby.yml
when: not sitespeed_worker
- include: java.yml
# only platform workers
- include: ruby.yml
when: platform_worker is defined
- include: python_platform_worker.yml
when: not sitespeed_worker
when: platform_worker is defined
# Run appropriate tests
- include: test.yml
- include: test_platform_worker.yml
when: not sitespeed_worker
when: platform_worker is defined
- include: test_sitespeed_worker.yml
when: sitespeed_worker
when: sitespeed_worker is defined
......@@ -4,12 +4,3 @@
# script, as well as the sitespeed cookie script.
- name: Install requests Python library
pip: name=requests state=present
# Install scripts requiring a GitHub OAuth token
- fail: OAuth token not defined
when: github_oauth_token is not defined
- name: Install Python GitHub post status script
template: src="github_post_status.py.j2" dest="/usr/local/bin/github_post_status.py"
owner=root group=root
mode=755
......@@ -38,7 +38,7 @@
template:
src=jenkins_env.j2 dest={{ jenkins_home }}/jenkins_env
owner={{ jenkins_user }} group={{ jenkins_group }} mode=0500
when: not sitespeed_worker
when: platform_worker is defined
# Need to add Github to known_hosts to avoid
# being prompted when using git through ssh
......@@ -63,10 +63,10 @@
- name: Create directory for pip-accel config file
file: path={{ jenkins_home }}/.pip-accel state=directory
owner={{ jenkins_user }} group={{ jenkins_group }} mode=0777 recurse=yes
when: not sitespeed_worker
when: platform_worker is defined
- name: Create pip-accel config file
template:
src=pip-accel.conf.j2 dest={{ jenkins_home }}/.pip-accel/pip-accel.conf
owner={{ jenkins_user }} group={{ jenkins_group }} mode=0664
when: not sitespeed_worker
when: platform_worker is defined
......@@ -9,12 +9,3 @@
- assert:
that:
- "'1.7.0' in java_version.stderr"
# The role is run with a github oauth token passed in
# as github_oauth_token var value.
# This test confirms that the key being used will work
- name: ensure github token works
shell:
"github_post_status.py edx edx-platform
dddac0b5dddf00c0950daf324e603e4935994954 success
https://jenkins.testeng.edx.org/ \"Tests Passed\" \"CI Test Results\""
......@@ -25,6 +25,16 @@
that:
- "'28.0' in firefox_version"
# The role is run with a github oauth token passed in
# as github_oauth_token var value.
# This test confirms that the key being used will work
- name: ensure github token works
shell:
"github_post_status.py edx edx-platform
dddac0b5dddf00c0950daf324e603e4935994954 success
https://jenkins.testeng.edx.org/ \"Tests Passed\" \"CI Test Results\""
# Verify the virtualenv tar is newly-built
- name: Get info on virtualenv tar
stat: path={{ jenkins_home }}/edx-venv_clean.tar.gz
......
{
"variables": {
"aws_access_key": "{{env `AWS_ACCESS_KEY_ID`}}",
"aws_secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}",
"github_oauth_token": "{{env `GITHUB_TOKEN`}}",
"playbook_remote_dir": "/tmp/packer-edx-playbooks",
"ami": "{{env `JENKINS_WORKER_AMI`}}"
},
"builders": [{
"type": "amazon-ebs",
"access_key": "{{user `aws_access_key`}}",
"secret_key": "{{user `aws_secret_key`}}",
"ami_name": "jenkins_worker-{{isotime | clean_ami_name}}",
"instance_type": "m3.large",
"region": "us-east-1",
"source_ami": "{{user `ami`}}",
"ssh_username": "ubuntu",
"ami_description": "jenkins worker",
"iam_instance_profile": "jenkins-worker",
"security_group_id": "sg-75af5e18"
}],
"provisioners": [{
"type": "shell",
"inline": ["rm -rf {{user `playbook_remote_dir`}}",
"mkdir {{user `playbook_remote_dir`}}"]
}, {
"type": "file",
"source": "../../playbooks/run_role.yml",
"destination": "{{user `playbook_remote_dir`}}/run_role.yml"
}, {
"type": "file",
"source": "../../playbooks/roles",
"destination": "{{user `playbook_remote_dir`}}/roles"
}, {
"type": "file",
"source": "../../playbooks/edx-east",
"destination": "{{user `playbook_remote_dir`}}/edx-east"
}, {
"type": "file",
"source": "../../requirements.txt",
"destination": "{{user `playbook_remote_dir`}}/requirements.txt"
}, {
"type": "shell",
"inline": ["sudo add-apt-repository ppa:git-core/ppa -y"]
}, {
"type": "shell",
"inline": ["sudo apt-get update"]
}, {
"type": "shell",
"inline": ["sudo apt-get -y install git-core"]
}, {
"type": "shell",
"inline": ["cd {{user `playbook_remote_dir`}}",
"virtualenv packer-venv",
". packer-venv/bin/activate",
"pip install -q -r requirements.txt",
"echo '[jenkins_worker]' > inventory.ini",
"echo 'localhost' >> inventory.ini",
"ansible-playbook run_role.yml -i inventory.ini -c local -e role=jenkins_worker -vvvv"]
}]
}
......@@ -56,6 +56,6 @@
"pip install -q -r requirements.txt",
"echo '[jenkins_worker]' > inventory.ini",
"echo 'localhost' >> inventory.ini",
"ansible-playbook edx-east/jenkins_worker_sitespeedio.yml -i inventory.ini -c local -e 'github_oauth_token={{ user `github_oauth_token` }}' -vvvv"]
"ansible-playbook edx-east/jenkins_worker_sitespeedio.yml -i inventory.ini -c local -vvvv"]
}]
}
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