Jenkins搭建

Jenkins 构建

镜像库,容器云

服务器上传文件命令,跟SCP类似

yum install lrzsz -y

// 选择本地文件并上传

rz -y

# 前言

目前主流网站部署方法,通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目

持续集成组件

1)一个自动构建过程,包括自动编译、分发、部署、测试。

2)一个代码仓库,SVN, GIT

3)一个jenkins持续集成服务器

jenkins属于一个java代码,需要java容器才可以运行Jenkins,所以需要在服务器安装JDK+Tomcat

1 java jdk安装

https://www.yuque.com/allblue-byynd/ezv40n/qmxvg0

先查看是否已安装jdk

java -version

拷贝文件:

将/usr/xu目录中的所有文件及其子目录拷贝到目录/usr/liu中,命令如下:

$ cp - r /usr/xu/ /usr/liu/

2.安装tomcat

进入 /usr/lib/tomcat 目录,执行命令下载

wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.39/bin/apache-tomcat-8.5.39.tar.gz

解压到指定目录

tar -zxvf apache-tomcat-8.5.39.tar.gz

cd apache-tomcat-8.5.39/conf/

启动tomcat

然后我们返回到apache-tomcat-8.5.39目录下,用cd 命令进入到bin目录下,启动tomcat

命令:sh startup.sh

http://ip:8080/  访问tomcat主页

指向的资源目录是 tomcat/webapps/ROOT/index.jsp

./shutdown.sh

./startup.sh

重启tomcat,然后切换到tomcat的logs目录,键入

tail -f catalina.out

运行起来之后,浏览器访问tomcat显示404

可能是端口被占用

查看8080端口

netstat -nltp | grep 8080

下载jenkins.war

https://www.jenkins.io/download/

删除tomcat/webapps/ROOT 目录下的所有东西

把下载下来的jenkins.war上传到这里

启动Jenkins服务

执行命令:

java -jar jenkins.war

报错信息如下,没有指定端口号,或者端口号被占用

指定端口号,重新启动

java -jar jenkins.war --httpPort=9000

jenkins启动过程中会初始化,并会生成一个密码如下(后面解锁Jenkins时候用到)

接着就可以看到jenkins初始化的页面啦^v^

后台启动Jenkins

我们也可以使用nohup命令,让Jenkins在后台运行。

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

还有别的启动方式,可以使用tomcat启动,进入tomcat/conf目录,在server.xml里面修改端口号,或者进行域名配置,类似雨nginx的nginx.conf

进入tomcat/bin目录,执行./startup.sh

服务器安装git

因为要进行使用git连接仓库,克隆,拉取分支等等

服务器安装node

https://www.yuque.com/allblue-byynd/ezv40n/ikgxzk

jenkins下载插件以及全局工具配置

安装maven插件

配置jdk, maven, node

连接云服务器,

echo $PATH

获取全局环境变量,复制

【系统管理】-> 【系统配置】 -> 【环境变量】

增加环境变量

不进行配置,构建任务执行shell脚本的时候,可能会报错,如下

添加凭据,创建密钥

Jenkins通过SSH私钥凭证,免密登陆Gitee服务器

在Jenkins服务器创建公钥和私钥

ssh-keygen -t rsa

cd /root/.ssh

把公钥添加到gitee的ssh里面

把私钥配置到Jenkins里面(全局工具配置里,不同版本的入口不一样)

添加完成之后,在项目配置里git源可以切换成ssh, 选择上面配置的凭证就可以连接仓库了。

基础工作准备完成

----------------------------------------------------------------------------------------------------------------

Make工具

linux,windows最原始的编译工具,在linux下编译工具常用Make(windows下对应的工具为nmake)

它负责组织构建的过程,负责指挥编译器如何编译,连接器如何连接,最后生成一个可用的文件。

ANT工具

make在编译复杂的东西时使用不够灵活,语法很难理解,于是就衍生出ant工具

Maven工具

Maven工具是对ant工具的进一步改进,Maven像make一样,是个构建工具,有很多Maven plugin(maven插件)

Jenkins工具

Jenkins就是一个可视化的工具平台,通过编写一系列的脚本来控制编译、测试、打包、部署等流程。

Jenkins就是用图形界面的方式把maven进行一个整合。

Jenkins可以用于运行各种CI,测试,批处理任务等等,所以在Jenkins中将这些任务统称为“free-style software project”

linux:jenkins 默认安装目录

(1)/usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里。

( 2 ) /etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置。

(3)/var/lib/jenkins/:默认的JENKINS_HOME。

(4)/var/log/jenkins/jenkins.log:Jenkins日志文件。

Eclipse工具

新建任务并构建

先进行一个最基础的配置

选择灵活配置

描述

源码管理

git,

git登录账户名密码用于clone、pull等操作

指定分支

构建环境

不要勾选 Provide Node & npm bin/ folder to PATH

服务器已经下载node并进行了环境变量配置,如果这里选择会造成冲突。

构建

执行shell:

```javascript

pwd

ls

node -v

npm -v

git --version

echo '构建的版本号:'${BUILD_NUMBER}

npm install

npm run build

```

点击【应用】,点击【保存】

点击【立即构建】

查看日志

编译生成的文件存放在 服务器/root/.jenkins/workspace目录下面

新建jenkins任务

https://blog.csdn.net/qq_35620501/article/details/87459391

设置构建触发器

这里选择webHooks触发

Jenkins上操作

本地push就会自动触发Jenkins构建

部署项目

使用 Jenkins 可以完成整个 CI/CD 的操作,之前关于源码下载、镜像构建、镜像推送等操作都只能算是 CI 的步骤, Jenkins 完成一系列包括构建和部署的操作,属于CD操作

安装插件: public over ssh

Publish Over SSH 是 Jenkins 的一个插件,可以使用 SSH 的方式远程连接服务器,并进行文件的传输和命令执行。

由主节点不具备环境,只进行分配任务,执行构建操作。配置从节点,web服务器,从节点构建完成之后,把镜像和部署代码一并传到服务器节点上面,然后在服务器节点执行部署命令,这几个步骤都是 Publish Over SSH 可以完成的。

全局配置:ssh server

点击【高级】配置密码

ssh的配置可使用密钥,也可以使用密码,

测试连接,并应用保存

在任务配置中增加【构建后操作】

send build artifacts over ssh

exec

# 进入项目的文件夹 ( 项目路径:  /usr/local/webserver/nginx/testweb02/testweb02/xxxx )

echo '--- 1.进入项目的文件夹:---'

cd /usr/local/webserver/nginx/testweb02/testweb02

pwd

#  打包压缩项目文件

echo '--- 2.打包压缩项目的文件:---'

# 自动创建testweb02-copy文件夹,存在则创建失败。mkdir -p a/b/c 创建多级目录

mkdir /usr/local/webserver/nginx/testweb02-copy

tar -zcvf  /usr/local/webserver/nginx/testweb02-copy/${JOB_NAME}-${BUILD_ID}.tar.gz  *

# 查看压缩备份后的文件

cd  /usr/local/webserver/nginx/testweb02-copy

echo '--- 3.下面是已经备份项目的版本:---'

ls

# 回复备份

echo '--- 4.下面是备份回滚的命令:---'

echo '删除旧项目:rm -rf /usr/local/webserver/nginx/testweb02/*'

echo '回滚指定版本: tar -zxvf  /usr/local/webserver/nginx/testweb02-copy/testweb02-16.tar.gz  -C  /usr/local/webserver/nginx/testweb02/'

echo '停止服务:/usr/local/webserver/nginx/sbin/nginx -s stop'

echo '重启服务:/usr/local/webserver/nginx/sbin/nginx'

echo '--- 构建结束 ---'

点击【立即构建】

需求场景

一般情况下,通过 Jenkins 完成一个项目的上线,至少应该包括三台虚拟机,一台用来运行 Jenkins 服务,作为主节点,第二台(正常情况可能不止一台)是一个从节点,由主节点分配任务,执行构建操作,之所以从节点会很多是因为每个从节点可能配置的不同的环境,可以完成特定的构建任务,比如某个从节点配置了 nodejs 环境,所以可以执行前端项目构建,而另一个配置了 Java 环境所以可以构建 Java 项目;第三台虚拟机就是项目部署的服务器了(有时候可能也不止一台),可以通过 Jenkins 远程控制服务器完成构建后的部署。

现在我就有3个虚拟机,1个 Jenkins 主机点,使用容器运行的,1个 Jenkins 从节点,配置了 nodejs 环境和 Java 环境,所以可以完成 vue 项目的构建,最后一个是一台仅仅配置了 docker 环境的虚拟机,只能运行容器。这个场景很服务实际的项目场景。

解决方案

Jenkins 主节点由于是在容器中运行的,所以根本不具备任何其他环境,所以只做任务分配;从节点需要完成的事情是从 GitHub 拉取代码,并打包 vue 项目,最后构建成镜像,构建完成之后可以推送到远程仓库,也可以打包成 tar 包(这里为了使用 Publish Over SSH 的文件传输功能,所以使用 tar 包镜像);从节点构建完成之后,把镜像和部署代码一并传到服务器节点上面,然后在服务器节点执行部署命令,这几个步骤都是 Publish Over SSH 可以完成的。

你可能感兴趣的:(Jenkins搭建)