doctl 在 gitlab-ci 中不可用
我正在构建一个 Gitlab-CI 管道,将 Spring Boot 应用程序部署到托管在 DigitalOcean 上的 Kubernetes 集群。 幸运的是,我才刚刚开始做这件事,所以几乎没有什么臃肿之处,而且我认为在继续构建一些疯狂的东西之前,我应该先测试一下是否所有东西都连接正确。
本质上,我有一个 Gitlab-CI 作业,它会提取此映像:
digitalocean/doctl:1.87.0
,然后我尝试在作业的
script
部分运行多个
doctl
命令。这个非常简单的“部署”脚本的结果:
deploy-to-kubernetes:
stage: deploy
image: digitalocean/doctl:1.87.0
script:
- doctl --help
看起来像这样:
Error: unknown command "sh" for "doctl"
Run 'doctl --help' for usage.
Cleaning up project directory and file based variables 00:00
ERROR: Job failed: exit code 255
经过一番挖掘和谷歌搜索以及绞尽脑汁之后,我偶然发现了这个 帖子 ,并认为它可能也适用于 doctl 图像,因此我将我的 Gitlab-CI 作业更新为:
deploy-to-kubernetes:
stage: deploy
image:
name: digitalocean/doctl:1.87.0
entrypoint: [""]
script:
- doctl --help
结果如下:
$ doctl --help
/bin/bash: line 128: doctl: command not found
Cleaning up project directory and file based variables 00:00
ERROR: Job failed: exit code 1
我很确定我做了一些绝对愚蠢的事情,但我不知道那是什么,所以如果有人能帮忙非常感谢,如果您需要更多信息,请告诉我。
仅供参考:这是我在 StackOverflow 上发布的第一个问题,因此非常感谢您对我需要更改、改进等方面的任何反馈!
谢谢!
$PATH
包含此图像中的默认值。但
doctl
可在
/app/doctl
中使用。因此您可以这样使用它:
/app/doctl %command%
(例如,
/app/doctl 版本
)
我遇到了同样的问题,并选择只使用常规的 alpine 容器并自行安装 doctl 工具。不过,这是一种解决方法。
deploy-to-kubernetes:
stage: deploy
image: debian:11.6-slim
before_script:
- apt update && apt -y upgrade && apt-get install -y curl
- curl -Lo doctl.tar.gz https://github.com/digitalocean/doctl/releases/download/v1.91.0/doctl-1.91.0-linux-amd64.tar.gz && tar xf doctl.tar.gz
- chmod u+x doctl
- mv doctl /usr/local/bin/doctl
script:
- doctl --help
我遇到了同样的问题,下面这个工作对我有用:
"Deploy to DigitalOcean":
image:
name: digitalocean/doctl:latest
entrypoint: [""]
stage: deploy
needs:
- job: "Test Docker image"
script:
- /app/doctl auth init
- /app/doctl apps create-deployment $DIGITALOCEAN_STUDENT_BACKEND_ID
only:
- master
但是它还需要
DIGITALOCEAN_ACCESS_TOKEN
变量
和
DigitalOcean 令牌