如何使用ci / cd for zappa部署到AWS(python)

时间:2019-01-10 07:56:54

标签: amazon-web-services continuous-integration aws-code-deploy aws-codepipeline aws-codebuild

我正在使用zappa部署在AWS上。我想在AWS上实施CI / CD。 因此,我创建了一个管道,并成功完成了AWS COMMIT和AWS BUILD。

我无法使用AWS CODE DEPLOY进行部署。

Buildspec.yaml看起来像这样:

version: 0.2


    phases:
      install:
        commands:
          - echo Setting up virtualenv
          - python -m venv venv
          - source venv/bin/activate
          - echo Installing requirements from file
          - pip install -r requirements.txt
      build:
        commands:
          - echo Build started on `date`
          - echo Building and running tests
          - python tests.py
          - flask db upgrade
      post_build:
        commands:
          - echo Build completed on `date`
          - echo Starting deployment
          - zappa update dev
          - echo Deployment completed

我应该如何在AWS上执行zappa部署或zappa更新?

我不确定如何添加创建 appspec.yaml 文件。

请帮助!卡住了!

2 个答案:

答案 0 :(得分:0)

这是我使用的buildspec.yml文件。您可以根据需要进行调整(例如,包括数据库升级命令)。

version: 0.2

phases:
  install:
    commands:
      - mkdir /tmp/src/
      - mv $CODEBUILD_SRC_DIR/* /tmp/src/
      - cd /tmp/src/
      - python3 -m venv docker_env && source docker_env/bin/activate && pip install --upgrade pip==9.0.3 && pip install -r requirements.txt && zappa update production && deactivate && rm -rf docker_env
  post_build:
    commands:
      - cd $CODEBUILD_SRC_DIR
      - rm -rf /tmp/src/
      - echo Build completed on `date`

请注意,这是在CodeBuild中使用Docker映像danielwhatmuff/zappa:python3.6。我使用此图像,因为它基于AWS Lambda,并已针对Zappa进行了调整。

答案 1 :(得分:-1)

Zappa更新到代码部署: 您的Buildspec.yaml看起来还不错,但是有一点需要考虑。

无论成功/失败,Postbuild将始终运行。可以从失败的构建中获取调试信息。

要么检查生成日志失败的原因,要么将您的yml修改为如下所示(警告:这只是草稿更改,请在系统中使用之前进行测试):

version: 0.2
  phases:
    install:
      commands:
        - yum -y groupinstall development
        - yum -y install zlib-devel
        - yum -y install openssl-devel
        - wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
        - tar xJf Python-3.6.0.tar.xz
        - cd Python-3.6.0
        - ./configure
        - make
        - make install 
        - ln -s /usr/local/bin/python3.6 /usr/bin/python3
        - curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
        - python3 get-pip.py
        - pip3 install virtualenv
        - virtualenv -p /usr/bin/python3 venv
        - source venv/bin/activate
        - pip3 install -r requirements.txt
    build:
      commands:
        - echo Build started on `date`
        - echo Building and running tests
        - python3 tests.py
        - flask db upgrade
    post_build:
      commands:
        - if [ $CODEBUILD_BUILD_SUCCEEDING = 1 ]; then echo Build completed on `date`; echo Starting deployment; zappa update dev; else echo Build failed ignoring deployment; fi
        - echo Deployment completed

希望它能回答。

Zappa更新到AWS

以下是在AWS上进行Zappa更新的步骤

  1. 使用IAM用户配置AWS
  2. 使用命令在本地主机中配置AWS cli   一种。 pip安装awscli   b。 AWS配置
  3. 调用“ Zappa初始化”,它将根据提供的详细信息生成zappa_settings.json。
  4. Zappa部署<name provided for environment in step3>

现在,您的应用程序将部署到AWS。每当您需要更新通话

Zappa更新<name provided for environment in step3>