Verifiera ändringar med GitHub Actions
Med trunkbaserad utveckling går varje ändringsförslag genom en pull request. Den pull requesten är också ett naturligt tillfälle att köra automatiserade kontroller. En ändring som bryter träningsskriptet bör inte nå main, och en granskare bör inte behöva fånga varje kodfel manuellt.
Arbetsflöden, utlösare och kvalitetsgrind
Ett GitHub Actions arbetsflöde är en YAML-fil som lagras på lagringsplatsen under .github/workflows/. Den definierar vad som ska köras, när den ska köras och i vilken sekvens. En utlösare (on:nyckeln) meddelar GitHub när den ska startas.
I Prosewares valideringsarbetsflöde är utlösaren pull_request lämplig för uppgiften. Som standardinställning körs den när en pull request öppnas, återöppnas eller när nya incheckningar skickas till den. Resultatet visas som en statuskontroll för pull-begäran.
Jobb, löpare och steg
Ett arbetsflöde organiserar arbete i jobb. Varje jobb körs på en löpare – en virtuell dator som tillhandahålls av GitHub eller en som din organisation hanterar. Ett jobb innehåller ordnade steg som checkar ut lagringsplatsen, installerar verktyg och kör kommandon.
För träningskoden för Proseware kan ett valideringsjobb:
- Kolla in lagringsplatsen.
- Installera en linter (till exempel Flake8 för Python) och kör den mot träningsskripten.
- Kör enhetstester (till exempel Pytest) för att verifiera att skriptfunktioner fungerar korrekt.
De här stegen körs automatiskt för varje pull request. Ingen behöver komma ihåg att köra dem lokalt.
Att göra kontroller som krävs
Att köra kontroller automatiskt är bara hälften av skyddet. Den andra hälften gör dessa kontroller blockerande. Med alternativet Kräv statuskontroller som ska skickas före sammanslagning i inställningarna för grenskydd kan du namnge specifika jobb. En pull request kan inte slås samman förrän de angivna jobben har lyckats.
Tillsammans utgör trunkbaserad utveckling och nödvändiga statuskontroller en kvalitetsgrind: dataexperten öppnar en pull-begäran, arbetsflödet körs och kopplingsknappen förblir inaktiverad tills koden skickas.
Tips
Statuskontrollen identifieras med jobbnamnet i arbetsflödesfilen. Använd ett tydligt, stabilt namn så att det är enkelt att hitta i inställningarna för grenskydd.
Tips
Tänk på en förbearbetningsändring med giltig Python syntax men felaktiga utdata. Vilken kontroll kan fånga upp stilproblem och vilken kontroll måste verifiera beteendet?