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..c2e587922 --- /dev/null +++ b/ansible/roles/jenkins-workspace/files/clean_binary_tmp.sh @@ -0,0 +1,17 @@ +#!/bin/bash -ex + +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='7 days ago' -s $b)" ]; then + (git branch -D $b |& tee -a ~binary_tmp/clean_binary_tmp.log) || true + 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..774ec66a1 100644 --- a/ansible/roles/jenkins-workspace/tasks/main.yml +++ b/ansible/roles/jenkins-workspace/tasks/main.yml @@ -87,3 +87,22 @@ 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 daily + lineinfile: + 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/"