我希望运行gcloud
命令作为我的一项工作的一部分。当然,当我最初运行作业时,出现了“找不到命令”错误。 CircleCI建议使用gcloud-cli
Orb来安装和初始化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 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
....
答案 0 :(得分:0)
假设您在所有作业中都使用main : Program () Model Msg
main =
Browser.element
{ init = \() -> initialModel
, update = update
, view = view
, subscriptions = subscriptions
}
作为基本映像,并假设您希望circleci/node
在所有作业中均可用,那么我将执行以下操作:
创建一个新管道以构建Docker映像,以便在版本控制中将其推送到该映像时,它会生成映像并将该映像推送到Docker注册表。在gcloud
的开头使用FROM circleci/node
,然后像在Linux中一样通常安装Dockerfile
。用您的注册表网址标记它,例如像gcloud
一样,以便您可以推拉它(当然,请相应地替换您的用户名和注册表名称)。
然后,在CircleCI作业中,使用registry.gitlab.com/grant-isdale/gcloud-node
代替registry.gitlab.com/grant-isdale/gcloud-node
。如果注册表需要身份验证,则可以在此处添加身份验证详细信息。
答案 1 :(得分:0)
我只是需要自己完成一项业余爱好项目。我认为orb示例中列出的doAjaxprocess(.., handleSuccess, handleError, handleDone);
工作是一条红鲱鱼。如您所见,它将在自己的执行器中运行,并在您点击工作流程中的下一个作业时消失。
解决此问题的一种简单方法是运行gcp-cli/install
command,作为gcp-cli/install_and_initialize_cli
中的一个步骤。安装build_job
CLI之后,就可以运行适当的auth和deploy命令。对于您而言,您可以执行以下操作:
gcloud
希望有帮助!