0


vue前端使用Jenkins自动构建项目,保姆级教程

1. 开始前的准备工作

  1. 1台服务器,1个镜像仓库,安装docker
  2. 练习的话,服务器可以在[阿里云上](https://www.aliyun.com/?spm=5176.ecscore_.top-nav.dlogo.509a4df5JhX1PN)领取一个月免费ECS云服务器,如下图

在这里插入图片描述
在阿里云控台界面搜索容器镜像服务
在这里插入图片描述
添加个人版的容器镜像服务
在这里插入图片描述
然后在服务器上安装docker使用下面两个脚本文件
创建一个脚本 install_before_docker_env.sh

  1. #!/usr/bin/env bash
  2. #安装docker脚本
  3. echo '----安装docker准备开始----'
  4. echo '----安装docker开始----'
  5. #yum install docker -y
  6. curl -fsSL https://get.docker.com/ | sh
  7. echo '----安装docker结束----'
  8. echo '----查看docker版本开始----'
  9. docker --version
  10. echo '----查看docker版本结束----'
  11. echo '----更改docker 国内镜像原版本开始----'
  12. #mkdir docker
  13. mkdir -p /etc/docker
  14. chmod -R 777 /etc/docker
  15. sudo vi /etc/docker/daemon.json
  16. #{
  17. #
  18. #“registry-mirrors”: [“http://hub-mirror.c.163.com”]
  19. #
  20. #}
  21. systemctl restart docker.service
  22. echo '----更改docker 国内镜像原版本结束----'
  23. echo '----设置docker 开机启动开始----'
  24. systemctl start docker
  25. systemctl enable docker
  26. #这行不需要
  27. #yum install -y yum-utils > device-mapper-persistent-data > lvm2
  28. systemctl enable docker
  29. echo '----设置docker 开机启动结束----'
  30. echo '----安装docker准备结束----'

创建第二个脚本 install_docker-new.sh

  1. #!/usr/bin/env bash
  2. #安装docker脚本
  3. echo '----安装docker准备开始----'
  4. echo '----安装docker开始----'
  5. #yum install docker -y
  6. curl -fsSL https://get.docker.com/ | sh
  7. echo '----安装docker结束----'
  8. echo '----查看docker版本开始----'
  9. docker --version
  10. echo '----查看docker版本结束----'
  11. echo '----更改docker 国内镜像原版本开始----'
  12. #mkdir docker
  13. mkdir -p /etc/docker
  14. chmod -R 777 /etc/docker
  15. sudo vi /etc/docker/daemon.json
  16. #{
  17. #
  18. #“registry-mirrors”: [“http://hub-mirror.c.163.com”]
  19. #
  20. #}
  21. systemctl restart docker.service
  22. echo '----更改docker 国内镜像原版本结束----'
  23. echo '----设置docker 开机启动开始----'
  24. systemctl start docker
  25. systemctl enable docker
  26. #这行不需要
  27. #yum install -y yum-utils > device-mapper-persistent-data > lvm2
  28. systemctl enable docker
  29. echo '----设置docker 开机启动结束----'
  30. echo '----安装docker准备结束----'

在服务根目录下创建一个install目录将两个脚本文件放入
cdinstall目录下,执行ll看两个文件是否有可执行权限
下图就是无权限的
在这里插入图片描述
没有执行权限的话,执行命令,将两个安装docker脚本变为可执行权限

  1. chmod u+x install_before_docker_env.sh
  2. chmod u+x install_docker-new.sh

然后执行ll,查看两个文件名是否变为绿色,变为绿色即是可执行
在这里插入图片描述
执行两个脚本文件,如果报下图问题

  1. ./install_before_docker_env.sh
  2. ./install_docker-new.sh

在这里插入图片描述
则需一下操作

  1. vim install_before_docker_env.sh

进入文件后,shift + :
输入命令

  1. set ff=unix

然后按回车键保存,继续shift + :
输入命令

  1. wq

保存退出

install_docker-new.sh文件处理亦是如此

  1. vim install_docker-new.sh

进入文件后,shift + :
输入命令

  1. set ff=unix

然后按回车键保存,继续shift + :
输入命令

  1. wq

保存退出

然后执行这两个脚本,第一个执行完后,执行第二个

  1. ./install_before_docker_env.sh
  2. ./install_docker-new.sh

然后看到以下页面,就代表脚本执行成功了,现在等待两个脚本执行完毕
在这里插入图片描述
安装完后,输入命令

  1. docker

出现下图内容,就代表docker已成功安装
在这里插入图片描述
查看docker 是否启动,如下图所示则是已启动
在这里插入图片描述

2.搭建 jenkins 服务

创建需要的目录

  1. mkdir -p /install/jenkins_home

授予最高权限,避免一些权限问题

  1. chmod -R 777 /install/jenkins_home

运行服务

  1. docker run -d --name jenkins -uroot -p 50001:8080 -p 50000:50000 --restart=always -e TZ=“Asia/Shanghai -e JENKINS_OPTS="--prefix=/jenkins" -e JENKINS_ARGS="--prefix=/jenkins" --privileged=true -v /install/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /etc/sysconfig/docker:/etc/sysconfig/docker -v /usr/bin/docker-current:/usr/bin/docker-current jenkins/jenkins

·
命令详细解释:
注意:千万不要自己在jenkins/jenkins后面指定版本:lastest,他会使用最新版本,但是进入页面配置账户那些的时候会出现中文乱码的情况,并且和gitlab集成会出现url的不行的情况,就用这个 jenkins/jenkins就可以了,并且和gitlab集成没有url不行的情况
docker run
-d #表示后台运行 (所有 docker 容器基本必须加的参数)
–name jenkins #表示该容器的名称,必须是唯一·的值,不能重复,可以用它他来代替容器 id,更容易记忆,就类似于域名和 IP 的关系,用它可以代替容器 ID 删除,或者停止容器服务
–restart always #能够使我们在重启 docker 时,自动启动相关容器 (所有 docker 容器基本必须加的参数)
-p 50001:8080 #用宿主机的 50001 端口映射容器内部服务的 8080 端口(jenkins 服务的 web 界面服务端口,50001 可以换成任意宿主机开放的端口,-p 50000:50000 这个默认的不用改)
-e TZ=“Asia/Shanghai” #设置 jenkins 服务的的时区参数保证和宿主机时间一致
-v /etc/localtime:/etc/localtime #设置 jenkins 服务的的时区参数保证和宿主机时间一致
-e JENKINS_OPTS=“–prefix=/jenkins” -e JENKINS_ARGS=“–prefix=/jenkins” #设置 jenkins 服务的访问项目名,如果后面要用到 nginx 代理 ip 端口进项访问,那么这个必须要设置
-v /install/jenkins_home:/var/jenkins_home #将 jenkins 服务/var/jenkins_home 的文件以及目录持久化到宿主机的/install/jenkins_home,可以便于我们对某些文件的操作,以及上传一些文件到容器内部使用
–privileged=true #权限 ,给容器赋予最高权限 (所有 docker 容器基本必须加的参数,会减少很多不必要的权限错误)
jenkins/jenkins:latest # 指定镜像的版本 格式:仓库地址/镜像项名称:镜像版本号 latest 表示最新的版本号 ,如果没有提前拉去镜像,则会自动拉取(所有 docker 容器基本必须加的参数)

验证是否搭建成功:
访问 http://服务器IP:50001/jenkins/,出现以下界面即运行成功
在这里插入图片描述
如果无法访问,查看下服务器的50001端口是否放开,没有开放需要开放下
在这里插入图片描述

在宿主机执行

  1. cat /install/jenkins_home/secrets/initialAdminPassword

获取初始登录密码

在这里插入图片描述
选择点击安装推荐的插件,耐心等待所有插件安装完成
在这里插入图片描述
在这里插入图片描述
注册一个非admin的用户,后面可以用该用户登录操作jenkins,拥有和admin用户的一样的权限,保存完成,开始使用jenkins
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装jenkins中文插件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在宿主机执行

  1. docker restart jenkins

重启jenkins,加载最新的插件,此时回到web界面应该都是中文显示了
在这里插入图片描述
在这里插入图片描述

3.安装node环境

下载node.js的jenkins插件,按照下图操作
在这里插入图片描述
在这里插入图片描述
配置全局node.js的版本,建议 如果是最好用node14.17.2这个版本,这个版本适合vue2,vue3,react都可以打包,当然你也可以根据你自己的项目来决定,也可以像jdk一样多装几个,如下图配置,点击下方的保存即可完成配置

4.安装Publish Over SSH插件

可以帮助我们将打包的好的jar或者其他文件传送到真正部署的主机,并且执行我们一些脚本来启动运行服务,因为一般部署服务的主机和打包的主机是不同,同样单台主机打包部署也支持发送相关文件,然后给配置over SSH插件
在这里插入图片描述
配置 over SSH步骤1:首页==》系统管理==》系统配置,Passphrase:如果私钥设置了密码就是私钥的密码,私钥没设置密码可以不填
在这里插入图片描述
在这里插入图片描述
配置 over SSH步骤2:在jenkins容器所在的宿主机(并非jenkins容器内部==>亲测容器内部生成的无效)生成ssh密钥和公钥,公钥发送到各个jenkins需要链接的服务器,这样就可以可以实现免ssh账号密码登录服务器
在宿主机执行

  1. ssh-keygen

生成公私钥,默认生成在 /root/.ssh 目录下面, id_rsa是私钥文件, id_rsa.pub 是公钥文件,
然后执行

  1. ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 root@服务器IP

有的默认不是22端口需改成自己的端口,然后确认yes,输入服务器的密码即可, 链接多个服务器就需要执行多次该命令将文件发送到多个服务器 【经过验证该公钥和私钥还是要在jenkins容器的宿主机上面进行,然后使用私钥的内容字符串,不用私钥路径进行】
在这里插入图片描述
在这里插入图片描述
执行命令,将RSA公钥里面的内容复制下来

  1. vim /root/.ssh/id_rsa

在这里插入图片描述
把刚刚复制下来的公钥文本放到Publish over SSH配置中,测试下是否可以连接
在这里插入图片描述
tips: 如果这里的SSH Servers Remote Directory 如果填了‘/’,则项目的configure 设置Transfers 与 Transfer Set的Remote Directory前面就不要加‘/’

5.安装gitlab插件或者gitee插件

取决于你的代码是用的哪个仓库,如果都在用,这两个插件都可以下载
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.新建一个自由风格的项目

在这里插入图片描述
在这里插入图片描述
任务配置
配置源码管理
在这里插入图片描述
在这里插入图片描述

构建触发器勾选Gitee webhook触发构建
在这里插入图片描述
点击生成Gitee WebHook 密码,复制备用
在这里插入图片描述
打开并登录自己的gitee账号,打开对应的项目,点击管理===》WebHooks===》添加 webHook

在这里插入图片描述
在这里插入图片描述
复制Jenkins任务地址,粘贴到gitee webhooks配置中
在这里插入图片描述
选择你需要的node环境
在这里插入图片描述
Build Steps
点击增加构建步骤按钮 选择执行shell
在这里插入图片描述
输入shell命令

  1. npm config set registry https://registry.npm.taobao.org
  2. npm install yarn -g
  3. yarn config set registry https://registry.npm.taobao.org -g
  4. yarn config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/ -g
  5. yarn
  6. yarn run build

在这里插入图片描述
点击增加构建后操作步骤选择Send build artifacts over SSH
在这里插入图片描述
配置Send build artifacts over SSH
依次输入

  1. dist/**/*
  2. install/quesweb
  3. cd /install/quesweb

在这里插入图片描述
配置Transfer Set
在这里插入图片描述
nginx.conf文件源码

  1. #user nobody;
  2. worker_processes 1;
  3. #error_log logs/error.log;
  4. #error_log logs/error.log notice;
  5. #error_log logs/error.log info;
  6. #pid logs/nginx.pid;
  7. events {
  8. worker_connections 1024;
  9. }
  10. http {
  11. include mime.types;
  12. default_type application/octet-stream;
  13. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  14. # '$status $body_bytes_sent "$http_referer" '
  15. # '"$http_user_agent" "$http_x_forwarded_for"';
  16. #access_log logs/access.log main;
  17. sendfile on;
  18. #tcp_nopush on;
  19. #keepalive_timeout 0;
  20. keepalive_timeout 65;
  21. #gzip on;
  22. underscores_in_headers on;
  23. server {
  24. listen 80;
  25. server_name localhost;
  26. # underscores_in_headers on;
  27. #charset koi8-r;
  28. #access_log logs/host.access.log main;
  29. # location /wx-share {
  30. # alias /usr/share/nginx/html/dist/;
  31. # index index.html index.htm index.php;
  32. # try_files $uri $uri/ /wx-share/index.html; #
  33. # }
  34. location / {
  35. alias /usr/share/nginx/html/dist/;
  36. index index.html index.htm index.php;
  37. try_files $uri $uri/ /wx-share/index.html; #
  38. }
  39. }
  40. }

再添加一个Transfer Set配置
在这里插入图片描述
输入命令

  1. cd /install/quesweb
  2. docker rm -f 容器名称
  3. docker build -t 镜像地址:latest .
  4. docker login -u=xxx registry.cn-shenzhen.aliyuncs.com -p=xxx
  5. docker push 镜像地址:latest
  6. docker run -d -p 80:80 --name=容器名称 镜像地址:latest

里面镜像地址,在阿里云容器镜像服务中查看
在这里插入图片描述
在这里插入图片描述
Dockerfile文件源码

  1. #其中 pro 目录就是vue在本地打包出来的一个目录,名字可以随便取
  2. # 设置基础镜像
  3. FROM nginx
  4. # # 定义作者
  5. # MAINTAINER kl
  6. # 将当前Dockerfile文件同级的的pro文件夹复制到容器内部 /usr/share/nginx/html/pro 这个目录下面
  7. #容器内部中如果这个目录不存在,会自动创建pro目录
  8. COPY dist /usr/share/nginx/html/dist
  9. # COPY dist /usr/share/nginx/html/dist
  10. #将当前Dockerfile文件同级的nginx.conf文件拷贝到容器内部的 /etc/nginx/nginx.conf
  11. #如果没有会创建,如果有会覆盖
  12. COPY nginx.conf /etc/nginx/nginx.conf
  13. #输出一句话 表示完成
  14. RUN echo 'echo init ok!!'
  15. EXPOSE 80

此时到这里前端自动化就基本完成了,现在可以执行试试
在这里插入图片描述
可以在控制台查看日志
在这里插入图片描述
可以勾选项目配置里的保留构建的依赖日志,方便查看构建时的日志记录
在这里插入图片描述
可以勾选Verbose output in console,方便查看SSH的输出
在这里插入图片描述
看到这个快乐的小太阳就代表你构建成功啦
在这里插入图片描述

书写不易,麻烦来个一键三连(点赞,关注,收藏)

标签: 前端 vue.js jenkins

本文转载自: https://blog.csdn.net/Admin_yws/article/details/129688256
版权归原作者 新津之虎--曹达华 所有, 如有侵权,请联系我们删除。

“vue前端使用Jenkins自动构建项目,保姆级教程”的评论:

还没有评论