首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >问:如何配置cloudbuild.yaml来运行测试?

问:如何配置cloudbuild.yaml来运行测试?
EN

Stack Overflow用户
提问于 2020-05-25 17:21:27
回答 1查看 862关注 0票数 2

我想在GCP上设置一个完全自动化的CI/CD管道。在Cloud Build中,我已经有了一个构建Dockerfile并将构建好的Docker Image推送到Container Registry的cloudbuild.yaml。然而,我找不到一个解决方案来在构建Dockerfile之前运行xUnit测试,并且如果任何测试失败,Cloud Build都不应该构建Dockerfile并退出并返回错误/异常。

我目前使用的cloudbuild.yaml:

代码语言:javascript
复制
steps:
  - name: gcr.io/cloud-builders/dotnet
    entrypoint: 'bash'
    args:
        - '-c'
        - |
            dotnet test --no-build -c ${_BUILD_CONFIG} $REPO_NAME\\TestCore
    id: Test
  - name: gcr.io/cloud-builders/docker
    args:
      - build
      - '-t'
      - '$_IMAGE_NAME:$COMMIT_SHA'
      - .
      - '-f'
      - $_DOCKERFILE_NAME
    dir: $_DOCKERFILE_DIR
    id: Build
  - name: gcr.io/cloud-builders/docker
    args:
      - push
      - '$_IMAGE_NAME:$COMMIT_SHA'
    id: Push
  - name: gcr.io/cloud-builders/gke-deploy
    args:
      - prepare
      - '--filename=$_K8S_YAML_PATH'
      - '--image=$_IMAGE_NAME:$COMMIT_SHA'
      - '--app=$_K8S_APP_NAME'
      - '--version=$COMMIT_SHA'
      - '--namespace=$_K8S_NAMESPACE'
      - '--label=$_K8S_LABELS'
      - '--annotation=$_K8S_ANNOTATIONS,gcb-build-id=$BUILD_ID'
      - '--create-application-cr'
      - >-
        --links="Build
        details=https://console.cloud.google.com/cloud-build/builds/$BUILD_ID?project=$PROJECT_ID"
      - '--output=output'
    id: Prepare deploy
  - name: gcr.io/cloud-builders/gsutil
    args:
      - '-c'
      - |-
        if [ "$_OUTPUT_BUCKET_PATH" != "" ]
        then
          gsutil cp -r output/suggested gs://$_OUTPUT_BUCKET_PATH/config/$_K8S_APP_NAME/$BUILD_ID/suggested
          gsutil cp -r output/expanded gs://$_OUTPUT_BUCKET_PATH/config/$_K8S_APP_NAME/$BUILD_ID/expanded
        fi
    id: Save configs
    entrypoint: sh
  - name: gcr.io/cloud-builders/gke-deploy
    args:
      - apply
      - '--filename=output/expanded'
      - '--cluster=$_GKE_CLUSTER'
      - '--location=$_GKE_LOCATION'
      - '--namespace=$_K8S_NAMESPACE'
    id: Apply deploy
images:
  - '$_IMAGE_NAME:$COMMIT_SHA'
options:
  substitutionOption: ALLOW_LOOSE
substitutions:
  _IMAGE_NAME: gcr.io/resolute-land-274909/github_nagydominik_onlineretailer_partial
  _GKE_LOCATION: europe-west3-a
  _K8S_NAMESPACE: default
  _OUTPUT_BUCKET_PATH: resolute-land-274909_cloudbuild/deploy
  _K8S_APP_NAME: productapi
  _K8S_LABELS: ''
  _DOCKERFILE_DIR: ''
  _DOCKERFILE_NAME: Dockerfile_productapi
  _K8S_YAML_PATH: Kubernetes/productapi.yaml
  _GKE_CLUSTER: onlineretailer-cluster
  _K8S_ANNOTATIONS: gcb-trigger-id=cb8757e5-7dce-4aa9-bd43-6c4418f9dacb
tags:
  - gcp-cloud-build-deploy
  - $_K8S_APP_NAME

Cloud Source Repository tree

我知道测试步骤根本不起作用,它只是失败了,我已经尝试了几种方法,但坦率地说,我不知道它的语法。

欢迎提出任何建议!

EN

回答 1

Stack Overflow用户

发布于 2020-05-25 22:51:13

实现此目的的可能方法是在构建步骤中使用docker-compose运行测试,并从test_main服务(运行测试的服务容器)中获取退出代码。

代码语言:javascript
复制
- id: testingWithDockerCompose
  name: 'docker/compose:1.22.0'
  args: ['-f', 'docker-compose-test.yml', 'up', '--abort-on-container-exit', '--exit-code-from' , 'test_main']

要了解有关使用xUnit和docker-compose进行测试的更多信息,请阅读medium文章here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61999426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档