17.01.2025

Heute habe ich zusammen mit Jonathan und Cedric Menzi, dem Entwickler von Pocket Nuke ein Meeting gehabt. Cedric hat mir dabei sehr viel weitergeholfen. Er hat mir nämlich gezeigt, dass man im Build-Projekt eigene Parameter definieren kann. Dadurch kann ich Logik in die Pipeline einführen und so bspw. das automatische Swappen deaktivieren.

[Parameter("Swap slots after deployment")]
public bool Swap { get; } = false;

private Task OnPreDeployment(IServicePreDeployment<AzureFunctionApp> deployment)
{
    deployment.Settings(x =>
        x.WithAzureMonitor()
         .With("DevOpsBaseUrl", EnvironmentInfo.GetVariable<string>("API_URL"))
         .With("DevOpsAccessToken", EnvironmentInfo.GetVariable<string>("API_TOKEN"))
        );

    deployment.Service.Swap = Swap;

    return Task.CompletedTask;
}

In der Pipeline kann ich jetzt zusätzlich zu den Standardargumenten das Argument --swap mitgeben.

- job: swap
  dependsOn: deploy
  condition: and(succeeded(), eq(${{parameters.deploy_prod}}, true))
  container:
    image: buhlergroup.azurecr.io/build-agent-linux:latest
    endpoint: buhlergroup-acr
  steps:
    - task: Bash@3
      env:
        SERVICEPRINCIPAL_PASSWORD_alm: $(SERVICEPRINCIPAL_PASSWORD_alm)
      inputs:
        targetType: "filePath"
        filePath: "build.sh"
        arguments: "--environment alm --swap"

So kann ich nun je nach Job das Swappen aktivieren oder eben nicht.

Cedric hat für mich dann noch eine neue Version hochgeladen, mit welcher ich auch das Deploymentverhalten steuern kann, denn im Moment wird beim Swappen nochmals die ganze Function redeployed.

Diese Version funktioniert jedoch bis jetzt noch nicht.

Am Abend habe ich dann noch schnell einen Pull Request erstellt, die Namen alle wieder auf Standard gesetzt, etc. damit Jonathan diesen dann während meines Sprachaufenthalts bearbeiten kann.

Zuletzt aktualisiert