Creare automaticamente una pipeline YAML da una sua definizione in Azure DevOps

di Matteo Tumiati, in DevOps,

In Azure DevOps, lo sappiamo, non è propriamente possibile avere dei template repository come, invece, è possibile avere in GitHub. Questi repository, infatti, non sono nient'altro che una sorta di placeholder che può essere riutilizzato per quando vogliamo creare un nuovo progetto e partire da una base di codice già esistente. Tuttavia, un comportamento simile è facilmente realizzabile creando qualche pipeline di Azure DevOps che faccia tutto il setup/clone dei repository ed eventuali configurazione (ad esempio permessi per gli utenti, package registry e così via...).

Rimane un punto aperto riguardo le pipeline. Come già sappiamo, ora le pipeline vengono create principalmente come codice YAML che, però, contiene solamente la definizione. Pertanto, rimane necessario poter creare una pipeline a partire da del codice YAML pre-esistente. Tramite le API di Azure DevOps è possibile chiamare l'endpoint seguente:

$url = "https://dev.azure.com/{organization}/{projectName}/_apis/git/repositories?api-version=6.0"
Invoke-RestMethod $url -Method GET -Headers @{Authorization=("Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN);}

Leggendo la documentazione, però, ci sono un po' di parti mancanti per quanto riguarda il body da dover passare in ingresso all'API di riferimento che è il seguente:

{
  "folder": null,
  "name": "la-mia-pipeline",
  "configuration": {
    "type": "yaml",
    "path": "/path-to-pipeline-from-root-of-the-repository.yml",
    "repository": {
      "id": "guid-of-repo-id",
      "name": "my-repo",
      "type": "azureReposGit"
    }
  }
}

Infatti, oltre a quello specificato nella documentazione ufficiale (https://docs.microsoft.com/en-us/rest/api/azure/devops/pipelines/pipelines/create?view=azure-devops-rest-6.0), manca completamente la definizione del nodo configuration che non descrive affatto dove si trova la pipeline definition in YAML e in quale repository vive. Seguendo il codice di questo script dovrebbe essere abbastanza intuitivo poter lanciare una chiamata corrispondente e trovarsi, di fatto, la nuova pipeline creata. Eventualmente, è anche possibile specificare una folder di riferimento qualora abbiamo più pipeline raggruppate e ordinate.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi