Выполнять задачи только при слиянии с мастером - PullRequest
0 голосов
/ 26 января 2019

Я использую следующий конфиг, который работает как положено, он запускает команду для каждого PR или слияния с мастером, Теперь я хочу сделать интеграционный тест, который я хочу запустить только при слиянии с мастером , все PR должны оставаться такими же (и запустить следующую конфигурацию, как и раньше).нюанс здесь в том, что для интеграционного теста мне нужно другой образ докера и другая команда запуска для выполнения (которая должна выполняться только при слиянии с мастером), возможно ли это сделать с помощью 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 ./...

Я пытаюсь добавить другой образ докера под существующим, но я получаю сообщение об ошибке

обновление:

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

1 Ответ

0 голосов
/ 26 января 2019

В вашей конфигурации есть одно задание с именем build и рабочих процессов нет.Похоже, что вы хотите запустить второе задание для интеграционных тестов, а второе запустить только тогда, когда ветвь является главной.Для выполнения обоих из них вы должны использовать рабочий процесс с двумя заданиями.

См. 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
...