使用GitLab CI与AWS CDK(python)进行CI / CD的最佳方法是什么?

布里咖啡

我将AWS CDK(带有Python)用于在Fargate上运行的容器化应用程序。我想cdk deploy在GitLab CI进程中运行,并将git标记作为环境变量传递,以替换在Fargate中运行的容器。我目前正在使用CloudFormation(aws cloudformation update-stack ...做类似的事情是否有人通过AWS CDK进行CI / CD?有更好的方法吗?

另外,对于该工作,我应该为我的基本图像使用什么?我当时以为我可以从python容器开始安装节点,反之亦然。也许有一个我还没找到的预制容器。

这是一个似乎运行良好的开始:

CDK:
  image: python:3.8
  stage: deploy
  before_script:
    - apt-get -qq update && apt-get -y install nodejs npm
    - node -v
    - npm i -g aws-cdk
    - cd awscdk
    - pip3 install -r requirements.txt
  script:
    - cdk diff
    - cdk deploy --require-approval never

编辑2020-05-04:

CDK可以在期间构建docker映像cdk deploy,但是需要访问docker。如果您不需要docker,则上述CI作业定义应该没问题。这是我当前正在使用的CI作业:

cdk deploy:
  image: docker:19.03.1
  services:
    - docker:19.03.5-dind
  stage: deploy
  only:
    - master
  before_script:
    - apk add --no-cache python3
    - python3 -V
    - pip3 -V
    - apk add nodejs-current npm
    - node -v
    - npm i -g aws-cdk
    - cd awscdk
    - pip3 install -r requirements.txt
  script:
    - cdk bootstrap aws://$AWS_ACCOUNT_ID/$AWS_DEFAULT_REGION
    - cdk deploy --require-approval never

cdk bootstrap是必需的,因为我在cdk代码中使用资产:

        self.backend_task.add_container(
            "DjangoBackend",
            image=ecs.AssetImage(
                "../backend",
                file="scripts/prod/Dockerfile",
                target="production",
            ),
            logging=ecs.LogDrivers.aws_logs(stream_prefix="Backend"),
            environment=environment_variables,
            command=["/start_prod.sh"],
        )

以下是更多信息cdk bootstraphttps : //github.com/aws/aws-cdk/blob/master/design/cdk-bootstrap.md

乔尼·里梅克

如果您拥有lambda或ECS资产,则绝对必须在CI / CD管道内使用CDK部署,否则,您可以运行CDK合成器并将生成的Cloudformation传递给AWS Code Deploy。这意味着您将花费大量CI / CD进行部署,这可能会耗尽您的免费层构建时间,或者仅意味着您需要支付更多费用(AWS Code Deploy是免费的)

我在CircleCi中使用Golang做类似的事情。我使用Go基本映像并安装nodejs和cdk。我使用此基本映像来构建我的所有go二进制文件,vuejs前端并编译cdk打字稿并进行部署。

FROM golang:1.13

RUN go get -u -d github.com/magefile/mage
WORKDIR $GOPATH/src/github.com/magefile/mage
RUN go run bootstrap.go

RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN apt-get install -y nodejs
RUN npm i -g [email protected]
RUN npm i -g typescript
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt update && apt install yarn

希望对您有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用GitLab CI / CD等GitHub操作

来自分类Dev

在gitlab CI / CD中使用硒

来自分类Dev

从gitlab ci / cd到AWS EC2

来自分类Dev

使用MATLAB的Gitlab CI

来自分类Dev

在AWS CDK中使用参数存储值的最佳方法是什么

来自分类Dev

使用Gitlab CI / CD批量发布Docker更新代码

来自分类Dev

在Gitlab CI / CD中配置REDIS以在Django中使用

来自分类Dev

Gitlab CI / CD无法从.gitlab-ci.yml进行git push

来自分类Dev

从AWS Lambda触发Gitlab-ci

来自分类Dev

将docker用于CI / CD时,节省空间的最佳实践是什么?

来自分类Dev

使用GitLab CI连续交付

来自分类Dev

用python归档数据CD / DVD的最佳方法是什么?

来自分类Dev

如何使用docker在Gitlab CI中进行gitversion?

来自分类Dev

Gitlab CI / Gitlab Runner-使用哪个版本的gitlab-ci.yml?

来自分类Dev

如何使用gitlab ci测试django

来自分类Dev

使用Gitlab CI生成Android构建

来自分类Dev

GitLab CI无法安装/使用PhantomJS

来自分类Dev

使用keycloak作为gitlab-ci服务

来自分类Dev

使用GitLab CI构建奇异容器

来自分类Dev

使用简单的Django项目设置gitlab CI

来自分类Dev

如何使用ros | 与gitlab-ci cmake

来自分类Dev

使用gitlab-ci构建Erlang

来自分类Dev

使用 Gitlab-CI 构建 Webpack 失败

来自分类Dev

使用自定义DIND服务的GitLab CI / CD Docker-In-Docker失败

来自分类Dev

使用docker-compose将Gitlab CI / CD移植到Digital Ocean以获取多个存储库

来自分类Dev

使用自定义DIND服务的GitLab CI / CD Docker-In-Docker失败

来自分类Dev

使用gitlab ci cd管道时在node js应用中访问env变量

来自分类Dev

如何在GitLab CI中使用Python和R?

来自分类Dev

在Gitlab CI / CD的审查阶段访问postgresql

Related 相关文章

热门标签

归档