definition jobs.deployment.strategy.runOnce

Die runOnce-Bereitstellungsstrategie führt Änderungen durch, indem sie die einzelnen Schritte einmal ausführt.

runOnce:
  preDeploy: # Pre deploy hook for runOnce deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where pre deploy steps will run.
  deploy: # Deploy hook for runOnce deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where deploy steps will run.
  routeTraffic: # Route traffic hook for runOnce deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where route traffic steps will run.
  postRouteTraffic: # Post route traffic hook for runOnce deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where post route traffic steps will run.
  on: # On success or failure hook for runOnce deployment strategy.
    failure: # Runs on failure of any step.
      steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
      pool: string | pool # Pool where post on failure steps will run.
    success: # Runs on success of all of the steps.
      steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
      pool: string | pool # Pool where on success steps will run.

Definitionen, die auf diese Definition verweisen: jobs.deployment.strategy

Eigenschaften

preDeploypreDeployHook.
Hook vor der Bereitstellung für die runOnce-Bereitstellungsstrategie.

deploydeployHook.
Bereitstellen eines Hooks für die RunOnce-Bereitstellungsstrategie.

routeTrafficrouteTrafficHook.
Datenverkehrs-Hook für die RunOnce-Bereitstellungsstrategie weiterleiten.

postRouteTrafficpostRouteTrafficHook.
Postroute-Datenverkehrshaken für die runOnce-Bereitstellungsstrategie.

ononSuccessOrFailureHook.
Bei Erfolg oder Fehler hook für die runOnce-Bereitstellungsstrategie.

Bemerkungen

runOnce ist die einfachste Bereitstellungsstrategie, bei der alle Lebenszyklus-Hooks, nämlich preDeploydeploy, routeTrafficund postRouteTraffic, einmal ausgeführt werden. Danach wird entweder on:success oder on:failure ausgeführt.

Beschreibungen von Lifecycle-Hooks

preDeploy: Wird verwendet, um Schritte auszuführen, die Ressourcen vor beginn der Anwendungsbereitstellung initialisieren.

deploy: Wird verwendet, um Schritte auszuführen, die Ihre Anwendung bereitstellen. Der Downloadartefakttask wird nur automatisch in den deploy Hook für Bereitstellungsaufträge eingefügt. Um das Herunterladen von Artefakten zu beenden, verwenden - download: none Oder wählen Sie bestimmte Artefakte aus, die heruntergeladen werden sollen, indem Sie die Aufgabe "Pipelineartefakt herunterladen" angeben.

routeTraffic: Wird verwendet, um Schritte auszuführen, die den Datenverkehr für die aktualisierte Version bereitstellen.

postRouteTraffic: Wird verwendet, um die Schritte auszuführen, nachdem der Datenverkehr weitergeleitet wurde. In der Regel überwachen diese Aufgaben die Integrität der aktualisierten Version für ein definiertes Intervall.

on: failureoder on: success: Wird verwendet, um Schritte für Rollbackaktionen oder sauber auszuführen.

Beispiele

Der folgende YAML-Beispielausschnitt veranschaulicht die einfache Verwendung eines Bereitstellungsauftrags mithilfe der runOnce Bereitstellungsstrategie. Das Beispiel enthält einen Auscheckschritt.


jobs:
  # Track deployments on the environment.
- deployment: DeployWeb
  displayName: deploy Web App
  pool:
    vmImage: ubuntu-latest
  # Creates an environment if it doesn't exist.
  environment: 'smarthotel-dev'
  strategy:
    runOnce:
      deploy:
        steps:
        - checkout: self 
        - script: echo my first deployment

Bei jeder Ausführung dieses Auftrags wird der Bereitstellungsverlauf für die smarthotel-dev Umgebung aufgezeichnet.

Hinweis

  • Es ist auch möglich, eine Umgebung mit leeren Ressourcen zu erstellen und diese als abstrakte Shell zum Aufzeichnen des Bereitstellungsverlaufs zu verwenden, wie im vorherigen Beispiel gezeigt.

Im nächsten Beispiel wird veranschaulicht, wie eine Pipeline sowohl auf eine Umgebung als auch auf eine Ressource verweisen kann, die als Ziel für einen Bereitstellungsauftrag verwendet werden sollen.

jobs:
- deployment: DeployWeb
  displayName: deploy Web App
  pool:
    vmImage: ubuntu-latest
  # Records deployment against bookings resource - Kubernetes namespace.
  environment: 'smarthotel-dev.bookings'
  strategy: 
    runOnce:
      deploy:
        steps:
          # No need to explicitly pass the connection details.
        - task: KubernetesManifest@0
          displayName: Deploy to Kubernetes cluster
          inputs:
            action: deploy
            namespace: $(k8sNamespace)
            manifests: |
              $(System.ArtifactsDirectory)/manifests/*
            imagePullSecrets: |
              $(imagePullSecret)
            containers: |
              $(containerRegistry)/$(imageRepository):$(tag)

Dieser Ansatz hat die folgenden Vorteile:

  • Zeichnet den Bereitstellungsverlauf für eine bestimmte Ressource innerhalb der Umgebung auf, anstatt den Verlauf für alle Ressourcen in der Umgebung aufzuzeichnen.
  • Schritte im Bereitstellungsauftrag erben automatisch die Verbindungsdetails der Ressource (in diesem Fall einen Kubernetes-Namespace), smarthotel-dev.bookingsda der Bereitstellungsauftrag mit der Umgebung verknüpft ist. Dies ist in den Fällen nützlich, in denen dasselbe Verbindungsdetails für mehrere Schritte des Auftrags festgelegt ist.

Weitere Informationen