Как сохранить данные между заданиями CircleCI, используя рабочие процессы? Конкретно gcloud-cli использует orbs - PullRequest
0 голосов
/ 31 мая 2019

Я хочу запустить команду gcloud как часть одного из моих заданий.Конечно, когда я первоначально запустил задание, я получил ошибку «команда не найдена».CircleCI предлагает использовать gcloud-cli шар для установки и инициализации gcloud cli.

Мой рабочий процесс выглядит следующим образом:

workflows:
  build and deploy:
    jobs:
      - gcp-cli/install_and_initialize_cli:
          gcloud-service-key: insert_key_as_env_variable
          google-project-id: my_project_id
          google-compute-zone: my_compute_zone
      - build_job:
          requires:
            - gcp-cli/install_and_initialize_cli

Шаг gcp-cli/install_and_initialize_cli работает отлично, но когда я запускаюbuild_job там написано gcloud команда не найдена.Я предполагал, что запуск шара gcp-cli сделает gcloud-cli доступным для всех последующих заданий.

Есть ли способ сделать gcloud-cli доступным для последующих заданий?Я пытался сохранить / прикрепить рабочие пространства, но безуспешно (это не значит, что это не является возможным решением).Другое возможное решение состоит в том, чтобы найти способ запустить шар gcp-cli как часть моего build_job, но я также не могу понять, как это сделать.

Для справки мой (очень раздетый)вниз) build_job:

build_job:
    docker:
      - image: circleci/node
    steps:
      - run: gcloud auth configure-docker // FAILS HERE - moved to top on purpose

      - checkout

      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "package.json" }}
            # fallback to using the latest cache if no exact match is found
            - v1-dependencies-

      - run:
          name: Install Docker Compose
          command: |
            curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
            chmod +x ~/docker-compose
            sudo mv ~/docker-compose /usr/local/bin/docker-compose

      - setup_remote_docker

....

1 Ответ

0 голосов
/ 31 мая 2019

Если вы используете circleci/node в качестве базового образа для всех заданий и если вы хотите, чтобы gcloud был доступен во всех из них, я бы сделал следующее:

Создайте новый конвейер дляСоздайте образ Docker, чтобы при его нажатии в системе управления версиями он создавал образ и помещал его в реестр Docker.Используйте FROM circleci/node в начале Dockerfile, а затем установите gcloud, как обычно в Linux.Пометьте его URL-адресом вашего реестра, например, registry.gitlab.com/grant-isdale/gcloud-node, чтобы вы могли нажать и вытащить его (естественно, подставив соответствующее имя пользователя и имя реестра).

Затем, в ваших заданиях CircleCI,используйте registry.gitlab.com/grant-isdale/gcloud-node вместо circleci/node.Вы можете добавить информацию об аутентификации здесь, если реестр требует аутентификации.

...