Controlla il repository GitHub nella pipeline ADO [YAML]
Ho un repository GitHub: https://github.com/user-name/repo-name
Sto seguendo questo documento https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#faqper effettuare il checkout di più repository. Ecco il mio file yaml:
name: 1.0
resources:
repositories:
- repository: MyGitHubRepo
type: github
endpoint: https://github.com/user-name/repo-name
name: repo-name
ref: master
trigger:
- master
- develop
- features/*
pool:
vmImage: "vs2017-win2016"
variables:
"BuildConfiguration": 'debug'
"BuildPlatform": 'any cpu'
stages:
- checkout: MyGitHubRepo
- template: build.yml@MyGitHubRepo
Risposte
Il problema è nell'ambientazione repositories.endpoint. L' endpointimpostazione dovrebbe fare riferimento a un progetto Azure Devops Service connection. Una connessione al servizio di progetto è un riferimento a un servizio o una risorsa a livello di progetto in Azure DevOps che consente di archiviare credenziali e così via per fare riferimento a risorse e servizi in modo sicuro senza la necessità di archiviare le credenziali per tali risorse nel codice. azure-pipelines.yamlProprietà e attività specifiche della pipeline di Azure possono fare facilmente riferimento alle connessioni del servizio.
Per configurare una connessione al servizio, fare clic su Project settingsnella parte inferiore della pagina nel browser mentre si è nel progetto Azure DevOps. Quindi nel menu a sinistra sotto il Pipelinesclic Service connections. In alto a destra nella pagina, fai clic su, New service connectionscegli GitHube fai clicNext
Nella pagina successiva, seleziona Grant authorizationse non è già selezionato. Scegli AzurePipelinesper la configurazione OAuth e fai clic su Authorize. Conferma il popup GitHub e inserisci le tue credenziali GitHub per farlo. Quindi fare clic Authorize Azure pipelinessulla finestra di dialogo di autorizzazione GitHUb. Quindi nella pagina Azure DevOps prendere nota del nome della connessione del servizio per riferimento in seguito e fare clic Saveper terminare la creazione della connessione del servizio.
Quindi torna alla tua azure-pipelines.yamlmodifica come di seguito:
resources:
repositories:
- repository: MyGitHubRepo
type: github
endpoint: name_of_service_connection_you_created
name: github-user-name/repo-name
ref: master
Assicurati di impostare typeGitHub e fai attenzione a impostare il namevalore sulla combinazione del tuo nome utente GitHub e nome del repository come username/reponame.
Il riferimento per la risorsa del repository in azure-pipelines.yamlpuò essere trovato nello schema YAML
La documentazione per la creazione può essere trovata qui
Passaggi:
Accedi alla pagina del token GitHub e crea il token PAT.
Apri le impostazioni del progetto-> Connessioni di servizio-> Fai clic sul pulsante New service connectione seleziona il tipo GitHub per creare una connessione GitHub.
L'esempio che ho condiviso è pubblicare il repository GitHub come artefatti.
Repo GitHub.
Campione YAML:
resources:
repositories:
- repository: vitol
type: github
endpoint: GithubTest
name: vitoliutest/vitol
trigger:
- none
pool:
name: Hosted Ubuntu 1604
steps:
- checkout: vitol
- task: CopyFiles@2
inputs:
SourceFolder: '$(Agent.BuildDirectory)' Contents: '**' TargetFolder: '$(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Nota: si prega di notare il passaggio checkout, viene utilizzato per eseguire il checkout del repository GitHub.
Risultato