首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用工作流在CircleCI作业之间保留数据?特别是使用orbs的gcloud-cli

如何使用工作流在CircleCI作业之间保留数据?特别是使用orbs的gcloud-cli
EN

Stack Overflow用户
提问于 2019-05-31 21:52:57
回答 2查看 419关注 0票数 2

我希望在我的一个作业中运行一个gcloud命令。当然,当我第一次运行作业时,我得到了错误“没有找到命令”。CircleCI建议使用gcloud orb来安装和初始化gcloud-cli cli。

我的工作流程如下所示:

代码语言:javascript
复制
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

找到步骤工作得很好,但是当我运行build_job时,它显示没有找到gcloud命令。我假设运行gcp-cli orb会使gcloud-cli可用于所有下游作业。

有没有办法让gcloud-cli可用于下游作业?我尝试过持久化/附加工作区,但没有成功(这并不意味着这不是一个可行的解决方案)。另一种可能的解决方案是找到一种方法来运行gcp-cli orb作为我的build_job的一部分,但我也不太清楚如何做到这一点。

作为参考,我的(非常精简的) build_job

代码语言:javascript
复制
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

....
EN

回答 2

Stack Overflow用户

发布于 2019-09-30 05:46:03

我只是为了一个业余爱好项目自己解决了这个问题。我认为在orb示例中列出的gcp-cli/install_and_initialize_cli作业是在转移注意力;正如您注意到的,它将在自己的执行器中运行,并在您进入工作流中的下一个作业时消失。

解决此问题的一种简单方法是将gcp-cli/install command作为build_job中的一个步骤运行。一旦安装了gcloud cli,就可以运行适当的身份验证和部署命令。在您的例子中,您应该这样做:

代码语言:javascript
复制
build_job:
docker:
  - image: circleci/node
steps:
   - gcp-cli/install
   # do gcloud stuff here

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2019-06-01 04:49:45

假设您在所有作业中都使用circleci/node作为基础映像,并假设您希望gcloud在所有作业中都可用,我将执行以下操作:

创建一个新的管道来构建Docker镜像,以便当您在版本控制中推送到它时,它会构建镜像并将镜像推送到Docker注册表。在Dockerfile的开头使用FROM circleci/node,然后像在Linux中一样安装gcloud。使用注册表的URL标记它,例如registry.gitlab.com/grant-isdale/gcloud-node,这样您就可以推送和拉取它(当然,适当地替换您的用户名和注册表名称)。

然后,在CircleCI作业中,使用registry.gitlab.com/grant-isdale/gcloud-node而不是circleci/node。如果注册表需要身份验证,您可以在此处添加身份验证详细信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56396425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档