Hoe jenkins-probleem ‘Schijfruimte is te laag’ op te lossen?

Ik heb Jenkins geïmplementeerd op mijn CentOS-machine, Jenkinswerkte 3 dagen goed, maar gisteren was er een Disk space is too low. Only 1.019GB left.probleem.

Hoe kan ik dit probleem oplossen, het maakt mijn master urenlang offline?


Antwoord 1, autoriteit 100%

Je kunt de drempel gemakkelijk wijzigen vanuit de gebruikersinterface van jenkins (mijn versie is 1.651.3):

[]


Update: hoe zorg je voor veel schijfruimte

Deze functie is bedoeld om het werken op slaves met weinig vrije schijfruimte te voorkomen. Het verlagen van de drempel zou het feit niet oplossen dat sommige taken niet goed worden opgeruimd nadat ze zijn voltooid.

Afhankelijk van wat je aan het bouwen bent:

  1. Zorg ervoor dat u begrijpt wat de schijfuitvoer van uw build is – indien mogelijk – beperk de uitvoer alleen tot de taakwerkruimte. Gebruik de plug-in voor het opschonen van de werkruimteom de werkruimte op te schonen als stap na het bouwen.
  2. Als het proces enkele gegevens naar externe mappen moet schrijven, ruim ze dan handmatig op in de stappen na het bouwen.

Alternatief1– stel een nieuwe slave in per taak (gebruik spotslaves – er zijn veel plug-ins die kunnen worden geïntegreerd met verschillende cloudproviders om on-the-fly machines op aanvraag te leveren)

Alternatief2– voer de build uit in een container. Alles wordt weggegooid zodra de build is voltooid


Antwoord 2, autoriteit 74%

Naast bovenstaande oplossingen is er een meer “GEMEENSCHAPPELIJKE” manier – verwijder direct de grootste ruimtegebruiker van de Linux-machine. U kunt de onderstaande stappen volgen:

  1. Aanmelden bij Jenkins-machine (Putty)
  2. cd naar het Jenkins-installatiepad

Gebruik ls -lartom ook verborgen mappen weer te geven, normaal gesproken jenkin
installatie wordt in de .jenkins/ map geplaatst

[xxxxx ~]$ ls -lart

drwxrwxr-x 12 xxxx 4096 8 februari 02:08 .jenkins/

  1. lijst de mappenruimten

Gebruik df -hom schijfruimte op hoog niveau weer te geven

du -sh ./*/om het totale geheugen voor elke submap in het huidige pad weer te geven.

du -a /etc/ | sort -n -r | head -n 10geeft een lijst van top 10 mappen die schijfruimte in beslag nemen in /etc/

  1. Verwijder oude build of andere grote map

Normaal gesproken kan de map ./job/of de map ./workspace/de grootste map zijn. Ga alsjeblieft naar binnen en verwijder de basis die je nodig hebt (NIET!
hele map verwijderen).

rm -rf theFolderToDelete


Antwoord 3, autoriteit 23%

Je kunt de vermindering van schijfruimte beperken door de oude builds weg te gooien. Er is hiervoor een selectievakje in de projectconfiguratie.


Antwoord 4, autoriteit 9%

Dit is eigenlijk een legitieme vraag, dus ik begrijp de minpunten niet, misschien hoort het bij Superuser of Serverfault. Dit is een zachte waarschuwingsdrempel, geen harde limiet wanneer de schijf onvoldoende ruimte heeft.

Jenkins is hetzelfde. De conclusie is voor veel kleine projecten de systeemeigenschapgenaamd hudson.diagnosis.HudsonHomeDiskUsageChecker.freeSpaceThresholdkan worden verlaagd.

Door te zeggen dat ik het niet heb getest en er een disclaimer is

Geen compatibiliteitsgarantie

Over het algemeen zijn deze schakelaars vaak experimenteel van aard en kunnen ze zonder voorafgaande kennisgeving worden gewijzigd. Als je sommige van deze nuttig vindt, dien dan een ticket in om het naar de officiële functie te promoten.


Antwoord 5, autoriteit 9%

Ik heb hetzelfde probleem. Mijn jenkins-versie is 2.3 en de gebruikersinterface is iets anders. Zet het hier zodat het iemand kan helpen. Het verhogen van beide drempels voor schijfruimte naar 5 GB loste het probleem op.


Antwoord 6, autoriteit 3%

Om de vrije ruimte te controleren als Jenkins Job:

Parameters

  • FREE_SPACE: benodigde vrije ruimte in GB.

Vacature

#!/usr/bin/env bash
free_space="$(df -Ph . | awk 'NR==2 {print $4}')"
if [[ "${free_space}" = *G* ]]; then
  free_space_gb=${x/[^0-9]*/}
  if [[ ${free_space_gb} -lt ${FREE_SPACE} ]]; then
    echo "Warning! Low space: ${free_space}"
    exit 2
  fi
else
  echo "Warning! Unknown: ${free_space}"
  exit 1
fi
echo "Free space: ${free_space}"

Plug-ins

Beschrijving van build instellen

Acties na het bouwen

  • Reguliere uitdrukking: Free space: (.*)
  • Beschrijving: Free space: \1

  • Regelmatige uitdrukking voor mislukte builds: Warning! (.*)

  • Beschrijving voor mislukte builds: \1

Antwoord 7, autoriteit 3%

Ik heb een opruimtaak met de volgende bouwstappen. Je kunt het @daily of @weekly plannen.

  1. Execute system groovy scriptbouwstap om oude taken op te ruimen:
   import jenkins.model.Jenkins
    import hudson.model.Job
    BUILDS_TO_KEEP = 5
    for (job in Jenkins.instance.items) {
      println job.name
      def recent = job.builds.limit(BUILDS_TO_KEEP)
      for (build in job.builds) {
        if (!recent.contains(build)) {
          println "Preparing to delete: " + build
          build.delete()
        }
      }
    }

Je moet de plug-in Groovyhebben geïnstalleerd.

  1. Execute shellbouwstap om cachemappen op te schonen
rm -r ~/.gradle/
rm -r ~/.m2/
echo "Disk space"
du -h -s /

Antwoord 8

Voor mensen die niet weten waar de configuraties zijn, download de tmpcleaner van
https://updates.jenkins-ci.org/download/plugins/tmpcleaner/

Je krijgt hier een hpi-bestand. Ga naar Jenkins-> Beheer plug-ins-> Geavanceerd en upload dan het hpi-bestand hier en herstart jenkins

Je kunt direct een verschil zien als je naar Knooppunten beheren gaat.

Sinds mijn jenkins op een debian-server was geïnstalleerd, begreep ik de meeste antwoorden hierover niet, omdat ik geen /etc/default-map of jenkins-bestand kan vinden.
Als iemand weet waar de map /tmp is of hoe deze te configureren voor debian , laat het me dan weten in opmerkingen

Other episodes