circleci 2.0 找不到 awscli
circleci 2.0 can't find awscli
我正在使用 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
有人知道如何解决这个问题吗???
您正在阅读的文档适用于 CircleCI 1.0,适用于 2.0 的文档位于此处:
https://circleci.com/docs/2.0/
在 CircleCI 2.0 中,您可以使用自己喜欢的 Docker 图片。您当前设置的镜像是node:boron
,不包含aws命令
- https://hub.docker.com/_/node/
- https://github.com/nodejs/docker-node/blob/14681db8e89c0493e8af20657883fa21488a7766/6.10/Dockerfile
如果你只是想让它暂时工作,你可以在 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}
我在部署到 AWS lambda 函数并将文件推送到 S3 存储桶时遇到了这个问题。终于解决了,然后构建了一个 docker 镜像,以节省每次安装 AWS CLI 的时间。这是图像和回购协议的 link!
https://github.com/wilson208/circleci-awscli
https://hub.docker.com/r/wilson208/circleci-awscli/
如果您需要向图片添加任何内容,请发起 PR 或提出问题,我会尽快处理。
编辑:
另外,查看 github 上的自述文件,了解将包部署到 Lambda 或将文件推送到 S3 的示例
我正在使用 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
有人知道如何解决这个问题吗???
您正在阅读的文档适用于 CircleCI 1.0,适用于 2.0 的文档位于此处:
https://circleci.com/docs/2.0/
在 CircleCI 2.0 中,您可以使用自己喜欢的 Docker 图片。您当前设置的镜像是node:boron
,不包含aws命令
- https://hub.docker.com/_/node/
- https://github.com/nodejs/docker-node/blob/14681db8e89c0493e8af20657883fa21488a7766/6.10/Dockerfile
如果你只是想让它暂时工作,你可以在 circle.yml
.
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}
我在部署到 AWS lambda 函数并将文件推送到 S3 存储桶时遇到了这个问题。终于解决了,然后构建了一个 docker 镜像,以节省每次安装 AWS CLI 的时间。这是图像和回购协议的 link!
https://github.com/wilson208/circleci-awscli
https://hub.docker.com/r/wilson208/circleci-awscli/
如果您需要向图片添加任何内容,请发起 PR 或提出问题,我会尽快处理。
编辑:
另外,查看 github 上的自述文件,了解将包部署到 Lambda 或将文件推送到 S3 的示例