mirror of https://github.com/apache/lucene.git
165 lines
4.0 KiB
YAML
165 lines
4.0 KiB
YAML
|
|
# spin up aws hardware
|
|
- hosts: localhost
|
|
gather_facts: false
|
|
tasks:
|
|
- name: Lookup default VPC
|
|
ec2_vpc_net_info:
|
|
region: "{{ region }}"
|
|
filters:
|
|
isDefault: true
|
|
register: vpc_info
|
|
|
|
- name: Create cloudformation stack
|
|
cloudformation:
|
|
stack_name: "{{ stack_name }}"
|
|
region: "{{ region }}"
|
|
template_body: "{{ lookup('template', 'cloudformation.yml.j2') }}"
|
|
|
|
- name: Gather instance details
|
|
ec2_instance_info:
|
|
region: "{{ region }}"
|
|
filters:
|
|
instance-state-name: ["pending", "running"]
|
|
"tag:aws:cloudformation:stack-name": "{{ stack_name }}"
|
|
register: ec2_instances
|
|
|
|
- name: Add instances to inventory
|
|
add_host:
|
|
name: "{{ item['tags']['ShortName'] }}"
|
|
ansible_host: "{{ item['public_ip_address'] }}"
|
|
ansible_user: "{{ user }}"
|
|
ansible_ssh_private_key_file: "{{ ssh_key }}"
|
|
args: "{{ item }}"
|
|
with_items: "{{ ec2_instances.instances }}"
|
|
|
|
- hosts: all
|
|
gather_facts: false
|
|
tasks:
|
|
- name: Wait for connection
|
|
wait_for_connection:
|
|
|
|
- name: Gather facts
|
|
setup:
|
|
|
|
- name: Configure kernel
|
|
command:
|
|
argv:
|
|
- grubby
|
|
- --remove-args=selinux_1 security=selinux quiet
|
|
- --args=mitigations=0 random.trust_cpu=1 loglevel=7 selinux=0
|
|
- --update-kernel=ALL
|
|
become: true
|
|
|
|
- name: Install packages
|
|
package:
|
|
name:
|
|
- git
|
|
become: true
|
|
|
|
- name: Disable noisy services
|
|
command:
|
|
cmd: "systemctl disable --now {{ item }}"
|
|
loop: "{{ disable_services }}"
|
|
failed_when: false
|
|
become: true
|
|
|
|
- name: Reboot machine
|
|
reboot:
|
|
become: true
|
|
|
|
- name: Download JDK
|
|
unarchive:
|
|
src: "{{ jdk_url }}"
|
|
dest: .
|
|
remote_src: true
|
|
|
|
- name: Configure JDK
|
|
blockinfile:
|
|
path: .bashrc
|
|
block: |
|
|
export JAVA_HOME=/home/{{ user }}/jdk-{{ jdk_version }}
|
|
export PATH=$JAVA_HOME/bin:$PATH
|
|
|
|
- name: Configure Gradle
|
|
blockinfile:
|
|
path: .gradle/gradle.properties
|
|
create: true
|
|
block: |
|
|
org.gradle.daemon=false
|
|
|
|
- name: Checkout main
|
|
git:
|
|
repo: "https://github.com/{{ (main_branch | split(':'))[0] }}/lucene.git"
|
|
version: "{{ (main_branch | split(':'))[1] }}"
|
|
dest: main
|
|
depth: 1
|
|
|
|
- name: Checkout patch
|
|
git:
|
|
repo: "https://github.com/{{ (patch_branch | split(':'))[0] }}/lucene.git"
|
|
version: "{{ (patch_branch | split(':'))[1] }}"
|
|
dest: patch
|
|
depth: 1
|
|
|
|
- name: Assemble Sources
|
|
command:
|
|
cmd: "{{ assemble_command }}"
|
|
chdir: "{{ item }}"
|
|
loop:
|
|
- main
|
|
- patch
|
|
|
|
- name: Locate benchmark jar
|
|
find:
|
|
paths: "{{ item }}/{{ jmh_jar_path }}"
|
|
pattern: "{{ jmh_jar_glob }}"
|
|
register: found_jmh_jars
|
|
loop:
|
|
- main
|
|
- patch
|
|
|
|
- name: Run benchmark
|
|
command:
|
|
cmd: "java -jar {{ jmh_jar }} -rf text -rff ~/{{ item }}.txt {{ jmh_args }}"
|
|
loop:
|
|
- main
|
|
- patch
|
|
vars:
|
|
jmh_jars: "{{ found_jmh_jars.results | selectattr('item', 'eq', item) | map(attribute='files') }}"
|
|
jmh_jar: "{{ jmh_jars | first | map(attribute='path') | first }}"
|
|
|
|
- name: Read main results
|
|
command:
|
|
cmd: "cat main.txt"
|
|
register: main_out
|
|
|
|
- name: Read patch results
|
|
command:
|
|
cmd: "cat patch.txt"
|
|
register: patch_out
|
|
|
|
- name: Write Report
|
|
copy:
|
|
dest: "build/{{ inventory_hostname }}.log"
|
|
content: |
|
|
|
|
{{ inventory_hostname }}: `{{ ansible_processor }}`
|
|
|
|
main
|
|
```
|
|
{{ main_out.stdout }}
|
|
```
|
|
patch
|
|
```
|
|
{{ patch_out.stdout }}
|
|
```
|
|
delegate_to: localhost
|
|
|
|
- hosts: localhost
|
|
gather_facts: false
|
|
tasks:
|
|
- name: Create combined report
|
|
shell:
|
|
cmd: "cat build/*.log > build/report.txt"
|