Użycie w CI

Czy ten agent budujący dosięga rejestru? Jeden krok na to odpowiada, z kodem wyjścia, po którym pipeline może się rozgałęzić.

Jeden krok

- name: can the build agent reach the registry
  run: certdoctor https://registry.example.com/ --redact --json --out certdoctor.json

JSON jest sprawdzany ze schematem, zanim cokolwiek zostanie zapisane, więc pipeline nigdy nie czyta niedokończonego dokumentu. Zachowaj go jako artefakt, a gdy ktoś ma go przeczytać, zrób z niego stronę przez --from.

Kody wyjścia

Każde zakończenie ma własny kod:

KodNazwaZnaczenie
0OKwszystko, co miało znaczenie, zostało ocenione i przeszło
1RUNTIMEzawiódł sam certdoctor
2USAGEbłędna składnia wywołania albo nieznana flaga
3CONFIGflagi są poprawne każda z osobna, ale sprzeczne albo niewykonalne razem
4DIAGNOSISprzebieg się udał i znalazł co najmniej jedną usterkę
5INCONCLUSIVEbez usterki, ale co najmniej jednej rzeczy nie dało się ocenić
6IOnie udało się zapisać raportu
130INTERRUPTEDprzerwany przez użytkownika
143TERMINATEDzakończony przez system

Samo WARN nie zatrzymuje budowania: maszyna za firmowym proxy inaczej kończyłaby każdy przebieg porażką, chociaż jej połączenie działa. 4 znaczy, że przebieg znalazł coś złego na drodze do adresu. 5 znaczy, że nie było niczego złego, co mógł zobaczyć, ale co najmniej jednej rzeczy nie dało się ocenić - pipeline, który chce pewności, traktuje to jako porażkę, a taki, który chce tylko prawdziwych porażek, przepuszcza.

Raport dla ludzi, po fakcie

Późniejszy krok może zrobić stronę z zapisanego JSON-a bez ponownej diagnozy:

certdoctor --from certdoctor.json --format html --out certdoctor.html

Kończy się 0, gdy strona jest zapisana, więc krok, który tylko robi stronę, nie zatrzymuje budowania drugi raz. Kod samego werdyktu zostaje w raporcie jako verdict.exit_code.

Windows PowerShell 5.1

Zapisuj JSON przez --out, a nie przez >. W Windows PowerShell 5.1 > zapisuje UTF-16, a tego czytnik JSON-a się nie spodziewa.

Każda wersja w dzienniku

certdoctor --version

wypisuje wersję narzędzia, schematu raportu, Go, którym je zbudowano, i platformę, po jednej w linii, więc dziennik sprzed miesięcy nadal mówi, co wytworzyło werdykt.