仅在合并到 master 时运行任务

我使用以下按预期工作的配置,它在每个 PR 上运行命令或合并到 master,现在我想做一些集成测试,我只想在合并到 master 时运行,所有 PR 应该保持不变(并像以前一样运行以下配置)。这里的细微差别是,对于集成测试,我需要其他 docker 映像和不同的运行命令来执行(只有在合并到主服务器时才应该执行),是否可以使用 CircleCI 来完成?


# Golang CircleCI 2.0 configuration file

version: 2

jobs:

  build:

    docker:

      # specify the version

      - image: circleci/golang:1.11

    working_directory: /go/src/sbr

    steps:

      - checkout

      - run: go version

      - run: go env

      - run: go get -v -t -d ./...

      - run: go test -v ./...

我尝试在现有图像下添加另一个 docker 图像,但出现错误


更新:


version: 2

jobs:

  build:

    docker:

      - image: circleci/golang:1.11

    working_directory: /go/src/sbr

    steps:

      - checkout

      - run: go version

      - run: go env

      - run: go get -v -t -d ./...

      - run: go test -v ./...


  test-integration:

    docker:

      - image: other-image


workflows:

  version: 2

  builds:

    jobs:

      - build


  integration-test:

    jobs:

      - test-integration:

          requires:

            - build

          filters:

            branches:

              only: master

这里的问题是我在添加到第二个工作流程时出错require


  requires:

    - build 

我希望在测试之前test-integration它也能build按照要求运行作业。我做错了什么?


错误是:


requires job \"build\" but \"build\" is not part of this workflow.

# At least one job in the workflow must have no dependencies.

# The following jobs are unreachable: integration

# -------


# Don't rerun this job. Rerunning will have no effect.

false


DIEA
浏览 135回答 1
1回答

郎朗坤

您的配置有一个名为的作业build,没有工作流。听起来您想要的是为集成测试运行第二个作业,并且仅在分支为 master 时才运行第二个作业。要完成这两个任务,您将使用包含两个作业的工作流。这可能是什么样子的一个例子:jobs:  build:    docker:     - image: circleci/golang:1.11    ...  test-integration:    docker:      - image: other-image    ...workflows:  version: 2  workflow-name:    jobs:       - build      - test-integration:          filters:            branches:              only: master
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go