/ / Zapobieganie niesancjonowanym wdrożeniom w Jenkinsfile (Multibranch Pipeline) - git, github, jenkins, groovy, jenkins-pipeline

Zapobieganie niesancjonowanym wdrożeniom w Jenkinsfile (Multibranch Pipeline) - git, github, jenkins, groovy, jenkins-pipeline

Prowadzimy Jenkinsa z wielopanowym rurociągiemwtyczka dołączona do repozytorium organizacji GitHub z Jenkinsfile w niektórych swoich oddziałach Jenkins ma dostęp do wielu innych agentów i węzłów, w których wdraża kod po jego pomyślnym zbudowaniu.

Problem: chcę uniemożliwić innym deweloperom uruchamianie kompilacji przy użyciu zmodyfikowanych plików Jenkinsfile w swoich oddziałach i żądań pobierania.

  • Rozwiązanie 1: when oświadczenie w Jenkinsfile: słabe bezpieczeństwo. Każdy może go zmodyfikować, usunąć when Klauzula i przerwać produkcję.
  • Rozwiązanie 2: zablokowane pliki na repo: niedostępny na GitHub. Naprawdę rozważam przejście na GitLab, ponieważ mają tę funkcję.
  • Rozwiązanie 3: oddzielna praca w Jenkins dla wdrożenia: przesada. Myślę, że powinno to być rozwiązanie Pipeline.

Jak mogę się upewnić, że użyto Jenkinsfile?autentyczny i niezmieniony? Czy jest jakieś rozwiązanie tego, czego mi brakowało? Chcę, aby było wystarczająco bezpieczne, aby uniemożliwić każdemu, kto ma dostęp w trybie push, celowe niszczenie rzeczy, np. Git pre-push hooks nie są rozwiązaniem.

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz użyć Custom Script tryb pod Build Configuration sekcji w konfiguracji projektu wielobranżowego, w ten sposób plik Jennfile w różnych gałęziach nie będzie używany, ale to, co zdefiniujesz w konfiguracji zadania, wybierając pipeline script w Definition sekcję i uniemożliwiając programistom modyfikację konfiguracji zadania Jenkins lub możesz określić dowolny plik jako plik Jnkinsa w zasadzie w dowolnym repozytorium, wybierając Pipeline script from SCM.

Na przykład inne nasze repozytoria mają jenkinsfile, Tam jest tylko jeden jenkinsfile dla wszystkich naszych projektów, które tylko ja aktualizuję i żyje w osobnym repozytorium.