In der Welt der modernen Softwareentwicklung sind Continuous Integration (CI) und Continuous Deployment (CD) unerlässlich. Azure DevOps bietet hierfür robuste Pipelines, die Teams dabei helfen, Softwarekomponenten kontinuierlich zu bauen, testen und zu deployen. Ein kritischer Aspekt dieser Pipelines ist dabei die Absicherung von parallelen Zugriffen auf diese Pipelines und die Entscheidung und Freigabe über den Zeitpunkt eines Deployments. Essentiell dabei ist, die Integrität und Qualität des Codes sicherzustellen, bevor er in produktive Umgebungen gelangt. Schauen wir uns an, was Exclusive Locks und Approvals im Kontext von Azure DevOps sind und wie sie effektiv genutzt werden können.
Exclusive Locks in Azure DevOps
Exclusive Locks sind Mechanismen, die verhindern, dass mehrere Builds oder Deployments gleichzeitig ausgeführt werden, die möglicherweise dieselben Ressourcen beeinflussen. Parallele Zugriffe ergeben sich beispielsweise bereits dann, wenn mehrere Entwickler zeitnah neue Features in den gemeinsamen Entwicklungsstand des Codes überführen und Pipelines mit automatischen Triggern gestartet werden. Hierbei müssen die Zugriffe auf gemeinsame Ressourcen, wie beispielsweise die gemeinsame Infrastruktur abgesichert werden.
Vorteile von Exclusive Locks
- Kollisionsvermeidung: Durch das Setzen eines Locks wird sichergestellt, dass nur eine Pipeline zur Zeit auf eine bestimmte Ressource zugreifen kann, wodurch Konflikte und Inkonsistenzen vermieden werden.
- Ressourcenschonung: Da nicht mehrere Pipelines gleichzeitig dieselbe Ressource beanspruchen, wird die effiziente Nutzung von Systemressourcen gefördert.
- Zuverlässigkeit: Durch die Vermeidung paralleler Zugriffe werden potenzielle Fehler und Ausfallzeiten minimiert. Pipelines müssen zuverlässig sein!
Approvals in Azure DevOps
Approvals sind Genehmigungsanforderungen, die sicherstellen, dass bestimmte Schritte in einer Pipeline nicht automatisch, sondern erst nach manueller Freigabe durch autorisierte Personen oder Teams ausgeführt werden. Dies ist besonders wichtig für kritische Deployment-Schritte, die zusätzliche Überprüfung erfordern.
Nutzen von Approvals
- Qualitätssicherung: Bevor ein Deployment in eine produktive Umgebung erfolgt, kann es von verantwortlichen Teammitgliedern überprüft und freigegeben werden.
- Sicherheitskontrollen: Durch die manuelle Überprüfung können sicherheitsrelevante Aspekte vor dem Deployment nochmals geprüft werden.
- Compliance: Unternehmen können sicherstellen, dass alle Deployment-Schritte den internen Richtlinien und Compliance-Anforderungen entsprechen.
Einschränkung von Approvals auf bestimmte Teams und Rollen
Eine besonders mächtige Funktion in Azure DevOps ist die Möglichkeit, Approvals auf bestimmte Teams und Rollen einzuschränken. Dies erlaubt eine fein granulierte Kontrolle darüber, wer welche Aktionen in der Pipeline genehmigen darf.
Warum diese Einschränkung sinnvoll ist
- Zuständigkeit: Nur diejenigen, die die entsprechende Expertise und Verantwortung haben, können kritische Schritte genehmigen. Dies vermeidet Fehlentscheidungen und erhöht die Qualität des Endprodukts.
- Sicherheit: Durch die Begrenzung der Genehmigungsbefugnisse auf bestimmte Rollen wird das Risiko von unautorisierten Änderungen verringert.
- Effizienz: Die richtigen Personen sind für die richtigen Aufgaben zuständig, was den Freigabeprozess beschleunigen kann.
Implementierung von Exclusive Locks und Approvals
Die Implementierung dieser Mechanismen in Azure DevOps Pipelines ist relativ einfach und kann über die Pipeline-Definitionen konfiguriert werden. Dazu wird in der betreffende Pipeline ein environment
angegeben, das für das konkrete Deployment angelegt wurde, hier production
:
stages:
- stage: Deploy
jobs:
- deployment: DeployWeb
environment: 'production'
strategy:
runOnce:
deploy:
steps:
- script: echo Deploying...
Nach Anlage der Environment können über die Azure DevOps Oberfläche über das Kontext Menü (drei Punkte oben rechts) Approvals and checks gepflegt werden. Hier können sowohl Exclusive Locks als auch Approvals für konkrete Benutzer oder Gruppen konfiguriert werden.
Fazit
Exclusive Locks und Approvals sind essenzielle Werkzeuge in Azure DevOps, die helfen, die Integrität und Sicherheit von CI/CD Pipelines zu gewährleisten. Durch die gezielte Einschränkung von Genehmigungen auf bestimmte Teams und Rollen können Unternehmen sicherstellen, dass nur qualifizierte und autorisierte Personen kritische Entscheidungen treffen. Diese Mechanismen tragen wesentlich dazu bei, die Qualität und Zuverlässigkeit von Software-Deployments zu erhöhen und die Effizienz des gesamten Entwicklungsprozesses zu verbessern.
Für weitere Informationen und detaillierte Konfigurationsanleitungen besucht die Azure DevOps Dokumentation zu Approvals & Exclusive Locks.