CircleCI 2.0找不到awscli。

4

我正在使用CircleCI 2.0,但是他们找不到AWS,但是他们的文档明确表示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 2.0,但他们找不到aws,但是他们的文档明确说明了... - 停下来看一下URL。你正在使用Circle 2.0,但却在阅读Circle 1.0的文档。 - Mark Amery
2个回答

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}

他们有一个包含这个的Docker镜像吗?或者至少有没有任何方法可以缓存aws-cli以节省构建和部署时间? - Avivbuen
在撰写本文时,AWS和CircleCI均未提供官方的aws-cli Docker镜像。https://github.com/aws/aws-cli/issues/3553 https://github.com/aws/aws-cli/issues/3291 - minamijoyo
@Avivbuen,我已经添加了一个样例Dockerfile。请试一下。 - minamijoyo

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的示例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接