我正在使用circleCI 2.0并且他们无法找到aws,但他们的documents明确表示aws是默认安装的
当我使用这个circle.yml
时version: 2
jobs:
build:
working_directory: ~/rian
docker:
- image: node:boron
steps:
- checkout
- run:
name: Pre-Dependencies
command: mkdir ~/rian/artifacts
- restore_cache:
keys:
- rian-{{ .Branch }}-{{ checksum "yarn.lock" }}
- rian-{{ .Branch }}
- rian-master
- run:
name: Install Dependencies
command: yarn install
- run:
name: Test
command: |
node -v
yarn run test:ci
- save_cache:
key: rian-{{ .Branch }}-{{ checksum "yarn.lock" }}
paths:
- "~/.cache/yarn"
- store_artifacts:
path: ~/rian/artifacts
destination: prefix
- store_test_results:
path: ~/rian/test-results
- deploy:
command: aws s3 sync ~/rian s3://rian-s3-dev/ --delete
发生以下错误:
/bin/bash: aws: command not found
Exited with code 127
所以,如果我以这种方式编辑代码
- deploy:
command: |
apt-get install awscli
aws s3 sync ~/rian s3://rian-s3-dev/ --delete
然后我又得到了另一种错误:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package awscli
Exited with code 100
任何人都知道如何修复这个???
答案 0 :(得分:7)
您正在阅读的文档适用于CircleCI 1.0和2.0版本:
https://circleci.com/docs/2.0/
在CircleCI 2.0中,您可以使用自己喜欢的Docker镜像。您当前设置的图像是node:boron
,其中不包含aws命令。
如果您只是想让它现在正常工作,您可以在circle.yml
中自行安装aws命令。
apt-get update && apt-get install -y awscli
但是,为了充分利用Docker的优势,建议您构建一个包含必要依赖项的自定义Docker镜像,例如aws命令。
您可以编写自定义的aws-cli Docker图像:
FROM circleci/python:3.7-stretch
ENV AWS_CLI_VERSION=1.16.138
RUN sudo pip install awscli==${AWS_CLI_VERSION}
答案 1 :(得分:1)
我在部署到AWS lambda函数并将文件推送到S3存储桶时遇到了此问题。最后解决了它,然后构建了一个docker镜像,以节省每次安装AWS CLI的时间。这是图像和回购的链接!
https://github.com/wilson208/circleci-awscli
https://hub.docker.com/r/wilson208/circleci-awscli/
如果你需要在图片上添加任何内容,请点击PR或打开问题,我会尽可能的。
编辑:
另外,请查看github上的自述文件,了解将软件包部署到Lambda或将文件推送到S3的示例