web-dev-qa-db-fra.com

Comment un script peut-il accéder aux connexions de service? (Azure Devops Pipelines)

Selon https://docs.Microsoft.com/en-us/Azure/devops/pipelines/library/service-endpoints il existe un large éventail de types de connexion de service. Je peux facilement gérer un ensemble de connexions de service au niveau du projet et définir des autorisations pour limiter les utilisateurs qui peuvent les afficher/les modifier - tout cela est bien.

Mais je ne peux pas comprendre comment accéder à une connexion de service avec une action de script dans mon pipeline de génération. Par exemple, supposons que j'ai une connexion de service représentant les informations d'identification d'un principal de service Azure. Je souhaite accéder à ces informations d'identification dans une action de script.

Comment puis-je écrire une action de script qui les utilise?

13
Bosh

En accord avec Josh, AFAIK, je pense qu'il y a peu ou pas de possibilité de réutiliser les connexions de service avec la tâche Bash dans les pipelines Azure à partir d'aujourd'hui, bien que j'aime l'idée d'avoir des connexions de service réutilisables!

Cependant, veuillez noter que cette tâche est open source sur GitHub , et que les commentaires et contributions seraient les bienvenus. :)

J'ai constaté que si j'utilise la tâche Kubectl avec la commande pour me connecter juste avant d'exécuter ma tâche bash, je n'ai pas besoin de m'authentifier ou d'utiliser un nom d'hôte.

KUBERNETESNODE et SERVICEPROTOCOL sont des variables de Pipeline que j'ai définies a priori.

      - task: Kubernetes@1
        displayName: 'Kubernetes Login'
        # This is needed to run kubectl command from bash.
        inputs:
          connectionType: 'Kubernetes Service Connection'
          kubernetesServiceEndpoint: '<Service Connection Name>'
          command: 'login'

      - task: Bash@3
        displayName: 'Run Component Test'        
        inputs:
          targetType: 'inline'
          script: |
            #Get the Node Port
            nodePort=`kubectl get --namespace $(Build.BuildId) svc <service name> -o=jsonpath='{.spec.ports[0].nodePort}'`
            #Run Newman test
            newman run postman/Service.postman_collection.json --global-var Host=$KUBERNETESNODE --global-var protocol=$SERVICEPROTOCOL --global-var port=$nodePort -r junit
0
Joe Kampf