From 02f8873865ece1964f504e1c27577e0bebc51e06 Mon Sep 17 00:00:00 2001 From: Kristian Klausen <kristian@klausen.dk> Date: Sat, 15 May 2021 00:50:40 +0200 Subject: [PATCH] gitlab_runner: Add service to cleanup docker artifacts produced by the runner --- .../files/gitlab-runner-docker-cleanup.service | 7 +++++++ .../files/gitlab-runner-docker-cleanup.timer | 10 ++++++++++ roles/gitlab_runner/handlers/main.yml | 3 +++ roles/gitlab_runner/tasks/main.yml | 11 +++++++++++ 4 files changed, 31 insertions(+) create mode 100644 roles/gitlab_runner/files/gitlab-runner-docker-cleanup.service create mode 100644 roles/gitlab_runner/files/gitlab-runner-docker-cleanup.timer diff --git a/roles/gitlab_runner/files/gitlab-runner-docker-cleanup.service b/roles/gitlab_runner/files/gitlab-runner-docker-cleanup.service new file mode 100644 index 000000000..2c49032f6 --- /dev/null +++ b/roles/gitlab_runner/files/gitlab-runner-docker-cleanup.service @@ -0,0 +1,7 @@ +[Unit] +Description=Cleanup containers, images and volumes produced by GitLab Runner + +[Service] +Type=oneshot +ExecStart=docker system prune --force --filter label=com.gitlab.gitlab-runner.managed=true --volumes +ExecStart=docker image prune --all --force --filter until=168h diff --git a/roles/gitlab_runner/files/gitlab-runner-docker-cleanup.timer b/roles/gitlab_runner/files/gitlab-runner-docker-cleanup.timer new file mode 100644 index 000000000..50378b252 --- /dev/null +++ b/roles/gitlab_runner/files/gitlab-runner-docker-cleanup.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Run gitlab-runner-docker-cleanup.service daily + +[Timer] +OnCalendar=weekly +Persistent=true +RandomizedDelaySec=1d + +[Install] +WantedBy=timers.target diff --git a/roles/gitlab_runner/handlers/main.yml b/roles/gitlab_runner/handlers/main.yml index 2e33942c7..40375983e 100644 --- a/roles/gitlab_runner/handlers/main.yml +++ b/roles/gitlab_runner/handlers/main.yml @@ -4,5 +4,8 @@ - name: restart gitlab-runner service: name=gitlab-runner state=restarted +- name: restart gitlab-runner-docker-cleanup.timer + service: name=gitlab-runner-docker-cleanup.timer state=restarted daemon_reload=yes + - name: restart docker service: name=docker state=restarted diff --git a/roles/gitlab_runner/tasks/main.yml b/roles/gitlab_runner/tasks/main.yml index 52dee9966..88d9cc094 100644 --- a/roles/gitlab_runner/tasks/main.yml +++ b/roles/gitlab_runner/tasks/main.yml @@ -64,5 +64,16 @@ line: listen_address = ":{{ gitlab_runner_exporter_port }}" notify: restart gitlab-runner +- name: install gitlab-runner-docker-cleanup.{service,timer} + copy: src={{ item }} dest=/etc/systemd/system/{{ item }} owner=root group=root mode=0644 + loop: + - gitlab-runner-docker-cleanup.service + - gitlab-runner-docker-cleanup.timer + notify: + - restart gitlab-runner-docker-cleanup.timer + +- name: enable and start gitlab-runner-docker-cleanup.timer + systemd: name=gitlab-runner-docker-cleanup.timer state=started enabled=yes daemon_reload=yes + - name: enable and start gitlab runner service systemd: name=gitlab-runner state=started enabled=yes daemon_reload=yes -- GitLab