编程技术分享平台

网站首页 > 技术教程 正文

vue + jenkins + gitlab实现CI/CD

xnh888 2024-09-28 02:52:32 技术教程 23 ℃ 0 评论

在现代Web开发中,实现持续集成/持续部署(CI/CD)是提升开发效率和代码质量的重要手段。本文将详细介绍如何使用Vue.js、Jenkins和GitLab来实现自动化打包和部署的过程。

1. 环境准备

  • GitLab: 用于版本控制。
  • Jenkins: 用于自动化构建和部署。
  • Vue.js: 前端框架。
  • Nginx: 作为Web服务器(可选,视部署环境而定)。

2. 项目结构

假设你的Vue.js项目结构如下:

my-vue-app/  
├── public/  
├── src/  
├── .gitlab-ci.yml  
├── Jenkinsfile  
├── package.json  
└── ...

3. 配置GitLab CI

在GitLab中,使用.gitlab-ci.yml文件来定义CI流水线。这个文件会告诉GitLab在代码提交时执行哪些步骤。

.gitlab-ci.yml示例

stages:  
  - build  
  - deploy  
  
build_job:  
  stage: build  
  script:  
    - npm install  
    - npm run build  
  artifacts:  
    paths:  
      - dist/  
  only:  
    - main  # 只在main分支触发  
  
deploy_job:  
  stage: deploy  
  script:  
    - echo "Triggering Jenkins deployment..."  
    - curl -X POST "http://your-jenkins-url/generic-webhook-trigger/invoke?token=your-jenkins-token"  
  only:  
    - main
  • build_job: 安装依赖并构建项目。
  • deploy_job: 触发Jenkins部署(通过Jenkins的Generic Webhook Trigger插件)。

4. 配置Jenkins

安装所需插件

  • Git Plugin
  • Generic Webhook Trigger Plugin
  • Publish Over SSH Plugin (如果需要将文件传输到远程服务器)

创建Jenkins Pipeline

在Jenkins中创建一个新的Pipeline类型的Job,并将下面的脚本内容粘贴到Pipeline的Script框中或创建一个Jenkinsfile。

Jenkinsfile示例

pipeline {  
    agent any  
  
    environment {  
        // 配置环境变量  
        GIT_REPO = 'http://your-gitlab-url/your-group/my-vue-app.git'  
        GIT_CREDENTIALS = 'your-git-credentials-id'  // 在Jenkins中配置的Git凭证ID  
        DEPLOY_DIR = '/path/to/your/deploy/directory'  // 部署目录  
    }  
  
    stages {  
        stage('Checkout') {  
            steps {  
                git credentialsId: GIT_CREDENTIALS, url: GIT_REPO, branch: 'main'  
            }  
        }  
  
        stage('Build') {  
            steps {  
                script {  
                    // 如果在Jenkins服务器上已经安装了Node.js和npm,可以直接执行  
                    sh 'npm install'  
                    sh 'npm run build'  
                }  
            }  
        }  
  
        stage('Deploy') {  
            steps {  
                script {  
                    // 将构建结果复制到部署目录  
                    sh "cp -r dist/* ${DEPLOY_DIR}"  
  
                    // 如果需要,可以通过SSH发布到远程服务器  
                    // sshPublisher(  
                    //     publishers: [  
                    //         sshPublisherDesc(  
                    //             configName: 'your-ssh-config',  
                    //             transfers: [  
                    //                 sshTransfer(  
                    //                     sourceFiles: 'dist/',  
                    //                     removePrefix: 'dist',  
                    //                     remoteDirectory: '/path/to/remote/deploy/directory',  
                    //                     execCommand: 'sudo systemctl restart nginx'  // 重启Nginx服务  
                    //                 )  
                    //             ],  
                    //             usePromotionTimestamp: false,  
                    //             useWorkspaceInPromotion: false,  
                    //             verbose: true  
                    //         )  
                    //     ]  
                    // )  
                }  
            }  
        }  
    }  
  
    post {  
        success {  
            echo 'Build and deploy completed successfully.'  
        }  
        failure {  
            echo 'Build or deploy failed.'  
        }  
    }  
}

5. 配置Jenkins的Webhook

在Jenkins中配置Generic Webhook Trigger,以便在GitLab触发时能够接收并处理。

  1. 进入你的Jenkins Job配置页面。
  2. 在“构建触发器”部分,勾选“Generic Webhook Trigger”。
  3. 配置Token(与.gitlab-ci.yml中的token一致)。

6. 配置Git凭证和SSH(如果需要)

  • 在Jenkins中配置Git凭证,以便在Pipeline中拉取代码。
  • 如果需要将文件传输到远程服务器,配置SSH以及相应的sshPublisher部分。

7. 触发CI/CD流程

  1. 提交代码到GitLab。
  2. GitLab CI会首先运行,执行构建步骤并生成构建产物。
  3. 构建成功后,GitLab CI触发Jenkins Webhook。
  4. Jenkins接管,拉取最新代码,再次构建,并部署到指定目录。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表