| |
| /** |
| * Docker cleanup pipeline which can kill old containers (more than a day) and prune docker itself |
| * |
| * SALT_MASTER_URL |
| * SALT_MASTER_CREDENTIALS |
| * TEST_DATE_STRING - string representation of date which will be used for delete matching (ie. yesterday) |
| */ |
| common = new com.mirantis.mk.Common() |
| salt = new com.mirantis.mk.Salt() |
| jenkinsUtils = new com.mirantis.mk.JenkinsUtils() |
| def python = new com.mirantis.mk.Python() |
| |
| def pepperEnv = "pepperEnv" |
| timeout(time: 12, unit: 'HOURS') { |
| node{ |
| def saltMaster; |
| stage('Setup virtualenv for Pepper') { |
| python.setupPepperVirtualenv(pepperEnv, SALT_MASTER_URL, SALT_MASTER_CREDENTIALS) |
| } |
| stage("Clean old containers"){ |
| salt.cmdRun(pepperEnv, 'I@jenkins:slave', """ |
| docker ps --format='{{.ID}}' | xargs -n 1 -r docker inspect \\ |
| -f '{{.ID}} {{.State.Running}} {{.State.StartedAt}}' \\ |
| | awk '\$2 == "true" && \$3 <= "'\$(date -d '${TEST_DATE_STRING}' -Ins --utc \\ |
| | sed 's/+0000/Z/')'" { print \$1 }' \\ |
| | xargs -r docker rm -f |
| """, false) |
| } |
| stage("Run docker system prune"){ |
| salt.cmdRun(pepperEnv, 'I@jenkins:slave', "docker system prune --all --force", false) // dont verify the result |
| } |
| } |
| } |