我使用以下配置,该配置可以按预期工作,它在每个PR上运行命令或合并到主服务器,现在我想进行一些集成测试,仅在合并到主服务器时才运行 strong>,所有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
答案 0 :(得分:1)
您的配置只有一个名为build
的作业,没有工作流程。听起来您想要的是运行第二项作业以进行集成测试,并且仅当分支为master时才运行第二项作业。要完成这两个任务,您将使用具有两个作业的工作流。
请参见https://circleci.com/docs/2.0/configuration-reference/#workflows
一个可能看起来像的例子:
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