AWS CI/CD之Vuejs(pnpm版)

问题

最近需要在AWS国际版上面部署一下前端web的CI/CD。之前介绍过在CodeBuild中使用yarn进行前端构建的文章,这次我们在CodeBuild中使用pnpm方式进行构建,同时把结合CodePipeline形成前端的CI/CD工作流。

1.创建前端部署s3桶

设置桶名称:如下图:
创建桶

2.创建前端pnpm缓存桶

设置桶名称,如下图:
2.创建前端pnpm缓存桶
并依次创建好对应的文件夹,具体如下图:
创建文件夹
创建root文件夹,如下图:
创建root文件夹
在root文件下面再创建一个.pnpm-store文件夹,具体结果如下:
pnpm文件夹

3.创建刷新cloudfront自定义策略

打开IAM策略主页,准备创建刷新CDN自定义权限策略,如下图:
权限策略主页
设置权限策略内容,如下图:
cdn刷新策略
具体内容如下:

{
   
    "Version": "2012-10-17",
    "Statement": [
        {
   
            "Sid": "CloudfrontCreateInvalidation",
            "Effect": "Allow",
            "Action": "cloudfront:CreateInvalidation",
            "Resource": "*"
        }
    ]
}

设置策略名称,如下图:
设置cdn刷新策略名称

4.修改s3自定义策略

由于CodeBuild除了需要CDN刷新策略之外,还需要读写上述2个s3桶的权限。故按照上述方式设置s3上述2个桶水读写策略。创建自定义权限策略dev-codebuild-s3,设置内容如下:

{
   
    "Version": "2012-10-17",
    "Statement": [
        {
   
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::dev-xxx",
                "arn:aws:s3:::dev-pnpm-codebuild"
            ]
        },
        {
   
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": [
                "arn:aws:s3:::dev-xxx/*",
                "arn:aws:s3:::dev-pnpm-codebuild/*"
            ]
        }
    ]
}

5.创建codebuild构建vuejs工程

打开codebuild主页,开始创建新vuejs构建项目,如下图:
CodeBuild主页
开始创建新项目如下图:
创建新项目
这里第7步,需要注意一下,因为我们的vuejs项目是使用nodejs18,这个nodejs18版本,影响着我们对镜像的选择,具体参考如下链接:

version: 0.2

phases:
  install:
    runtime-versions:
      nodejs: 18
  pre_build:
    commands:
      - echo Installing source PNPM dependencies...
      - node -v
      - npm --version
      - npm install -g pnpm
      - pnpm config set store-dir /root/.pnpm-store
      - pnpm i
  build:
    commands:
      - echo Build started on `date`
      - echo Compiling the Node.js code
      - pnpm run build:dev
  post_build:
    commands:
      # 同步部署s3桶
      - aws s3 sync ./dist/ s3://dev-xxx/xxx/ --delete
      # 失效cloudfront
      - aws cloudfront create-invalidation --distribution-id ${
   CLOUDFRONT_ID} --paths "/*"
artifacts:
  files:
    - '**/*'
  base-directory: 'dist'
cache:
  paths:
    - '/root/.pnpm-store/**/*'

具体设置如下图:
设置buildspec脚本
设置依赖缓存到s3中,如下图:
s3缓存

6.CodeBuild设置自定义权限策略

找到codebuild角色,设置上述之前2个自定义策略。打开角色,具体如下图:

找到codebuild角色添加自定义策略,如下图:
添加自定义策略
找到CloudfrontCreateInvalidation自定义策略,如下图:
找到刷新CDN自定义策略
按上述方式,继续添加dev-codebuild-s3自定义策略。最终该角色,有如下权限策略:
dev-codebuild-s3自定义策略
此时,可以手动进行codebuild构建调试。

7.创建codepipeline构建工作流

打开codepipeline主页,开始创建管道,如下图:

codepipeline主页
设置管道名称,如下图:
管道名称
设置管道源,如下图:
设置源
设置管道的构建,如下图:
设置管道构建
接下来,我们跳过部署,因为我们上一步的Codebuild的脚本post_build步骤里面,就包含部署动作,所以,我们可以跳过部署阶段,如下图:
跳过构建阶段部署
跳过后,直接点击创建管道,如下图:
创建管道
到此就完成了dev环境的CI/CD构建。

效果

效果

相关推荐

  1. MySQL主从同步(openEuler

    2024-01-26 07:28:02       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-26 07:28:02       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-26 07:28:02       97 阅读
  3. 在Django里面运行非项目文件

    2024-01-26 07:28:02       78 阅读
  4. Python语言-面向对象

    2024-01-26 07:28:02       88 阅读

热门阅读

  1. Dockerr开发环境搭建

    2024-01-26 07:28:02       52 阅读
  2. 阿里云centos安装mysql,并修改初始密码

    2024-01-26 07:28:02       61 阅读
  3. SQL中的DML、DDL以及DCL是什么?

    2024-01-26 07:28:02       56 阅读
  4. 常用的gpt-4 prompt words收集7

    2024-01-26 07:28:02       54 阅读
  5. centos搭建离线仓库

    2024-01-26 07:28:02       54 阅读
  6. Git进阶

    2024-01-26 07:28:02       54 阅读
  7. 制作一个简单的HTML个人网站

    2024-01-26 07:28:02       53 阅读
  8. 登录注册页面

    2024-01-26 07:28:02       48 阅读
  9. 如何本地测试一个websocket的接口

    2024-01-26 07:28:02       57 阅读