Jenkins+Github+Nginx实现前端项目自动部署

前言

最近在搭建一个自己的网站,网站框架搭好了要把项目放到服务器运行,但是每次更新网站内容就要手动部署一次,实在很麻烦,于是就想搭建一套自动化部署的服务。看了一些案例最后选用现在比较主流的Jenkins + Github + Nginx的方案来搭建,于是跟着教程去做,看了很多教程其实不是太完整,搭建过程一波三折,就想写下自己搭建的过程分享出去。以下操作默认大家已经申请自己的服务器,并开放所需要的端口。我自己的服务器是ubuntu。注意:ubuntu使用(apt-get install 软件名) 来安装软件,redhat(即CentOS)服务器使用(yum install 软件名) 命令安装,使用的是xhell远程控制工具。

自动化部署原理

简单的说就是当我们写好代码build完成后,把代码提交到github上,jenkins监测到代码变化就会自动构建项目,把代码拉取到服务器,从而实现自动部署。

安装java sdk

jenkins需要java环境,需要安装java jdk,第一种安装方式是从包管理工具中安装,即执行以下命令,这里我装的是jdk8. 第二种是从官网下载安装包解压到指定文件夹下,这种方式比较容易出错,不建议使用。

 
  1. sudo apt-get update

  2. sudo apt-get install openjdk-8-jdk

  3. 复制代码

安装完成后配置环境变量,执行sudo vi ~/.bashrc,在文件的最后添加以下信息,注意把JAVA_HOME改成你自己的java路径,我的默认安装路径是/usr/lib/jvm/java-8-openjdk-amd64

 
  1. #set oracle jdk environment

  2. JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

  3. JRE_HOME=$JAVA_HOME/jre

  4. JAVA_BIN=$JAVA_HOME/bin

  5. CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

  6. PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

  7. export JAVA_HOME JRE_HOME PATH CLASSPATH

  8. 复制代码

使配置立即生效

 
  1. source ~/.bashrc

  2. 复制代码

在执行source ~/.bashrc命令的时候遇到问题 syntax error: unexpected end of file,检查了fileformat=unix没有问题, 最后通过cp /etc/skel/.bashrc ~命令还原.bashrc文件, 配置环境变量后执行source ~/.bashrc无报错,输入java -version输出java jdk版本号信息,安装成功。

安装nginx

执行以下命令安装nginx

 
  1. sudo apt-get update

  2. sudo apt-get install nginx

  3. 复制代码

安装完成后nginx默认打开,在浏览器输入你的服务器ip,就可以看到页面,页面默认路径是/var/www/html,如果没看到,请检查安装时是否报错,以及检查是否已经开放80端口。

安装Jenkins

首先,将存储库秘钥添加到系统

 
  1. wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -

  2. 复制代码

添加密钥后,系统将返回OK 。 接下来,我们将Debian包存储库地址附加到服务器的sources.list :

 
  1. echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list

  2. 复制代码

然后更新包存储库

 
  1. sudo apt-get update

  2. 复制代码

最后安装Jenkins,出现选择输入y即可

 
  1. sudo apt-get install jenkins

  2. 复制代码

可能遇到的情况: apt-get install jenkins报 ERROR: No Java executable found in current PATH: /bin:/usr/bin:/sbin:/usr/s 解决: 1、检查你的PATH_HOME路径是否正确,不正确的话重新配置,执行echo $PATH看一下是否有东西

2、执行以下命令,关联一下java的可执行文件。

 
  1. update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk-12.0.1/bin/java" 1 #换成你的安装路径

  2. update-alternatives --config java

  3. 复制代码

问题解决没有问题后,在浏览器输入服务器ip+8080(如:128.22.26.108:8080),一切正常的话可以显示以下页面:

根据提示路径获取解锁密码,解锁jenkins遇到问cd: secrets/: Permission denied,原因是secrets没有读取权限,给文件夹赋权即可

 
  1. sudo chmod 777 secrets

  2. 复制代码

进入目录,打开文件,复制密码

 
  1. sudo vi initialAdminPassword

  2. 复制代码

解锁进去后选择安装建议插件

接着等待插件安装完成后,创建一个管理员账户,输入信息,确定即可。

github配置

在github中选择settings

选择Developer settings

选择Personal Access Token --> Generate new token, 新建一个有读写权限的用户。 如下勾选选项:

确定后生成token,复制下来保存好。

jenkins配置

登录进jenkins后选择系统管理 => 系统设置 => Github Server 添加信息

添加jenkins凭据

完成后点击连接测试,连接成功信息如下:

然后选择系统管理 => 全局工具配置 在JDK安装中去掉勾选自动安装,在JAVA_HOME中输入java jdk安装的根目录,我的安装根目录是/usr/

完成后回到首页新建任务,填写任务名称,选择构建自由风格的软件项目,点击确定。

常规设置

源码管理

添加凭据

构建触发器

选择轮询SCM,输入出发时间

构建

选择执行shell,输入构建脚本

最后保存,点击立即构建,然后项目会有构建进度。

可以在构建历史查看构建状态,圆球是蓝色并且出现success表示构建成功。

在构建时遇到一个报错是执行sudo 命令要输密码,所以没有继续构建下去,最后找到方法是执行sudo visudo,在文件的最后面加上以下信息

 
  1. jenkins ALL=(ALL) NOPASSWD: ALL

  2. 复制代码

然后按下ctrl+o保存,接着按下回车Enter,最后ctrl+x退出。 重新构建应该可以成功,成功后可以在/var/lib/jenkins/workspace/路径下看到你的项目了,然后尝试修改本地项目,git push提交后,发现jenkins响应执行构建,服务器文件也更新了,说明项目搭建完成,好好奖励一下自己吧!

总结

整个项目搭建下来踩了很多的坑,也遇到很多的小问题,很多时间都是在解决问题,总的来说其实不是很难,如果不熟悉linux的话会有点吃力。以上是我在搭建的过程以及遇到的问题,如果哪里写的不到位,还请大佬们指正。

转载于:https://juejin.im/post/5d011b4ff265da1bbb03d446

Jenkins+Github+Nginx实现前端项目自动部署相关推荐

  1. jenkins+阿里code配置vue项目自动部署

    1.jenkins是什么? Jenkins是一个开源的.提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续.自动的构建/测试软件项目.监控外部任务的运行( ...

  2. 实现前端项目自动化部署(webpack+nodejs)

    前言: 一般来说,我们前端是不需要关心部署的事情的,只需要把打包后的文件直接丢给后台去部署就可以了.但是呢,如果频繁修改一点东西就要叫后台进行部署,这样后台会很烦(毕竟人家还有其他工作嘛),我们也会很 ...

  3. 前端项目自动化部署——超详细教程(Jenkins、Github Actions)

    本教程主要讲解了怎么使用 Jenkins 和 Github Actions 部署前端项目. 第一部分是使用 Gitea 配置局域网 git 服务器,再使用 Jenkins 将 Gitea 下的项目部署 ...

  4. 前端教程——前端项目自动化部署(Jenkins、Github Actions)

    本教程主要讲解了怎么使用 Jenkins 和 Github Actions 部署前端项目. 第一部分是使用 Gitea 配置局域网 git 服务器,再使用 Jenkins 将 Gitea 下的项目部署 ...

  5. 前端项目自动化部署——超详细教程(Jenkins、Github Actions)(转发)

    本教程主要讲解了怎么使用 Jenkins 和 Github Actions 部署前端项目. 第一部分是使用 Gitea 配置局域网 git 服务器,再使用 Jenkins 将 Gitea 下的项目部署 ...

  6. jenkins实现项目自动部署

    背景 整体思路 实现方式 1 自动化部署脚本 2 远程执行 3 配置jenkins任务 背景 之前给公司搭建过一套gitlab+gerrit+jenkins的持续集成环境,由于操作起来有点繁琐,自己也 ...

  7. [Gitlab]使用Webhook实现前端项目自动发布

    喜闻乐见的背景故事时间--承接[prerender-spa-plugin]--微型Vue项目的静态化利器,官网上线之后,就开始琢磨,每次改动都得上服务器部署一下,是不是有点麻烦了,是时候该整个自动化部 ...

  8. [转]Eclipse中的Web项目自动部署到Tomcat

    原文地址:http://www.cnblogs.com/ywl925/p/3815173.html 原因 很长时间没用Eclipse了,近期由于又要用它做个简单的JSP项目,又要重新学习了,虽然熟悉的 ...

  9. ant+svn+tomcat实现项目自动部署

    因工作需要,研究并实现了 ant+svn+tomcat实现项目自动部署,其中参考了下面文章:http://www.cnblogs.com/taoweiji/p/3700915.html jar包需要e ...

最新文章

  1. centos 禁用root登录
  2. matlab中bitget函数用法_MATLAB中SVM的用法
  3. JavaScript正则表达式笔记
  4. ML之KMeans:利用KMeans算法对Boston房价数据集(两特征+归一化)进行二聚类分析
  5. 3Animation动画的创建,CCSpeed,CCFollow
  6. Java中截取文件名不要后缀
  7. 数组拼接时中间怎么加入空格_【题解二维数组】1123:图像相似度
  8. thinkphp v5.0.11漏洞_ThinkPHP5丨远程代码执行漏洞动态分析
  9. 【BZOJ2226】LCM SUM,数论之一维LCM(莫比乌斯反演)
  10. avd已创建模拟手机 点击开始没反应_佳能微单开始降价,索尼、 尼康、 富士稳中有升……...
  11. 【系统架构】业务架构图
  12. Python--图片转字符画
  13. VMware Workstation15.5下载安装教程(win10)
  14. R.Koo 改良后的分页类(主要是显示属性)
  15. windows10任务栏一直转圈-无法操作假死状态
  16. 智库大会 | 高端对话:智能科技推动管理学变革
  17. 牛逼的Python库MoviePy!利用Python自动剪辑tiktok视频!
  18. 夜曲编程PPT,EXCEL课(侵删)
  19. 如何解决All flavors must now belong to a named flavor dimension.?
  20. 完美的扎克伯格,倒霉的Facebook

热门文章

  1. 网页技术革命:精美绝伦的 HTML5 个人作品集网站
  2. 值类型和引用类型的区别,应该很全的。
  3. Web浏览器调试工具firebug
  4. Mysql: LBS实现查找附近的人 (两经纬度之间的距离)
  5. awk是命令还是编程语言
  6. jquery user interface
  7. css透明度的设置 (兼容所有浏览器)
  8. Shell脚本IF条件判断和判断条件总结
  9. NOSL redis安装部署 lnmp+redis
  10. Linux——给history命令加上用户和时间