Yaml CircleCI-安装依赖项步骤花费的时间太长

Yaml CircleCI-安装依赖项步骤花费的时间太长,yaml,circleci,Yaml,Circleci,我的CircleCi YAML文件的安装依赖项步骤运行大约需要3分钟,我收到了关于Python 2.7将在2021年退出使用的各种警告。我能做些什么来加快速度并删除这些错误消息吗 version: 2 jobs: build: working_directory: ~/myapp docker: - image: node:10.13.0-stretch env: - DISPLAY=:99 - CHROME

我的CircleCi YAML文件的安装依赖项步骤运行大约需要3分钟,我收到了关于Python 2.7将在2021年退出使用的各种警告。我能做些什么来加快速度并删除这些错误消息吗

version: 2
jobs:
  build:
    working_directory: ~/myapp
    docker:
      - image: node:10.13.0-stretch
        env:
          - DISPLAY=:99
          - CHROME_BIN=/usr/bin/google-chrome
    steps:
      - checkout
      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "package.json" }}
            # fallback to using the latest cache if no exact match is found
            - v1-dependencies-
      - run:
          name: Install Dependencies
          command: |
            npm install -g @angular/cli
            npm install
            npm install -g firebase-tools
            apt-get -y -qq update
            apt-get -y -qq install gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
            if [[ "$CIRCLE_BRANCH" == "master" ]]; then
              apt-get -y -qq update
              apt-get -y -qq install python-dev
              curl -O https://bootstrap.pypa.io/get-pip.py
              python get-pip.py --user
              echo 'export PATH=/root/.local/bin:$PATH' >> ~/.bash_profile
              source ~/.bash_profile
              pip install awscli --upgrade --user
              ~/.local/bin/aws configure set default.s3.signature_version s3v4
            fi
      - save_cache:
          paths:
            - node_modules
          key: v1-dependencies-{{ checksum "package.json" }}
      - run:
          name: Deploy to AWS
          command: |
            if [[ "$CIRCLE_BRANCH" == "master" ]]; then
              ng build --prod --configuration=production --progress=false
              ~/.local/bin/aws --region eu-west-2 s3 sync /root/myapp/dist/myapp/ s3://$AWS_BUCKET_TARGET --delete --exclude '.git/*'
              ~/.local/bin/aws cloudfront create-invalidation --distribution-id $AWS_DISTRIBUTION_ID --paths '/*'
            fi
    branches:
      only:
        - master

根据您的配置,看起来您正在使用Python构建一个角度应用程序并部署到AWS

以下是一些建议:

  • 与使用节点映像和安装Python不同,您是否考虑过使用节点映像?这些映像已经安装了Python和Node。这将大大缩短时间
  • 还注意到您正在全球安装Angular CLI和firebase工具。全局npm模块安装在与当前项目的
    节点\u模块
    不同的文件夹中。如果您也想缓存这些依赖项,建议只安装而不带
    -g
    标志,或者另外将全局模块文件夹提供给
    save\u cache
    restore\u cache
    步骤,这样您就不必每次从头重新安装这些依赖项
  • 如果您没有使用CircleCI的服务器产品,则可以使用v2.1配置并根据需要使用CircleCI安装CLI。下面是一个例子:
版本:orbs需要2.1#2.1
球体:
aws cli:circleci/aws-cli@1.3.0
# ...
步骤:
#…根据需要执行其他依赖项安装步骤
-aws cli/install#调用orb中的预制命令
-运行:
命令:|
aws配置集default.s3.signature\u版本s3v4
#……等等。
  • 这与问题并不完全相关,但我注意到您正在使用一些不推荐的配置。您可以在所有步骤中删除对
    $CIRCLE\u BRANCH
    的bash检查以及最后的
    分支
    键。相反,请声明一个类似的:
工作流:
build deploy:#您选择的任意工作流名称
工作:
-建造:
过滤器:
分支机构:
仅限:船长