From 160e434b6c44e2c8f70e8f31f9e10a89d52c8fe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Reis?= Date: Wed, 3 Oct 2018 03:55:27 +0100 Subject: [PATCH 1/3] ansible: increase MaxStartups for jenkins-workspace This is necessary when many workers running tests try to access the temp repo to download binaries simultaneously. --- ansible/roles/jenkins-workspace/handlers/main.yml | 8 ++++++++ ansible/roles/jenkins-workspace/tasks/main.yml | 7 +++++++ ansible/roles/jenkins-workspace/vars/main.yml | 13 +++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 ansible/roles/jenkins-workspace/handlers/main.yml create mode 100644 ansible/roles/jenkins-workspace/vars/main.yml diff --git a/ansible/roles/jenkins-workspace/handlers/main.yml b/ansible/roles/jenkins-workspace/handlers/main.yml new file mode 100644 index 000000000..537ceb6dd --- /dev/null +++ b/ansible/roles/jenkins-workspace/handlers/main.yml @@ -0,0 +1,8 @@ +--- + +# +# generic handlers for jenkins-workspace stuff +# + +- name: restart sshd + service: name="{{ sshd_service_name }}" state=restarted diff --git a/ansible/roles/jenkins-workspace/tasks/main.yml b/ansible/roles/jenkins-workspace/tasks/main.yml index fa4921157..4c034d0c9 100644 --- a/ansible/roles/jenkins-workspace/tasks/main.yml +++ b/ansible/roles/jenkins-workspace/tasks/main.yml @@ -80,3 +80,10 @@ owner: "binary_tmp" group: "binary_tmp" mode: 0755 + +- name: Increase the maximum number of connections trying to authenticate + notify: restart sshd + lineinfile: + line: "MaxStartups 100:30:150" + dest: "{{ ssh_config }}" + regexp: "MaxStartups" diff --git a/ansible/roles/jenkins-workspace/vars/main.yml b/ansible/roles/jenkins-workspace/vars/main.yml new file mode 100644 index 000000000..2392b769e --- /dev/null +++ b/ansible/roles/jenkins-workspace/vars/main.yml @@ -0,0 +1,13 @@ +--- + +# +# variables for jenkins-workspace +# + +ssh_config: /etc/ssh/sshd_config + +sshd_service_map: { + 'ubuntu1604': 'ssh', +} + +sshd_service_name: "{{ sshd_service_map[os]|default(sshd_service_map[os|stripversion])|default('sshd') }}" From c0a483f2fd5f35fd09f775de76d5f055f69eaec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Reis?= Date: Wed, 3 Oct 2018 03:57:17 +0100 Subject: [PATCH 2/3] ansible: automatic clean-up of binary_tmp repo --- .../jenkins-workspace/files/clean_binary_tmp.sh | 16 ++++++++++++++++ ansible/roles/jenkins-workspace/tasks/main.yml | 14 ++++++++++++++ 2 files changed, 30 insertions(+) create mode 100755 ansible/roles/jenkins-workspace/files/clean_binary_tmp.sh diff --git a/ansible/roles/jenkins-workspace/files/clean_binary_tmp.sh b/ansible/roles/jenkins-workspace/files/clean_binary_tmp.sh new file mode 100755 index 000000000..e1d97dec8 --- /dev/null +++ b/ansible/roles/jenkins-workspace/files/clean_binary_tmp.sh @@ -0,0 +1,16 @@ +#!/bin/bash -ex + +cd ~binary_tmp/binary_tmp.git +(echo; date) >> ~binary_tmp/clean_binary_tmp.log + +git fetch origin +master:master + +for b in $(git branch | sed /\*/d); do + if [ -z "$(git log -1 --since='4 weeks ago' -s $b)" ]; then + (git branch -D $b || true) |& tee -a ~binary_tmp/clean_binary_tmp.log + fi +done + +git prune + +du -sh ~binary_tmp/binary_tmp.git/ >> ~binary_tmp/clean_binary_tmp.log diff --git a/ansible/roles/jenkins-workspace/tasks/main.yml b/ansible/roles/jenkins-workspace/tasks/main.yml index 4c034d0c9..454842f06 100644 --- a/ansible/roles/jenkins-workspace/tasks/main.yml +++ b/ansible/roles/jenkins-workspace/tasks/main.yml @@ -87,3 +87,17 @@ line: "MaxStartups 100:30:150" dest: "{{ ssh_config }}" regexp: "MaxStartups" + +- name: Create clean-up script + copy: + src: "{{ role_path }}/files/clean_binary_tmp.sh" + dest: "~binary_tmp/clean_binary_tmp.sh" + owner: "binary_tmp" + group: "binary_tmp" + mode: 0755 + +- name: Schedule clean-up script to run weekly + lineinfile: + line: "0 5 * * 0 binary_tmp ~binary_tmp/clean_binary_tmp.sh" + dest: "/etc/crontab" + regexp: "clean_binary_tmp" From 9b6f4b03aa2ff8f00c2c52a4056170a73b36a761 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Reis?= Date: Sat, 1 Dec 2018 01:29:26 +0000 Subject: [PATCH 3/3] fixup! ansible: automatic clean-up of binary_tmp repo --- .../roles/jenkins-workspace/files/clean_binary_tmp.sh | 5 +++-- ansible/roles/jenkins-workspace/tasks/main.yml | 9 +++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ansible/roles/jenkins-workspace/files/clean_binary_tmp.sh b/ansible/roles/jenkins-workspace/files/clean_binary_tmp.sh index e1d97dec8..c2e587922 100755 --- a/ansible/roles/jenkins-workspace/files/clean_binary_tmp.sh +++ b/ansible/roles/jenkins-workspace/files/clean_binary_tmp.sh @@ -2,12 +2,13 @@ cd ~binary_tmp/binary_tmp.git (echo; date) >> ~binary_tmp/clean_binary_tmp.log +du -sh ~binary_tmp/binary_tmp.git/ >> ~binary_tmp/clean_binary_tmp.log git fetch origin +master:master for b in $(git branch | sed /\*/d); do - if [ -z "$(git log -1 --since='4 weeks ago' -s $b)" ]; then - (git branch -D $b || true) |& tee -a ~binary_tmp/clean_binary_tmp.log + if [ -z "$(git log -1 --since='7 days ago' -s $b)" ]; then + (git branch -D $b |& tee -a ~binary_tmp/clean_binary_tmp.log) || true fi done diff --git a/ansible/roles/jenkins-workspace/tasks/main.yml b/ansible/roles/jenkins-workspace/tasks/main.yml index 454842f06..774ec66a1 100644 --- a/ansible/roles/jenkins-workspace/tasks/main.yml +++ b/ansible/roles/jenkins-workspace/tasks/main.yml @@ -96,8 +96,13 @@ group: "binary_tmp" mode: 0755 -- name: Schedule clean-up script to run weekly +- name: Schedule clean-up script to run daily lineinfile: - line: "0 5 * * 0 binary_tmp ~binary_tmp/clean_binary_tmp.sh" + line: "0 5 * * * binary_tmp ~binary_tmp/clean_binary_tmp.sh" dest: "/etc/crontab" regexp: "clean_binary_tmp" + +- name: Disable automatic garbage collection + command: "git config gc.auto 0" + args: + chdir: "~binary_tmp/binary_tmp.git/"