草庐IT

实现自动化部署前端项目,从安装Jenkins到部署完成的整体配置 --适合初学Jenkins、想实现或者学习自动化部署的同学,知识点比较全面,过程写的清晰

强壮的糙汉子 2023-04-05 原文

前言

一、什么是Jenkins

二、Jenkins安装配置

Linux环境安装JDK

Linux环境安装Maven

Linux安装Jenkins

启动Jenkins

 jenkins配置

配置汉化版的jenkins

 安装gitHub插件

gitHub配置 

jenkins的配置

jenkins的gitHub配置

jenkins的java环境配置 

小总结

两种情况

第一种

第二种

常规设置

源码管理

添加凭据

构建触发器

构建

总结

前言

前几天我把前后端项目都部署到服务器上了,可是我发现修改后的的node服务很好部署但是前端修改完后还得打包然后部署,很麻烦,如果你比较感兴趣这个部署项目的整体流程可以链接走你,所以我昨天和今天就研究了这个jenkins,我实现的主要功能是,它会连接你的gitHub,如果你点击jenkins的时候就会把你点击的项目直接打包并发布;或者你想做的其他逻辑它也会帮着你去自动去做!

一、什么是Jenkins

Jenkins 是一个可扩展的持续集成引擎。

主要用于:

  • l 持续、自动地构建/测试软件项目。
  • l 监控一些定时执行的任务。

二、Jenkins安装配置

首先安装Jenkins之前,linux中必须安装好了JDK和Maven,如果还没有安装过,下面准备好安装教程;

Linux环境安装JDK

https://dbfront-firstbucket.oss-cn-chengdu.aliyuncs.com/jdk-17_linux-x64_bin.tar.gz

Linux环境安装Maven

https://dbfront-firstbucket.oss-cn-chengdu.aliyuncs.com/apache-maven-3.9.0-bin.tar.gz
这个是oss地址,点击链接即可直接下载,可能以后会维护有的问题,如果下载不能用的话可以去以下方式

 JDK:

Java Downloads | Oracle

一定选择17版本和选择指向的下载,这都是血与泪的教训呀!,! 

 Maven:

Maven – Download Apache Maven

之后在window下载linux系统下的安装包,之后就用rz命令去导入我们的Linux系统即可;可以看我上篇文章的安装node和mongodb链接走你

一定要把我们的两个bin目录放到环境中,否则就噶了!

我们的准备工作完成了!

浅试一下

 我们打上这个指令出现下面这个就是成功了!

Linux安装Jenkins

创建jenkins文件夹

mkdir jenkins

 说到这里不得不提下我们的ChatGPT

 这是我搜索的记录,简直太强了。

1、然后我们直接在当前新建的文件夹去

wget https://updates.jenkins-ci.org/latest/jenkins.war

 就会在文件中直接生成jenkins.war

2、输入指令 

nohup java -jar jenkins.war --httpPort=8080

就成功了

如果我们直接使用 java -jar jenkins.war

3、输入

netstat -tlnp

查看下当前的进程

 

发现有8080,启动成功

启动Jenkins

我们在上面启动了jenkins服务,我们直接去访问我们jenkins的页面

服务器地址+8080端口,走你

访问jenkins的时候,有个初始化密码,需要你输入,这边查找初始化密码的方法也在下面

 输入成功后

 我们的jenkins启动好了!

 jenkins配置

以下是jenkins的全局配置,包含我们的汉化、gitHub以及java在服务器的目录位置;

配置汉化版的jenkins

我们打开页面全是英文头疼,我们来配置汉化版的jenkins

 

 刷新下浏览器

 安装gitHub插件

gitHub配置 

在github中选择settings

选择Developer settings

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

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

jenkins的配置

jenkins的gitHub配置

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

添加jenkins凭据

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

jenkins的java环境配置 

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

我们可以到环境

vim  /etc/profile

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

总结下我们上面的流程

小总结

我们在gitHub上进行一个具有个性化的配置(读写的配置),并生成唯一token,在jenkins中我们通过全局给jenkins添加了一个我们自己的token,然后确定了服务器的java文件目录!

下面就分两种情况

一种是我们的 服务器有我们的git和gitHub的地址可以git push和pull

另一种就是没有git的地址和gitHub的ssh的密钥,我们就只能在jenkins配置(有些麻烦推荐第一种)

两种情况

第一种

服务器有我们的git和gitHub的地址可以git push和pull

我们上述创建任务后

点击我们自己项目的配置

 点击BuildSteps=>增加构建后操作步骤=>zshell

输入如下代码 

 cd /dangbo/functionTools/dbfrontFunctionTools

git pull

npm run docs:build

这个意味着,我们点击jenkins时候直接会进入这个目录并git pull、随后执行npm run dcs:build 

点击应用

 显然我们成功了

第二种

另一种就是没有git的地址和gitHub的ssh的密钥,我们就只能在jenkins配置(有些麻烦推荐第一种)

常规设置

源码管理

添加凭据

构建触发器

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

构建

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

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

总结

整个项目搭建下来踩了很多的坑,也遇到很多的小问题,很多时间都是在解决问题,总的来说其实不是很难,如果不熟悉linux的话会有点吃力。

先去gitHub配置一个自己的token=》放到jenkins的全局中=》全局的还有jdk在linux的位置=》最后我们的配置是分了两种情况=》一种是我们服务器能拉取代码,就不用做我们的Git和gitHub的配置了,直接写自己想做的指令即可,在shell位置=》另一种就是能拉取我们的代码,也就是服务器没有配置gitHub的ssh密钥,我们就得在jenkins的位置配置所有的东西,很麻烦。

有关实现自动化部署前端项目,从安装Jenkins到部署完成的整体配置 --适合初学Jenkins、想实现或者学习自动化部署的同学,知识点比较全面,过程写的清晰的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. 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​​

  3. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  4. 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服务器更新战俘

  5. 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="

  6. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  7. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  8. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  9. 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

  10. 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

随机推荐