Planlagte oppgaver og CI/CD

Skip to content

Scripts er nyttige, men enda nyttigere når de kjører av seg selv. I denne modulen ser vi på hvordan du kan sette opp automatisk kjøring av scripts, og hvordan CI/CD kan automatisere testing og utrulling av kode.

Cron (Linux)

Cron lar deg kjøre kommandoer og scripts automatisk etter en tidsplan:

# Rediger cron-tabellen
crontab -e

# Kjør backup-scriptet hver natt kl 02:00
0 2 * * * /home/admin/backup.sh

Formatet er: minutt time dag måned ukedag kommando

Felt Verdi Betydning
0 Minutt 0 På hele timen
2 Time 2 Klokken 02:00
* Alle dager Hver dag
* Alle måneder Hver måned
* Alle ukedager Mandag til søndag

Noen flere eksempler:

Cron-uttrykk Hva det betyr
*/5 * * * * Hvert 5. minutt
0 * * * * Hver hele time
0 8 * * 1-5 Kl 08:00 mandag til fredag
0 0 1 * * Første dag i hver måned, kl 00:00
@reboot Hver gang maskinen starter

Crontab Guru

Bruk crontab.guru for å bygge og teste cron-uttrykk. Du skriver inn et uttrykk og ser med en gang hva det betyr og når det neste kjøretidspunktet er.

Vanlige feil med cron

  • Feil sti: Cron kjører med et minimalt miljø. Bruk alltid fulle stier (f.eks. /usr/bin/python3 i stedet for bare python3).
  • Manglende rettigheter: Scriptet må være kjørbart (chmod +x).
  • Ingen output: Cron sender output til e-post som standard. Hvis du vil logge det, bruk >> /var/log/mittscript.log 2>&1 på slutten.

Task Scheduler (Windows)

Windows har sin egen versjon av cron. Du finner den ved å søke etter “Task Scheduler” i startmenyen. Der kan du opprette oppgaver som kjører scripts til bestemte tidspunkter, f.eks. ved oppstart eller hver dag kl 03:00.

Task Scheduler har et grafisk grensesnitt der du kan:

  • Velge en trigger (når oppgaven skal kjøre)
  • Velge en action (hva som skal kjøres)
  • Sette betingelser (f.eks. bare når PCen er på strøm)

Du kan også opprette oppgaver fra kommandolinjen med schtasks:

# Kjør et script hver dag kl 03:00
schtasks /create /tn "NattligBackup" /tr "C:\Scripts\backup.ps1" /sc daily /st 03:00

CI/CD: Automatisert testing og utrulling

CI/CD (Continuous Integration / Continuous Delivery) automatiserer testing og utrulling av kode. GitHub Actions er et populært verktøy for dette.

Et enkelt eksempel: Hver gang du pusher kode til GitHub, kan en workflow automatisk:

  1. Kjøre tester
  2. Bygge applikasjonen
  3. Rulle den ut til serveren
# .github/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Kjør tester
        run: python -m pytest
      - name: Deploy til server
        run: echo "Her ville vi deployet til serveren"

CI/CD er der Utvikling og Driftstøtte møtes: utvikleren skriver koden, og pipelinen sørger for at den havner trygt på serveren.

Du trenger ikke å forstå alt her

CI/CD er et stort tema. Det viktigste å ta med seg er konseptet: kode som pushes til et repository kan automatisk testes og rulles ut. Du kommer til å se mer av dette i praksis etterhvert.

Easy Oppgave 1 - Sett opp en cron-jobb

Sett opp en enkel cron-jobb på en av dine VMer:

  1. Lag et script som skriver dato og klokkeslett til en loggfil:
    #!/bin/bash
    echo "Kjørt: $(date)" >> /home/dinbruker/cron-test.log
    
  2. Gjør scriptet kjørbart med chmod +x
  3. Legg det inn i crontab med crontab -e til å kjøre hvert 5. minutt
  4. Vent noen minutter og sjekk loggfilen
Løsning: Cron-uttrykk
*/5 * * * * /home/dinbruker/cron-test.sh

Oppsummering

  • Cron (Linux) kjører scripts automatisk etter en tidsplan
  • Task Scheduler (Windows) gjør det samme med et grafisk grensesnitt
  • Bruk crontab.guru for å bygge cron-uttrykk
  • CI/CD automatiserer testing og utrulling av kode ved hjelp av verktøy som GitHub Actions