David Caro has uploaded a new change for review.

Change subject: Added slave cleanup
......................................................................

Added slave cleanup

That will make all the jobs that have yaml, to cleanup as much as possible
before starting, to avoid the last disk space issues.

Change-Id: I7575d38367008f9d9e1eaeaedc7f639d95e5b723
Signed-off-by: David Caro <dcaro...@redhat.com>
---
A jobs/confs/shell-scripts/cleanup_slave.sh
A jobs/confs/yaml/builders/cleanup.yaml
M jobs/confs/yaml/templates/create-rpms_mock.yaml
M jobs/confs/yaml/templates/engine-upgrade-db.yaml
M jobs/confs/yaml/templates/install-rpm-sanity.yaml
M jobs/confs/yaml/templates/ovirt-node-job-templates.yaml
M jobs/confs/yaml/templates/standard-stage.yaml
7 files changed, 190 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/jenkins refs/changes/77/37977/1

diff --git a/jobs/confs/shell-scripts/cleanup_slave.sh 
b/jobs/confs/shell-scripts/cleanup_slave.sh
new file mode 100644
index 0000000..c2a8d71
--- /dev/null
+++ b/jobs/confs/shell-scripts/cleanup_slave.sh
@@ -0,0 +1,178 @@
+#!/bin/bash -e
+echo "shell-scripts/cleanup_slave.sh"
+
+WORKSPACE="${WORKSPACE?}"
+
+
+umount_everyhting_inside() {
+    local mydir="${1?}"
+    local res=0
+    local inner_dirs=(
+        $(mount | awk '{ print $3 }' | egrep "^$mydir" | sort -r)
+    )
+    local inner_dir
+    for inner_dir in "${inner_dirs[@]}"; do
+        sudo umount "$inner_dir" \
+        && echo "    Umounted $inner_dir" \
+        || {
+            res=1
+            echo "    FAILED to umount $inner_dir"
+        }
+    done
+    return $res
+}
+
+
+safe_remove() {
+    local dir="${1?}"
+    [[ -e "$dir" ]] || return 0
+    if [[ -d "$dir" ]]; then
+        umount_everyhting_inside "$dir" \
+        || return 1
+        sudo rm -Rf "$dir"
+    else
+        sudo rm -f "$dir"
+    fi
+    return 0
+}
+
+
+cleanup_home() {
+    local dir
+    for dir in /home/*; do
+        if ! grep -q "$dir" /etc/passwd; then
+            echo "    Cleaning up non-user home dir $dir"
+            safe_remove "$dir"
+        fi
+    done
+}
+
+
+cleanup_var() {
+    local res=0
+    local dir
+    echo "Cleaning up /var/tmp"
+    for dir in /var/tmp/*; do
+        safe_remove "$dir" \
+        || {
+            echo "    Error cleaning up $dir, skipping"
+            res=1
+            continue
+        }
+    done
+    echo "done"
+    return $res
+}
+
+
+cleanup_postgres() {
+    local db dbs
+    echo "Cleaning up postgres databases"
+    if ! [[ -e /var/lib/pgsql ]]; then
+        echo "    Postgres installation not found, skipping"
+        return 0
+    fi
+    pushd /tmp
+    psql="sudo -u postgres psql"
+    dbs=(
+        $($psql -c "\l" \
+          | grep engine \
+          | cut -d '|' -f1)
+    )
+    for db in "${dbs[@]}"; do
+        echo "    $db"
+        $psql -c "DROP DATABASE $db;"
+    done
+    popd
+    echo "done"
+    return 0
+}
+
+
+cleanup_logs() {
+    echo "Emptying some common logs"
+    local log empty_logfiles remove_logfiles
+    empty_logfiles=(
+        /var/log/wtmp
+    )
+    remove_logfiles=(
+        /var/log/messages-*
+        /var/log/secure-*
+    )
+    for log in "${empty_logfiles[@]}"; do
+        [[ -f "$log" ]] \
+            && sudo bash -c "> $log" \
+            && echo "    $log"
+    done
+    for log in "${remove_logfiles[@]}"; do
+        [[ -f "$log" ]] \
+            && safe_remove "$log" \
+            && echo "    $log"
+    done
+    sudo dmesg -C
+    echo "Done"
+    return 0
+}
+
+cleanup_journal() {
+    local dir
+    echo "Cleaning up journal logs (if any)"
+    if ! sudo service systemd-journald status &>/dev/null; then
+        echo "  journald not running, skipping"
+        return 0
+    fi
+    # Flush logs
+    sudo systemctl kill --kill-who=main --signal=SIGUSR1 
systemd-journald.service
+    for dir in /var/log/journal/*; do
+        safe_remove "$dir"
+    done
+    # force log reattach
+    sudo service systemd-journald restart
+}
+
+
+cleanup_workspaces() {
+    local cur_workspace="${1?}"
+    local res=0
+    local base_workspace workspace
+    base_workspace=~jenkins/workspace
+    for workspace in $base_workspace/*; do
+        [[ -d "$workspace" ]] || continue
+        [[ "$cur_workspace" =~ ^$workspace ]] && continue
+        echo "    $workspace"
+        safe_remove "$workspace" \
+        || {
+            echo "    Failed to remove $workspace, skipping"
+            res=1
+            continue
+        }
+    done
+    return $res
+}
+
+main() {
+    local workspace="${1?}"
+    echo "###################################################################"
+    echo "#    Cleaning up slave                                            #"
+    echo "###################################################################"
+    sudo df -h || :
+    echo "---------------------------------------------------------------"
+    sudo du -hs /* 2>/dev/null || :
+    echo "---------------------------------------------------------------"
+    cleanup_postgres || :
+    cleanup_journal || :
+    cleanup_var || :
+    cleanup_logs || :
+    cleanup_workspaces "$workspace" || :
+    cleanup_home || :
+    echo "---------------------------------------------------------------"
+    sudo df -h || :
+    echo "---------------------------------------------------------------"
+    sudo du -hs /* 2>/dev/null || :
+    echo "###################################################################"
+    echo "#    Slave cleanup done                                           #"
+    echo "###################################################################"
+}
+
+
+main "$WORKSPACE"
diff --git a/jobs/confs/yaml/builders/cleanup.yaml 
b/jobs/confs/yaml/builders/cleanup.yaml
new file mode 100644
index 0000000..ed25bfb
--- /dev/null
+++ b/jobs/confs/yaml/builders/cleanup.yaml
@@ -0,0 +1,4 @@
+- builder:
+    name: cleanup-slave
+    builders:
+        - shell: !include-raw shell-scripts/cleanup_slave.sh
diff --git a/jobs/confs/yaml/templates/create-rpms_mock.yaml 
b/jobs/confs/yaml/templates/create-rpms_mock.yaml
index b448212..389474c 100644
--- a/jobs/confs/yaml/templates/create-rpms_mock.yaml
+++ b/jobs/confs/yaml/templates/create-rpms_mock.yaml
@@ -13,6 +13,7 @@
           project: '{project}'
           branch: '{branch}'
     builders:
+      - cleanup-slave
       - mock-{mock-build-type}:
           project: '{project}'
           distro: '{distro}'
@@ -46,6 +47,7 @@
           branch: '{branch}'
           files: 'specs/{subproject}/.*'
     builders:
+      - cleanup-slave
       - mock-{mock-build-type}-releng:
           project: '{project}'
           subproject: '{subproject}'
diff --git a/jobs/confs/yaml/templates/engine-upgrade-db.yaml 
b/jobs/confs/yaml/templates/engine-upgrade-db.yaml
index ee38720..2a78425 100644
--- a/jobs/confs/yaml/templates/engine-upgrade-db.yaml
+++ b/jobs/confs/yaml/templates/engine-upgrade-db.yaml
@@ -41,6 +41,7 @@
           files: '(.*/)?packaging/dbscripts/.*'
     builders:
       - whitelist
+      - cleanup-slave
       - ovirt-engine_upgrade-db:
           test-branch: '{test-branch}'
           action: '{action}'
diff --git a/jobs/confs/yaml/templates/install-rpm-sanity.yaml 
b/jobs/confs/yaml/templates/install-rpm-sanity.yaml
index 129b90c..2a2c761 100644
--- a/jobs/confs/yaml/templates/install-rpm-sanity.yaml
+++ b/jobs/confs/yaml/templates/install-rpm-sanity.yaml
@@ -13,6 +13,7 @@
           branch: '{branch}'
           files: '{trigger-files}'
     builders:
+      - cleanup-slave
       - mock-{mock-build-type}-install:
           project: '{project}'
           distro: '{distro}'
diff --git a/jobs/confs/yaml/templates/ovirt-node-job-templates.yaml 
b/jobs/confs/yaml/templates/ovirt-node-job-templates.yaml
index 593c68c..1f48eb0 100644
--- a/jobs/confs/yaml/templates/ovirt-node-job-templates.yaml
+++ b/jobs/confs/yaml/templates/ovirt-node-job-templates.yaml
@@ -1,12 +1,10 @@
-##############################################################################
-###   Job Templates
-##############################################################################
 - job-template:
     name: 'ovirt-node_{version}_create-iso-{distro}_{trigger}'
     node : '{distro}'
     builders :
-          - ovirt-node_create-iso:
-              distro: '{distro}'
+      - cleanup-slave
+      - ovirt-node_create-iso:
+          distro: '{distro}'
     scm :
           - ovirt-node
           - ovirt-node-iso
diff --git a/jobs/confs/yaml/templates/standard-stage.yaml 
b/jobs/confs/yaml/templates/standard-stage.yaml
index 9b8943d..9c7b865 100644
--- a/jobs/confs/yaml/templates/standard-stage.yaml
+++ b/jobs/confs/yaml/templates/standard-stage.yaml
@@ -13,6 +13,7 @@
           project: '{project}'
           branch: '{branch}'
     builders:
+      - cleanup-slave
       - '{stage}_builder':
           project: '{project}'
           distro: '{distro}'


-- 
To view, visit http://gerrit.ovirt.org/37977
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7575d38367008f9d9e1eaeaedc7f639d95e5b723
Gerrit-PatchSet: 1
Gerrit-Project: jenkins
Gerrit-Branch: master
Gerrit-Owner: David Caro <dcaro...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to