我希望在我的一个作业中运行一个gcloud命令。当然,当我第一次运行作业时,我得到了错误“没有找到命令”。CircleCI建议使用gcloud orb来安装和初始化gcloud-cli 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找到步骤工作得很好,但是当我运行build_job时,它显示没有找到gcloud命令。我假设运行gcp-cli orb会使gcloud-cli可用于所有下游作业。
有没有办法让gcloud-cli可用于下游作业?我尝试过持久化/附加工作区,但没有成功(这并不意味着这不是一个可行的解决方案)。另一种可能的解决方案是找到一种方法来运行gcp-cli orb作为我的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
....发布于 2019-09-30 05:46:03
我只是为了一个业余爱好项目自己解决了这个问题。我认为在orb示例中列出的gcp-cli/install_and_initialize_cli作业是在转移注意力;正如您注意到的,它将在自己的执行器中运行,并在您进入工作流中的下一个作业时消失。
解决此问题的一种简单方法是将gcp-cli/install command作为build_job中的一个步骤运行。一旦安装了gcloud cli,就可以运行适当的身份验证和部署命令。在您的例子中,您应该这样做:
build_job:
docker:
- image: circleci/node
steps:
- gcp-cli/install
# do gcloud stuff here希望这能有所帮助!
发布于 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。如果注册表需要身份验证,您可以在此处添加身份验证详细信息。
https://stackoverflow.com/questions/56396425
复制相似问题