Gitlab Runner удалил кеш (файлы / контейнер) - PullRequest
0 голосов
/ 12 апреля 2019

Моя "проблема" заключается в том, что когда я запускаю свой ci на моей удаленной док-машине, gitlab-runner покидает контейнер, который использовался там, без их удаления. Другое дело, что источники проекта также указываются при отображении в папке томов.

Может быть, у кого-то есть идеи, как я могу это изменить, что после запуска ci-pipe будут удалены контейнеры и исходные тексты проекта?

С наилучшими пожеланиями, Crush

stages:
- Build
- Testing
- Execute
- Publish
- CleanUp

build_cleanup:
    only:
        - master
    stage: Build
    script:
        - "dotnet clean"
        - (if  [ $(docker ps -a | grep $CONTAINER_NAME | cut -d " " -f1) ]; then echo $(docker rm -f $CONTAINER_NAME); else echo OK; fi;);
        - (if  [ $(docker volume ls -qf dangling=true) ]; then echo $(docker volume prune -f); else echo OK; fi;);
    when: on_failure

testing_cleanup:
    only:
        - master
    stage: Testing
    script:
        - "dotnet clean"
        - (if  [ $(docker ps -a | grep $CONTAINER_NAME | cut -d " " -f1) ]; then echo $(docker rm -f $CONTAINER_NAME); else echo OK; fi;);
        - (if  [ $(docker volume ls -qf dangling=true) ]; then echo $(docker volume prune -f); else echo OK; fi;);
    when: on_failure

excecute_cleanup:
    only:
        - master
    stage: Execute
    script:
        - "dotnet clean"
        - (if  [ $(docker ps -a | grep $CONTAINER_NAME | cut -d " " -f1) ]; then echo $(docker rm -f $CONTAINER_NAME); else echo OK; fi;);
        - (if  [ $(docker volume ls -qf dangling=true) ]; then echo $(docker volume prune -f); else echo OK; fi;);
    when: on_failure

publish_cleanup:
    only:
        - master
    stage: Publish
    script:
        - "dotnet clean"
        - (if  [ $(docker ps -a | grep $CONTAINER_NAME | cut -d " " -f1) ]; then echo $(docker rm -f $CONTAINER_NAME); else echo OK; fi;);
        - (if  [ $(docker volume ls -qf dangling=true) ]; then echo $(docker volume prune -f); else echo OK; fi;);
    when: on_failure

cleanup_jobs:
    only:
        - master
    stage: CleanUp
    script: 
        - "dotnet clean"
        - (if  [ $(docker ps -a | grep $CONTAINER_NAME | cut -d " " -f1) ]; then echo $(docker rm -f $CONTAINER_NAME); else echo OK; fi;);
        - (if  [ $(docker volume ls -qf dangling=true) ]; then echo $(docker volume prune -f); else echo OK; fi;);
    when: always

Это моя текущая конфигурация.

1 Ответ

0 голосов
/ 12 апреля 2019

Иногда лучше оставить его там, потому что он выйдет из кеша сборки Docker, и в следующий раз, когда образ строится, он может быть быстрее.Однако в Docker есть команда docker system df, которая сообщает вам, сколько пространства занимает Docker на вашей машине.

Если вы хотите удалить все ( НЕ ИСПОЛЬЗУЕМЫЕ В настоящее время образы докеров, тома, контейнеры ...), просто почистите машину с помощью

docker system prune --volumes --all --force

Идеальное место, гдепоставить эту команду с gitlab-ci находится в after_script

job:
  script:
    - docker build .
  after_script:
    - docker system prune --volumes --all --force
...