Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Erfahren Sie, wie Sie Azure-Pipelines verwenden, um Ihre Ruby-Anwendungen automatisch zu erstellen, zu testen und bereitzustellen.
Voraussetzungen
Ruby ist auf von Microsoft gehosteten Agents für Linux, macOS und Windows vorinstalliert. Sie müssen nichts mehr einrichten, um Ruby-Projekte zu erstellen. Informationen dazu, welche Ruby-Versionen vorinstalliert sind, finden Sie unter Software.
| Produkt | Anforderungen |
|---|---|
| Azure DevOps | – Ein Azure DevOps-Projekt. – Eine Möglichkeit zum Ausführen von Pipelines auf von Microsoft gehosteten Agenten. Sie können entweder einen parallelen Auftrag erwerben oder ein kostenloses Kontingent anfordern. - Grundkenntnisse in YAML und Azure Pipelines. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Pipeline. - Berechtigungen: – Um eine Pipeline zu erstellen: Sie müssen sich in der Gruppe "Mitwirkende" befinden, und die Gruppe muss die Berechtigung "Erstellen einer Build-Pipeline" auf "Zulassen" gesetzt haben. Mitglieder der Gruppe "Projektadministratoren " können Pipelines verwalten. – Um Dienstverbindungen zu erstellen: Sie müssen über die Rolle "Administrator " oder " Ersteller " für Dienstverbindungen verfügen. |
| GitHub | - Ein GitHub-Konto . – Eine GitHub-Dienstverbindung zum Autorisieren von Azure Pipelines. |
| Produkt | Anforderungen |
|---|---|
| Azure DevOps | – Ein Azure DevOps-Projekt. – Ein selbst gehosteter Agent, auf dem Ruby installiert ist. Um einen Agent zu erstellen, siehe selbstgehostete Agenten. - Grundkenntnisse in YAML und Azure Pipelines. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Pipeline. - Berechtigungen: – Um eine Pipeline zu erstellen: Sie müssen sich in der Gruppe "Mitwirkende" befinden, und die Gruppe muss die Berechtigung "Erstellen einer Build-Pipeline" auf "Zulassen" gesetzt haben. Mitglieder der Gruppe "Projektadministratoren " können Pipelines verwalten. – Um Dienstverbindungen zu erstellen: Sie müssen über die Rolle "Administrator " oder " Ersteller " für Dienstverbindungen verfügen. |
| GitHub | - Ein GitHub-Konto . – Eine GitHub-Dienstverbindung zum Autorisieren von Azure Pipelines. |
Erstellen der Azure-Pipelines
Führen Sie die folgenden Schritte aus, um eine Pipeline für eine Ruby-App einzurichten.
Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und wechseln Sie zu Ihrem Projekt.
Wechseln Sie zu Pipelines>Neue Pipeline.
Wählen Sie GitHub als Speicherort für Ihren Quellcode aus.
Möglicherweise werden Sie zu GitHub weitergeleitet, um sich anzumelden. Geben Sie in diesem Fall Ihre Anmeldeinformationen für GitHub ein.
Wählen Sie Ihr Ruby-Beispiel-Repository aus.
Wählen Sie die
RubyVorlage für Ihre Pipeline aus.Eine YAML-Datei wird generiert. Wählen Sie Speichern und ausführen aus, >committen Sie direkt in den Main-Branch und wählen Sie dann erneut Speichern und ausführen aus.
Warten Sie, bis der Pipeline-Durchlauf abgeschlossen ist. Dies dauert in der Regel 2 bis 5 Minuten für ein einfaches Ruby-Projekt.
Sie haben nun eine funktionierende YAML-Datei (azure-pipelines.yml) in Ihrem Repository, die automatisch ausgeführt wird, wenn Sie Codeänderungen pushen. Diese Datei kann an die spezifischen Anforderungen Ihres Projekts angepasst werden.
Tipp
Wenn Sie Änderungen an der in diesem Artikel beschriebenen YAML-Datei vornehmen möchten, wählen Sie die Pipeline auf der Seite "Pipelines " aus, und wählen Sie dann "Bearbeiten" für die azure-pipelines.yml Datei aus.
Buildumgebung
Sie können Azure Pipelines verwenden, um Ihre Ruby-Projekte zu erstellen, ohne eine eigene Infrastruktur einrichten zu müssen. Ruby ist auf von Microsoft gehosteten Agents in Azure Pipelines vorinstalliert. Sie können Linux-, macOS- oder Windows-Agents verwenden, um Ihre Builds auszuführen.
Die genauen Versionen von Ruby, die vorinstalliert sind, finden Sie unter von Microsoft gehosteten Agents. Um eine bestimmte Version von Ruby auf von Microsoft gehosteten Agents zu installieren, fügen Sie die Aufgabe "Ruby-Version verwenden " am Anfang Ihrer Pipeline hinzu.
Verwenden einer bestimmten Ruby-Version
Fügen Sie die Aufgabe "Ruby-Version verwenden " hinzu, um die Ruby-Version in Ihrer Pipeline festzulegen. Dieser Ausschnitt fügt Ruby 3.4 oder höher zum Pfad hinzu und legt fest, dass nachfolgende Pipelineaufgaben diese Version verwenden. Informationen dazu, welche Ruby-Versionen auf von Microsoft gehosteten Agents vorinstalliert sind, finden Sie unter Software.
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UseRubyVersion@0
inputs:
versionSpec: '>= 3.4'
addToPath: true
displayName: 'Set Ruby version'
Installieren von Rails
Um Rails zu installieren, fügen Sie der Datei den folgenden Codeausschnitt hinzu azure-pipelines.yml .
- script: gem install rails && rails -v
displayName: 'Install Rails'
Installieren von Abhängigkeiten
Verwenden Sie Bundler, um die Gem-Abhängigkeiten Ihres Projekts zu installieren. Bundler liest Ihre Gemfile und Gemfile.lock und stellt sicher, dass dieselben Gem-Versionen in der Pipeline wie in Ihrer Entwicklungsumgebung installiert sind.
- script: |
gem install bundler
bundle install --retry=3 --jobs=4
displayName: 'Install dependencies with Bundler'
Der --retry=3-Schalter wiederholt fehlgeschlagene Installationen bis zu 3 Mal, und --jobs=4å ermöglicht die parallele Installation von Gems für schnellere Builds.
Rake ausführen
Wenn Sie Rake im Kontext des aktuellen Bundles ausführen möchten (wie in Ihrer Gemfile-Datei definiert), fügen Sie der Datei den folgenden Codeausschnitt hinzu azure-pipelines.yml .
- script: bundle exec rake
displayName: 'bundle exec rake'
Veröffentlichen von Testergebnissen
Der Beispielcode enthält Komponententests, die mit RSpec geschrieben wurden. Wenn Rake im vorherigen Schritt ausgeführt wird, werden die RSpec-Tests ausgeführt. Die RSpec RakeTask in der Rakefile ist zur Erstellung von Ergebnissen im JUnit-Stil mit dem RspecJUnitFormatter konfiguriert.
Fügen Sie die Aufgabe " Testergebnisse veröffentlichen" hinzu, um Testergebnisse im JUnit-Stil auf dem Server zu veröffentlichen.
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Ruby tests'
Veröffentlichen von Codeabdeckungsergebnissen
Der Beispielcode verwendet SimpleCov , um Codeabdeckungsdaten zu sammeln, wenn Komponententests ausgeführt werden. SimpleCov ist für die Verwendung von Cobertura- und HTML-Berichtsformatierern konfiguriert.
Fügen Sie die Aufgabe " Codeabdeckungsergebnisse veröffentlichen" hinzu, um Codeabdeckungsergebnisse auf dem Server zu veröffentlichen. Auf diese Weise können Sie Abdeckungsmetriken in der Buildzusammenfassung anzeigen und HTML-Berichte zur weiteren Analyse herunterladen.
- task: PublishCodeCoverageResults@2
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'
failIfCoverageEmpty: true
Vollständige Beispielpipeline
Hier ist eine vollständige azure-pipelines.yml Datei, die alle in diesem Artikel behandelten Konzepte veranschaulicht. Diese Pipeline:
- Trigger für Änderungen an der Hauptzweigung
- Verwendet Ubuntu als Buildumgebung
- Richtet die angegebene Ruby-Version ein
- Installiert Projektabhängigkeiten
- Führt Tests mit Rake aus
- Veröffentlicht Testergebnisse und Codeabdeckungsmetriken
# Ruby pipeline example
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
rubyVersion: '3.4.7'
steps:
- task: UseRubyVersion@0
inputs:
versionSpec: '$(rubyVersion)'
addToPath: true
displayName: 'Set Ruby version to $(rubyVersion)'
- script: |
gem install bundler
bundle install --retry=3 --jobs=4
displayName: 'Install dependencies'
- script: bundle exec rake
displayName: 'Run tests with Rake'
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Ruby tests'
displayName: 'Publish test results'
- task: PublishCodeCoverageResults@2
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'
failIfCoverageEmpty: true
displayName: 'Publish code coverage'