Jenkins上面使用pnpm打包

问题

前端也想用Jenkins的CI/CD工作流。

步骤

Jenkins安装NodeJS插件

NodeJS
安装完成,记得重启Jenkins。

全局配置nodejs

全局nodejs配置

Jenksinfile

pipeline {
  agent any

  tools {nodejs "18.15.0"}

  stages {
    stage('Check tool version') {
      steps {
        sh '''
            node -v
            npm -v
            npm config ls
        '''
      }
    }
    stage('Build Preparation') {
        steps {
            sh '''
                corepack enable pnpm
                pnpm i
            '''
        }
    }
    stage('Build') {
        steps {
            script {
                if (env.BRANCH_NAME.startsWith('develop')){
                    sh '''
                        pnpm run build:dev
                    '''
                } else if (env.BRANCH_NAME.startsWith('uat')){
                    sh '''
                        pnpm run build:uat
                    '''
                } else {
                    echo 'Skipping pnpm run.'
                }
            }
        }
    }
    stage('S3 Sync') {
        steps {
            script {
                if (env.BRANCH_NAME.startsWith('release')){
                    sh '''
                         aws s3 sync ./dist/ s3://prod-web-xxxx/ --exclude "xxxx/*" --exclude "h5/*" --delete
                    '''
                } else if (env.BRANCH_NAME.startsWith('uat')){
                    sh '''
                        aws s3 sync ./dist/ s3://uat-web-xxxx/ --exclude "xxxx/*" --exclude "h5/*" --delete
                    '''
                } else {
                    echo 'Skipping S3 Sync.'
                }
            }
        }
    }
    stage('CDN invalidation') {
        steps {
            script {
                if (env.BRANCH_NAME.startsWith('release')){
                    sh '''
                         aws cloudfront create-invalidation --distribution-id XXXX --paths '/*'
                    '''
                } else if (env.BRANCH_NAME.startsWith('uat')){
                    sh '''
                        aws cloudfront create-invalidation --distribution-id xxxx --paths '/*'
                    '''
                } else {
                    echo 'Skipping CDN invalidation.'
                }
            }
        }
    }
  }
}


这里的18.15.0必须与上一步中Jenkins安装的NodeJS名称一致。这里还涉及到将文件上传到s3桶和刷新CDN的过程。

创建Jenkins多分支项目

创建入口页面
创建多分支流水线
设置git源
这里设置git源复制一点点,最后,保存应用。

S3同步部署文件权限(可选)

我这里用的是AWS云,所以,这里需要对运行的Jenkins需要设置相关权限。

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

CloudFront刷新权限(可选)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "cloudfront:CreateInvalidation",
            "Resource": "arn:aws:cloudfront::xxxxxxx:distribution/xxxxxxx"
        }
    ]
}

总结

到这里Jenkins打包前端的工程就结束了。aws cli挺好用的,要是Jenkins出个官方插件就好了。

参考

相关推荐

  1. pnpm 使用

    2024-04-14 07:26:01       21 阅读
  2. Jenkins打包问题

    2024-04-14 07:26:01       44 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-14 07:26:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-14 07:26:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-14 07:26:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-14 07:26:01       20 阅读

热门阅读

  1. MySQL-流程控制语句

    2024-04-14 07:26:01       14 阅读
  2. C语言每日一题(68)无重复字符的最长字串

    2024-04-14 07:26:01       17 阅读
  3. ubuntu 更新或更改GCC/G++

    2024-04-14 07:26:01       48 阅读
  4. 静态库和动态库

    2024-04-14 07:26:01       22 阅读
  5. 数字图像处理—图像形状特征

    2024-04-14 07:26:01       62 阅读
  6. 在Linux中,解压和删除压缩文件的命令

    2024-04-14 07:26:01       54 阅读
  7. 算力服务器包含哪些业务?

    2024-04-14 07:26:01       33 阅读
  8. 网站如何一定程度上防止ddos和压力测试

    2024-04-14 07:26:01       20 阅读
  9. Linux nfs挂载失败处理

    2024-04-14 07:26:01       25 阅读