草庐IT

40、jenkins部署vue项目

无休止符 2023-08-30 原文

目录

前言

前面我们已经学习了jenkin的持续集成与部署,接下来我们将使用jenkin来部署我们之前已经完成的微服务项目

一、服务器部署分析

  • PS特殊说明:ng服务器、go服务器和py服务器,如图所示是各要部署在不同的服务器中的;因为电脑原因,就不分别部署了,都部署到一台服务器中,跟图示的区别是IP地址的不同,其他没有区别;之后的说明我们会以jenkins服务器、测试服务器来区分

二、手动部署vue项目

先了解如何手动部署vue项目,这样后面才知道如何在jenkins中部署vue项目
因为之前的部署分析,我们在jenkins中就需要部署vue项目
所以我们直接在jenkin的服务器中安装nodejs

1 - gitee操作

  • gitee新建仓库

  • 本地电脑新建一个目录:ec_project,右键git bash;

  • 设置Git账户

    • git config --global user.name “账户名”(设置全局账户名)
    • git config --global user.email “邮箱”(设置全局邮箱)
  • 生成SSH公钥

    • 生成命令: ssh-keygen -t rsa -C “邮箱” ( 注意:这里需要敲3次回车)
    • 查看命令: cat ~/.ssh/id_rsa.pub
  • 设置账户公钥

  • 测试公钥ssh -T git@gitee.com

  • 克隆项目:先git init,然后git clone XXXXX

  • 将电商系统的源码拷贝到目录中:然后右键 TortoiseGit -> 添加 -> 选中全部 -> 确定






  • 回到git刷新下我们可以看到代码已经上传好了

2 - 启动项目

cd online-store
npm i --unsafe-perm
npm run dev
  • 这里还需要修改package.json:否则无法访问,因为不配置默认为localhost无法在局域网外访问
    • vim package.json:添加上,--host 0.0.0.0


三、nginx中部署vuejs

1 - 静态html生成

  • 使用了nginx后,我们就不需要使用npm run dev来运行了:使用命令npm run build将工程build成静态文件,路径在dist目录下

  • 将生成的dist目录get到本机电脑上运行index.html:结论是可以访问,也就说部署vuejs项目,我们只需要将生成的这些文件发送对应的服务器上就可以了

2 - 在测试服务器上安装nginx

  • 测试服务器使用docker安装nginxdocker run --name nginx -d -p 80:80 nginx:latest
  • 浏览器直接访问http://192.168.124.51/,因为nginx是80端口,所以不需要带端口

3 - 挂载nginx的配置

  • 进入nginx容器docker exec -it 容器id /bin/bash
  • 查看配置cat /etc/nginx/nginx.conf
  • 查看配置cat /etc/nginx/conf.d/default.conf
  • 新建目录docker用来存放nginx映射挂载的文件mkdir docker
  • 拷贝配置:因为我们需要把配置挂载到容器外,需要从之前可以运行的nginx容器中将配置文件复制到宿主机
    • 在宿主机中运行以下命令
      • docker cp nginx:/etc/nginx /docker/nginx/config/
      • docker cp nginx:/usr/share/nginx/html /docker/nginx/data/
      • docker cp nginx:/var/log/nginx /docker/nginx/logs/

  • 关闭并删除之前的nginx容器:也可以使用docker -rm -f nginx来删除
  • 使用挂载目录安装nginx
docker run --name nginx -p 80:80 \
-v /docker/nginx/config/nginx:/etc/nginx \
-v /docker/nginx/data/html:/usr/share/nginx/html \
-v /docker/nginx/logs/:/var/log/nginx \
-d nginx:latest

4 - 拷贝项目到nginx下

  • 首先我们需要知道静态文件需要保存在nginx的html目录

  • 将之前生成的静态文件全部上传到该目录下


四、jenkins部署vuejs

1 - free style构建

  • 新建任务
  • 源码管理 -> git
  • 构建添加shell脚本
echo "运行 npm install"
npm i --unsafe-perm
echo "运行 run build"
npm run build
echo "构建成功"

  • 如果kenkins控制台报错npm command not find,就是jenkins的用户权限问题

  • 修改jenkins的用户组为rootgpasswd -a jenkins root这一步很重要

    • groups jenkins:查看jenkins所在的用户组
  • 全局添加一个SSH配置:登录后的远程目录为根目录

  • 添加构建后操作

  • 构建运行

2 - pipeline构建

  • 新建pipeline任务
  • git流水线脚本git credentialsId: 'online-store', url: 'https://gitee.com/justoso/online-store.git'

  • shell 流水线脚本
sh '''echo "运行 npm install"
npm i --unsafe-perm
echo "运行 run build"
npm run build
echo "构建成功"'''

  • deploy 流水线脚本
sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.124.51-root', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo “success”', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'docker/nginx/data/html', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
  • 这里先使用下面的pipeline脚本运行下流水线的Pepeline script模式:成功之后我们再转换成SCM模式
pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                git credentialsId: 'online-store', url: 'https://gitee.com/justoso/online-store.git'
            }
        }
        
        stage('build project') {
            steps {
                sh '''echo "运行 npm install"
                npm i --unsafe-perm
                echo "运行 run build"
                npm run build
                echo "构建成功"'''
            }
        }
        
        stage('deploy project') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.124.51-root', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo “success”', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'docker/nginx/data/html', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}

  • 在本地项目根目录中添加Jenkinsfile:并将上面的pipeline脚本保存到Jenkinsfile中,add、提交、推送到online-store的仓库中

  • Pipeline SCM实现


有关40、jenkins部署vue项目的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  3. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  4. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  5. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  6. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  7. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

  8. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  9. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  10. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

随机推荐