0

我的“问题”是当我在远程 docker 机器上运行我的 ci 时,gitlab-runner 离开了在那里使用的容器而没有删除它们。另一件事是当您显示到卷文件夹时也会给出项目源。

有人可能有想法我可以如何更改它,容器和项目源将在 ci-pipeline 运行后被删除?

好的问候, 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

这是我目前的配置。

4

1 回答 1

1

有时最好把它留在那里,因为它会离开 Docker 构建缓存,并且下次构建映像时它可能会更快。但是,在 docker 中有一个命令docker system df可以告诉您 docker 在您的机器上消耗了多少空间。

如果您想删除所有内容(当前未使用的 docker 映像、卷、容器...),只需使用

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

使用 gitlab-ci 放置此命令的理想位置是after_script

job:
  script:
    - docker build .
  after_script:
    - docker system prune --volumes --all --force
于 2019-04-12T07:30:14.370 回答