Может ли рабочий процесс CircleCI создать изображение Docker на первом этапе, а затем протестировать это изображение Docker на втором этапе? - PullRequest
1 голос
/ 27 января 2020

Я новичок в рабочих процессах CircleCI, и я хотел бы создать рабочий процесс в два этапа.

  1. Первый шаг (задание на сборку) создаст и образ pu sh a Docker в Docker реестр с определенным тегом. После успешного завершения первого шага он запустит второй шаг рабочего процесса и передаст метку изображения Docker.
  2. Затем на втором шаге будет загружено изображение с передачей на шаг 1 (например, с использованием ENV). переменная). Что-то вроде
version: 2
    jobs:
      build:
        docker:
          - image: docker.repo.ch/image:${TAG}

Существует ли какой-либо механизм для передачи значения в качестве параметра от одного задания сборки другому в рамках рабочего процесса CircleCI?

1 Ответ

3 голосов
/ 30 января 2020

Поскольку каждый шаг выполнения является новой оболочкой, переменные среды не разделяются между этапами. Если вам требуется, чтобы переменная среды была доступна более чем за один шаг, экспортируйте значение с помощью BASH_ENV.

https://circleci.com/docs/2.0/env-vars/#setting -an-environment-variable-in-a-step

Экспорт переменной для следующего задания:

workflows:
  version: 2
  pass_tag:
    jobs:
    - create_tag
    - use_tag:
        requires:
        - create_tag

executors:
  node:
    docker:
      - image: circleci/node:4.8.2

jobs:
  create_tag:
    executor: node
    steps:
    - run: echo "export MY_TAG=$CIRCLE_SHA1" >> $BASH_ENV
  use_tag:
    executor: node
    steps:
    - run: echo $MY_TAG

Pu sh & Использование docker изображений:

используйте CircleCI orbs (например, библиотеку) для построения и извлеките sh изображение:

version: 2.1
orbs:
    aws-ecr: circleci/aws-ecr@6.7.0

workflows:
  version: 2
  example:
   jobs:
      - aws-ecr/build-and-push-image:
          account-url: DEV_AWS_ECR_ACCOUNT_URL
          aws-access-key-id: DEV_ACCESS_KEY_ID
          aws-secret-access-key: DEV_SECRET_ACCESS_KEY
          create-repo: true
          repo: '${CIRCLE_PROJECT_REPONAME}'
          region: AWS_DEFAULT_REGION
          tag: '${CIRCLE_SHA1}'
      -  pull_image:
          requires:
              - aws-ecr/build-and-push-image

jobs:
    pull_image:
        *** pull and use your image here ***
...