web-dev-qa-db-ja.com

スクリプトはどのようにしてサービス接続にアクセスできますか? (Azure Devopsパイプライン)

https://docs.Microsoft.com/en-us/Azure/devops/pipelines/library/service-endpoints によると、サービス接続タイプの豊富な配列があります。プロジェクトレベルで一連のサービス接続を簡単に管理し、どのユーザーがそれらを表示/編集できるかを制限する権限を設定できます-これで十分です。

しかし、ビルドパイプラインのスクリプトステップでサービス接続にアクセスする方法がわかりません。たとえば、Azureサービスプリンシパルの資格情報を表すサービス接続があるとします。スクリプトステップでこれらの認証情報にアクセスしたいと思います。

それらを利用するスクリプトステップを作成するにはどうすればよいですか?

13
Bosh

私は、AshikのJoshと同意し、Azure PipelinesのBashタスクでサービス接続を再利用する可能性はほとんどないかと思いますが、再利用可能なサービス接続を用意するというアイデアは気に入っています。

ただし、このタスクは GitHub でオープンソース化されており、フィードバックや貢献を歓迎します。 :)

Bashタスクを実行する直前にログインするコマンドでKubectlタスクを使用する場合、認証またはホスト名を使用する必要がないことがわかりました。

KUBERNETESNODEとSERVICEPROTOCOLは、事前に設定したパイプライン変数です。

      - 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