[ChAoZ]
Rear Admiral
- Registriert
- Jan. 2010
- Beiträge
- 5.302
Hallo,
ich bin gerade dabei phpstan in die Build Pipeline zu integrieren und es läuft auch soweit.
Nach dem die Unittests mit Coverage durchgelaufen sind und Artefakte erzeugt haben, lasse ich phpstan laufen und möchte ebenfalls ein Artefakt erzeugen, welches dann an SonarQube geschickt wird.
Klappt auch soweit....
Nur... wenn phpstan Fehler findet, bricht der gesamte Prozess (Build) ab und es werden keine Metriken an SonarQube übermittelt, weil es keine Artefakte gibt. Das ist dämlich, da so die Metriken verloren gehen. Ich würde gern phpstan durchlaufen lassen, unabhängig vom Ergebnis. SonarQube als QualityGate würde dann selbst entscheiden ob der Build durchfällt oder gebaut wird.
Wie erreiche ich das? Also RUN phpstan Kommando ohne exit code 1.
Script zum Starten
ich bin gerade dabei phpstan in die Build Pipeline zu integrieren und es läuft auch soweit.
Nach dem die Unittests mit Coverage durchgelaufen sind und Artefakte erzeugt haben, lasse ich phpstan laufen und möchte ebenfalls ein Artefakt erzeugen, welches dann an SonarQube geschickt wird.
Klappt auch soweit....
Nur... wenn phpstan Fehler findet, bricht der gesamte Prozess (Build) ab und es werden keine Metriken an SonarQube übermittelt, weil es keine Artefakte gibt. Das ist dämlich, da so die Metriken verloren gehen. Ich würde gern phpstan durchlaufen lassen, unabhängig vom Ergebnis. SonarQube als QualityGate würde dann selbst entscheiden ob der Build durchfällt oder gebaut wird.
Wie erreiche ich das? Also RUN phpstan Kommando ohne exit code 1.
Script zum Starten
Code:
docker build \
--force-rm=true \
--progress plain \
--ssh default \
--target metric-export \
--output ${SOURCE_TMP_DIR} \
--file Dockerfile \
${SOURCE_DIR}
Diff:
#Dockerfile
FROM composer:latest as build
...
# run phpunit
RUN ./vendor/bin/phpunit \
--coverage-clover tmp/clover.xml \
--log-junit tmp/junit.xml \
--do-not-cache-result
# run phpstan
RUN ./vendor/bin/phpstan analyse \
--configuration phpstan.neon \
--error-format=json > tmp/phpstan.json
# export metric files
FROM scratch as metric-export
# export metric files to host
COPY --from=build /app/tmp/*.xml .
COPY --from=build /app/tmp/*.json .