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 0000000000000000000000000000000000000000..2c49032f6a2b4e3e8c47b1885e5780f6d57a1742 --- /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 0000000000000000000000000000000000000000..50378b2522a7489883c21d7db66c1a48bced81dd --- /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 2e33942c7e30db45d2fb1a8adb0ac3d5a953141f..40375983ec25e807e9bbb9fb2dcdae35aaa17d6a 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 52dee99660fc5ce547c0af534b069de3ed001b0a..88d9cc09499b882342a293854313c6ca98826f77 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