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.
- Forka webperf_core
- Gå till fliken Actions i din fork. Du kan behöva aktivera arbetsflödena första gången.
- Välj Manual - Run test against url i listan till vänster
-
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 svellerenSetting general.review.details trueger en utförligare granskningSetting general.review.data truebifogar rådata som JSONSetting general.review.improve-only truevisar bara det som kan förbättras -
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.