IBM Cloud Private 上のコンテナー化されたワークベンチとエージェントを使用した自動テストの実行

IBM® Cloud Private の全機能を取り入れて、開発からデプロイメントまでのワークフロー全体をクラウド上で管理する場合は、機能を開始したり終了したりする際のクリックの回数をより少なくするほうが便利です。コンテナー内にワークベンチとエージェントの両方を提供することにより、マシンを調達したり製品をインストールしたりすることなく、必要に応じて機能を動的にプロビジョンし、テスト自動化スイートを実行できます。

始める前に

IBM Cloud Private の構成』の手順に従って、IBM Cloud Private を構成しておく必要があります。

このタスクについて

テストを再生するときは、製品と VT パックのフローティング・ライセンスのみを使用する必要があります。これらのライセンスは、ワークベンチがアクセス可能なサーバー上でホストされていなければなりません。
注: コンテナー・イメージとデスクトップ製品のバージョン番号は、一致していなければなりません。前のバージョンのコンテナー・イメージがある場合には、それをアンインストールしてから、現在のバージョンをインストールしてください。イメージをアンインストールするには、以下のコマンドを使用します。
  1. 次のコマンドを実行してコンテナーを停止します。
    docker stop "CONTAINER  ID"
    .
  2. 次のコマンドを実行してイメージをアンインストールします。
    docker rmi -f "image ID"
    .

手順

  1. IBM Cloud Private で、services.yml ファイルを作成して、ワークベンチとエージェント用のサービスを作成します。 サービスは、ポッドへのアクセスに使用可能な単一の IP アドレスと DNS 名を提供するポッドの論理セットです。サービスを作成しても、IP が予約されるのみであり、実際のワークベンチやエージェント・ポッドは作成されません。services.yml ファイルの例を参照してください。
    cat services.yml
    
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        io.kompose.service: <workbench_name>
      name: <workbench_name>
    spec:
      type: NodePort
      ports:
      - name: "7080"
        port: 7080
        targetPort: 7080
      - name: "7443"
        port: 7443
        targetPort: 7443
      selector:
        io.kompose.service: <workbench_name>
    status:
      loadBalancer: {}
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        io.kompose.service: agent1
      name: agent1
    spec:
      ports:
      - name: "7080"
        port: 7080
        targetPort: 7080
      selector:
        io.kompose.service: agent1
    status:
      loadBalancer: {}
  2. 次のコマンドを実行してサービスを作成します。
    kubectl create -f services.yml
  3. 以下のコマンドを渡してワークベンチとエージェントの IP アドレスを取得し、それらを deployment.yml ファイルで使用して、エージェントをワークベンチに接続できるようにします。
    kubectl get services
  4. deployment.yml ファイルを作成して、この yml ファイルにライセンス、エージェント、ワークベンチ、およびテスト資産の情報を指定します。
    cat deployment.yml
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        io.kompose.service: <workbench_name>
        pt.classification: workbench
      name: <workbench_name>
    spec:
      replicas: 1
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            io.kompose.service: <workbench_name>
            pt.classification: workbench
            pt.name: <workbench_name>
        spec:
          containers:
          - command:
            - cmdline
            - -workspace
            - /runData/<WORKSPACE_NAME>
            - -project
            - <TEST_PROJECT_NAME>
            - -suite
            - Tests/<TEST_SUITE>.testsuite
            - -results
            - autoResults
            - -stdout
            - -exportlog
            - /runData/<TEST_LOG>.txt
            - -protocolinput
            - distributed.tests=/Tests/<AFT_INPUT>.xml
    
            env:
              - name: RATIONAL_LICENSE_FILE
                value: <licenseServerPort>@<licenseServerIPAddress>
              - name: TEST_IMPORT_PATH
                value: /Tests/<TEST_ASSET_NAME>.zip
            image: mycluster.icp:8500/default/<imageName>:<imageVersion>
            name: <workbench_name>
            ports:
            - containerPort: 7080
            - containerPort: 7443
            resources: {}
          restartPolicy: Always
    status: {}
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        io.kompose.service: agent1
        pt.classification: agent
      name: agent1
    spec:
      replicas: 1
      strategy: {}
      template:
        metadata:
          creationTimestamp: null
          labels:
            io.kompose.service: agent1
            pt.classification: agent
            pt.name: agent1
        spec:
          containers:
          - env:
            - name: AGENT_NAME
              value: agent1
            - name: AGENT_IP
              value: <ClusterIPAddress>
            - name: MASTER_NAME
              value: <workbench_name>
            image: mycluster.icp:8500/default/<imageName>:<imageVersion>
            name: agent1
            resources: {}
          restartPolicy: Always
    status: {}
  5. deployment.yml ファイルを実行して、ワークベンチ・コンテナーとエージェント・コンテナーを作成します。
    kubectl create -f deployment.yml
  6. IBM Cloud Private コンソールを使用して、ワークベンチとエージェントのデプロイメントが作成され、正常に実行されていることを確認します。ワークベンチとエージェントのポッドのデプロイメントにあるテスト実行ログを参照してください。
  7. 以下のコマンドを実行してワークベンチ・コンテナーとエージェント・コンテナーを停止し、エクスポートされたログでテストの実行状況を確認します。
    kubectl delete -f deployment.yml
    kubectl delete -f services.yml