Kubectl:在 travis ci 上找不到命令
Kubectl: command not found on travis ci
我正在尝试使用 Travis CI 部署 kubernetes 集群,但出现以下错误
编辑:
invalid argument "myAcc/imgName:" for t: invalid reference format
See docker build --help
./deploy.sh: line 1: kubectl: command not found
这是我的 travis 配置文件
travis.yml
sudo: required
services:
- docker
env:
global:
- SHA-$(git rev-parse HEAD)
- CLOUDSDK_CORE_DISABLE_PROMPTS=1
before-install:
- openssl aes-256-cbc -K $encrypted_0c35eebf403c_key -iv $encrypted_0c35eebf403c_iv -in service-account.json.enc -out service-account.json -d
- curl https://sdk.cloud.google.com | bash > /dev/null
- source $HOME/google-cloud-sdk/path.bash.inc
- gcloud components update kubectl
- gcloud auth activate-service-account --key-file service-account.json
- gcloud config set project robust-chess-234104
- gcloud config set compute/zone asia-south1-a
- gcloud container clusters get-credentials standard-cluster-1
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
deploy:
provider: script
script: bash ./deploy.sh
on:
branch: master
这是我的部署脚本
deploy.sh
doccker build -t myAcc/imgName:$SHA
docker push myAcc/imgName:$SHA
kubectl apply -k8s
我想 gcloud components update kubectl
命令不起作用。有什么想法吗?
谢谢!
第一个问题invalid argument "myAcc/imgName:" for t: invalid reference format
因为变量$SHA
没有按预期定义。定义变量时存在语法问题,您应该在 SHA 之后使用 =
而不是 -
,因此它应该是这样的:
- SHA=$(git rev-parse HEAD)
第二个与kubectl相关的问题需要根据docs使用如下命令安装:
gcloud components install kubectl
更新:
在 Travis-CI 上测试此文件后,我能够找出问题所在。您应该使用 before_install
而不是 before-install
,因此在您的情况下,安装前的步骤永远不会执行。
# travis.yml
---
env:
global:
- CLOUDSDK_CORE_DISABLE_PROMPTS=1
before_install:
- curl https://sdk.cloud.google.com | bash > /dev/null
- source $HOME/google-cloud-sdk/path.bash.inc
- gcloud components install kubectl
script: kubectl version
以及构建结果的最后部分:
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.7", GitCommit:"65ecaf0671341311ce6aea0edab46ee69f65d59e", GitTreeState:"clean", BuildDate:"2019-01-24T19:32:00Z", GoVersion:"go1.10.7", Compiler:"gc", Platform:"linux/amd64"}
我正在尝试使用 Travis CI 部署 kubernetes 集群,但出现以下错误
编辑:
invalid argument "myAcc/imgName:" for t: invalid reference format
See docker build --help
./deploy.sh: line 1: kubectl: command not found
这是我的 travis 配置文件
travis.yml
sudo: required
services:
- docker
env:
global:
- SHA-$(git rev-parse HEAD)
- CLOUDSDK_CORE_DISABLE_PROMPTS=1
before-install:
- openssl aes-256-cbc -K $encrypted_0c35eebf403c_key -iv $encrypted_0c35eebf403c_iv -in service-account.json.enc -out service-account.json -d
- curl https://sdk.cloud.google.com | bash > /dev/null
- source $HOME/google-cloud-sdk/path.bash.inc
- gcloud components update kubectl
- gcloud auth activate-service-account --key-file service-account.json
- gcloud config set project robust-chess-234104
- gcloud config set compute/zone asia-south1-a
- gcloud container clusters get-credentials standard-cluster-1
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
deploy:
provider: script
script: bash ./deploy.sh
on:
branch: master
这是我的部署脚本
deploy.sh
doccker build -t myAcc/imgName:$SHA
docker push myAcc/imgName:$SHA
kubectl apply -k8s
我想 gcloud components update kubectl
命令不起作用。有什么想法吗?
谢谢!
第一个问题invalid argument "myAcc/imgName:" for t: invalid reference format
因为变量$SHA
没有按预期定义。定义变量时存在语法问题,您应该在 SHA 之后使用 =
而不是 -
,因此它应该是这样的:
- SHA=$(git rev-parse HEAD)
第二个与kubectl相关的问题需要根据docs使用如下命令安装:
gcloud components install kubectl
更新:
在 Travis-CI 上测试此文件后,我能够找出问题所在。您应该使用 before_install
而不是 before-install
,因此在您的情况下,安装前的步骤永远不会执行。
# travis.yml
---
env:
global:
- CLOUDSDK_CORE_DISABLE_PROMPTS=1
before_install:
- curl https://sdk.cloud.google.com | bash > /dev/null
- source $HOME/google-cloud-sdk/path.bash.inc
- gcloud components install kubectl
script: kubectl version
以及构建结果的最后部分:
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.7", GitCommit:"65ecaf0671341311ce6aea0edab46ee69f65d59e", GitTreeState:"clean", BuildDate:"2019-01-24T19:32:00Z", GoVersion:"go1.10.7", Compiler:"gc", Platform:"linux/amd64"}