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 № 1Moż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.