Gå till innehållet

GitHub Actions

GitHub Actions är det enklaste sättet att köra Webperf Core regelbundet mot en publik webbplats. Du behöver ingen egen server.

Bara publika webbplatser

GitHub Actions kör i Microsofts moln och når inte din acceptansmiljö bakom brandvägg. För sådana webbplatser passar lokal installation, Docker på egen server eller Premium, som kan testa från fasta IP-adresser du släpper in och som har support om uppsättningen krånglar.

Enklaste vägen: forka repot

Webperf Core innehåller redan ett färdigt arbetsflöde. Du behöver inte skriva någon YAML.

  1. Forka webperf_core
  2. Gå till fliken Actions i din fork. Du kan behöva aktivera arbetsflödena första gången.
  3. Välj Manual - Run test against url i listan till vänster
  4. Klicka Run workflow och fyll i:

    Fält Betydelse
    Webpage url to test Adressen som ska testas
    Test to run Testnummer, kommaseparerade
    Setting general.language sv eller en
    Setting general.review.details true ger en utförligare granskning
    Setting general.review.data true bifogar rådata som JSON
    Setting general.review.improve-only true visar bara det som kan förbättras
  5. Resultatet hittar du under Actions → körningen → Build → sektionen "Test … for …"

Håll forken uppdaterad

Tryck Sync fork på repots startsida då och då. Ska du inte bidra med kod kan du stänga av alla arbetsflöden utom "Manual - Run test against url". Då går uppdateringarna snabbare.

Eget arbetsflöde

Vill du köra testerna i ditt eget repo, till exempel vid varje driftsättning, kör du den publika Docker-imagen direkt. Det finns ingen färdig action på GitHub Marketplace.

name: Webperf-test

on:
  push:
    branches: [main]
  schedule:
    # varje måndag 06:00 UTC
    - cron: '0 6 * * 1'
  workflow_dispatch:

jobs:
  webperf:
    runs-on: ubuntu-latest
    steps:
      - name: Kör Webperf Core
        run: |
          docker run --rm \
            --shm-size=4g \
            -e MAX_OLD_SPACE_SIZE=3000 \
            webperfse/webperf-core:latest \
            python default.py \
              -u https://example.com \
              -t 22,9,18 \
              -r \
              --setting general.language=sv

Testa flera adresser

jobs:
  webperf:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        url:
          - https://example.com
          - https://example.com/kontakt/
          - https://example.com/om-oss/
    steps:
      - name: Kör Webperf Core
        run: |
          docker run --rm --shm-size=4g -e MAX_OLD_SPACE_SIZE=3000 \
            webperfse/webperf-core:latest \
            python default.py -u ${{ matrix.url }} -t 22 -r

Spara rapporten som artefakt

Skriv resultatet till en monterad mapp och ladda upp den:

      - name: Kör Webperf Core
        run: |
          mkdir -p rapporter
          docker run --rm --shm-size=4g -e MAX_OLD_SPACE_SIZE=3000 \
            -v "$PWD/rapporter:/usr/src/runner/output" \
            webperfse/webperf-core:latest \
            python default.py -u https://example.com -t 22 -o output/rapport.json

      - name: Ladda upp rapporten
        uses: actions/upload-artifact@v4
        with:
          name: webperf-rapport-${{ github.sha }}
          path: rapporter/rapport.json
          retention-days: 30

Låt bygget falla vid för lågt betyg

      - name: Kontrollera minimibetyg
        run: |
          TOTAL=$(jq '.[0].rating' rapporter/rapport.json)
          if (( $(echo "$TOTAL < 3.0" | bc -l) )); then
            echo "Totalbetyg $TOTAL är under 3.0"
            exit 1
          fi
          echo "Totalbetyg $TOTAL godkänt"

Kontrollera fältnamnen

Strukturen i JSON-utdata kan ändras mellan versioner. Kör testet en gång och titta på filen innan du bygger en grind som stoppar driftsättningar.

Schemalägga

on:
  schedule:
    - cron: '0 6 * * *'     # varje dag 06:00 UTC
    - cron: '0 6 * * 1,4'   # måndagar och torsdagar
    - cron: '0 6 1 * *'     # första dagen varje månad

Felsökning

Testerna tar för lång tid

Ett jobb får köra i högst sex timmar, vilket sällan är problemet. Tar det ändå för lång tid: kör färre tester per jobb, testa färre adresser, eller dela upp arbetet på flera jobb som körs parallellt.

Lighthouse misslyckas

Ge Node mer minne:

-e MAX_OLD_SPACE_SIZE=4096

och höj --shm-size i motsvarande grad.

IPv6-kontrollerna hoppas över

GitHub Actions har inte IPv6. Det är därför IPv6-kontrollerna i e-posttestet är avstängda som standard. Kör dem lokalt i stället:

python default.py -u https://example.com -t 24 \
  --setting tests.email.support.ipv6=true
E-posttestet ger färre kontroller än väntat

Port 25 är blockerad i GitHub Actions, så kontrollerna som kräver en direkt anslutning till mottagarens e-postserver hoppas över. Resten av testet fungerar.

Nästa steg