发布时间:2024-10-10 09:01
服务器系统 centOS 8.2
1. 运行环境安装
1.1 安装 jdk
上传安装包,然后解压
[root@ianly ~]# tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/local/
配置环境变量
[root@ianly ~]# vim /etc/profile
JAVA_HOME=/usr/local/jdk1.8.0_144
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME
export PATH
[root@ianly ~]# source /etc/profile
检测是否安装完成
[root@ianly ~]# java -version
1.2 安装 maven
上传安装包,然后解压 官网:Maven – Download Apache Mavenhttps://maven.apache.org/download.cgi
tar zxf apache-maven-3.3.9-bin.tar.gz –C /usr/local/
配置环境变量
[root@ianly ~]# vim /etc/profile
export MAVEN_HOME=/usr/local/maven-3.3.9
export PATH=$PATH:$MAVEN_HOME/bin
[root@ianly ~]# source /etc/profile
检测是否安装完成
[root@ianly ~]# mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/maven-3.3.9
Java version: 1.8.0_144, vendor: Oracle Corporation
Java home: /usr/local/jdk1.8.0_144/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: \"linux\", version: \"3.10.0-862.11.6.el7.x86_64\", arch: \"amd64\", family: \"unix\"
1.3 安装 git
[root@ianly ~]# yum install git
检测是否安装完成
[root@ianly ~]# git --version
git version 1.8.3.1
1.4 安装 tomcat
上传安装包,然后解压 官网:
Apache Tomcat® - Apache Tomcat 8 Software Downloadshttps://tomcat.apache.org/download-80.cgi
[root@ianly ~]# tar zxf apache-tomcat-8.5.20.tar.gz -C /usr/local/
拷贝一份tomcat用来运行项目
[root@ianly ~]# cp -r /usr/local/apache-tomcat-8.5.20 /usr/local/tomcat-jenkins/
2. 安装配置 Jenkins
2.1 下载 Jenkins的 war 包并运行 上传安装包 地址:
http://mirrors.jenkins.io/war-stable/latest/jenkins.warhttp://mirrors.jenkins.io/war-stable/latest/jenkins.war拷贝一个用来运行 Jenkins 的 tomcat,并修改 tomcat 的 server.xml配置文件中的端口号:「8080」->「8888」,「8005」->「8006」,「8009」->「8010」,这里改端口号是因为后面还要启动一个运行项目的tomcat服务,如果你是在两台机器上操作,可以用默认的端口。
[root@ianly ~]# cp jenkins.war /usr/local/tomcat-jenkins/webapps/
启动Jenkins的tomcat
[root@ianly tomcat-jenkins]# ./bin/startup.sh
2.2 访问并初始化
ip:8888/jenkins
提示输入密码,查看初始密码
[root@ianly ~]# cat /root/.jenkins/secrets/initialAdminPassword
输入密码之后点击「继续」,跳转到下一个页面,选在插件安装
安装完成之后,创建用户与密码
完成后就可以进入首页界面进行配置与管理
2.3 安装一些基础的插件
通过系统管理—管理插件
在这里,我只安装本测试需要的几个插件
「Maven Integration」,「Deploy to container」,你可以根据具体场景需求,下载对应需要的插件
2.4 在Jenkins上配置maven,git,jdk
系统管理 -> 全局工具配置
具体配置的路径根据你jenkins所在服务器环境路径来配置
保存。
至此,Jenkins的安装配置完成。
3.使用jenkins来运行实例
3.1 回到主页,点击「创建一个新任务」
3.2 选择「构建一个maven项目」
源码管理,配置git仓库地址和授权用户
3.3 添加git仓库授权用户
添加后选择刚添加的用户
指定获取git的分支
git文件下载默认目录:/root/.jenkins/workspace
3.4 构建,填入maven安装命令 clean install -Dmaven.test.stop=true
3.5 Post Step中选择「执行shell」,使用一个自动化发布的脚本
先在Jenkins所在的服务器创建一个脚本文件
[root@ianly ~]# vim /scripts/auto_push.sh
#!/bin/bash -ilex
#根据查询进程的pid
source /etc/profile;
pid=$(jps -l | grep test-main-1.0.jar | awk \'{print $1}\');
#杀掉对应的进程,如果pid不存在,则不执行
if [ -n \"$pid\" ]; then
kill $pid;
while [ -n \"$pid\" ]
do pid=$(jps -l | grep test-main-1.0.jar | awk \'{print $1}\');echo \"Waitting...\";sleep 1s;
done
fi
#启动进程并忽略所有控制台日志
cd /root/.jenkins/workspace/java-test/test-main/target
nohup java -Xms500m -Xmx500m -jar test-main-1.0.jar >/dev/null 2>&1 &
echo \"Started testmain-1.0 Success.\"
赋值执行权限
[root@ianly ~]# chmod a+x /scripts/auto_push.sh
在Post Step的shell Command中填写执行脚本的语句 /bin/sh -x /scripts/auto_push.sh
配置完成,保存
在首页就可以看到刚刚创建的JOB,点立即构建
然后在控制台看输出信息
4. 访问项目
http://122.152.192.227:8080/springMvcDemo/
看到正常访问。
接下来,修改git仓库源码,然后重新构建,再次访问
在本地写好代码,一旦提交到Git
,通过web-hook
,触发Jenkins
的自动构建任务,Jenkins
自动从Git
上面拉取代码>安装依赖>打包>发送到部署的服务器等一系列操作。
简单来说,我本地写好代码,我提交到Git之后,就有个东西帮我打包发送到服务器。我不需要管这些事,我只要写代码、测试、推代码就完事了。
目前需要实现的就是这样的功能,但Jenkins能做的不只是这么多。不过对于我目前的项目来说足够了。
实现
安装ssh发送插件 - Publish Over SSH
见名知意,通过ssh发布,用来将打包好的项目用ssh连接的方式发送到部署的服务器,并且执行其他的命令。
页面直接ctrl+f
搜索ssh
,直接安装Publish Over SSH
插件
选择系统管理-系统配置
拉到最后面找到Publish over SSH
新增SSH - Server
name标识该服务器的
Hostname服务器的IP
Username填写服务器的用户
点开高级设置
勾选Use password authentication, or use a different key
Passphrase填写密码
Test Configuration
测试下是否连接成功nodejs
插件页面直接ctrl+f
搜索nodejs,直接安装 插件
安装nodejs
插件
下载nodejs编译包
我们在window上是直接下载exe,双击安装就可以了,而在linux上不太一样。
我们先打开nodejs下载页面:http://nodejs.cn/download/,选择合适的linux版本编译包
上传解压
tar -xvf /dataDak/node-v16.14.0-linux-x64.tar.xz -C /usr/local/
配置软链接
为了使nodejs能够全局使用,我们需要配置一下软链接(类似于快捷方式,如果安装的路径在/usr/local/bin/下不需要这一步操作),当然也是软连接到用户目录下/usr/local/bin/
软链接的命令很简单: ln -s 源文件 目标路径
1 2 3 |
|
选择系统管理-全局工具配置
选择新增 NodeJS
别名node 12.16.3
保存
4.新建项目配置
3 源码管理选择你的项目的Git
我的文档项目访问是公开的,可以直接访问,如果是私有项目还需要配置一个可访问的账号才可以。就是下面Credentials选项。
4 构建触发器
勾选 GitHub hook trigger for GITScm polling,这是一旦我们推送代码就会触发构建。
5 构建环境
勾选Provide Node & npm bin/ folder to PATH,这是提供Node命令给我们使用。
6 增加构建步骤 - 执行shell
由于内部的node环境和外部隔离,所以我们第一次使用的时候需要安装yarn和设置一些国内源。
这一步我们进行安装依赖和打包项目,并且将打包的项目压缩等待后续发送到部署的服务器上。
# 进入Jenkins工作空间下cxt-web项目目录
cd /var/jenkins_home/workspace/cxt-web
# 下面的命令只需要执行一次,后续可以删除
###
# npm切换为淘宝源
npm config set registry http://registry.npm.taobao.org/
# 安装yarn
npm i yarn -g
# yarn切换为淘宝源
yarn config set registry https://registry.npm.taobao.org
###
# 安装项目中的依赖
yarn
# 打包
yarn build
# 进入生成打包文件的目录
cd dist
# 把生成的项目打包成压缩包,方便移动到项目部署目录
tar -zcvf cxt-web.tar.gz *
vue-admin 事件使用的
npm install -g cnpm --registry=https://registry.npm.taobao.org
# 安装项目中的依赖
cnpm i
#删除dist目录下的所有文件
rm -rf ./dist/*
cnpm install --save core-js
# 打包
npm run build:prod
# 进入生成打包文件的目录
cd dist
# 把生成的项目打包成压缩包,方便移动到项目部署目录
tar -zcvf cxt-web.tar.gz *
执行完成之后会在服务器生成cxt-web.tar.gz,下一步就是把这个文件发送到指定部署的服务器。进行解压。
7 增加构建后的步骤
push over ssh文件复制有个限制 只能复制当前任务所在目录下的文件,很多时候文件无法复制就是因为这个限制导致的。那么我们可以换一种思路,在使用push over ssh插件之前,先把需要的文件复制到当前任务所在目录下。如:我的绝对路径是 /root/.jenkins/workspace/cxt-web/dist/cxt-web.tar.gz ,那么Source files:dist/cxt-web.tar.gz , Remove prefix:dist/
特别注意:远程主机目录,这里是相对目录,即使目录前加 / 也会自动转为相对目录。绝对路径在定义远程主机时指定,如下图
备注:当Remote Directory为空时,目录默认为username所在的home目录(如root用户就是/root, test用户就是/home/test)
cd /datadisk/official_web
\\echo \">>>当前工作路径:\"`pwd`
\\shopt -s extglob
\\echo \">>>删除:(.htaccess|.user.ini|cxt-web.tar.gz)之外的文件\"
\\rm -rf !(.htaccess|.user.ini|cxt-web.tar.gz)
\\echo \">>>解压:cxt-web.tar.gz\"
\\tar -zxvf cxt-web.tar.gz -C ./
\\echo \">>>移除:cxt-web.tar.gz\"
\\rm -rf cxt-web.tar.gz
\\echo \">>>执行成功\"
查看nginx的启动用户,发现是nobody,而为是用root启动的
命令:ps aux | grep \"nginx: worker process\"
将nginx.config的user改为和启动用户一致,
命令:vi conf/nginx.conf
8 测试构建
可以看到服务器有了构建之后的文件
9 访问下网站试试,nice
python为什么要用魔法方法_Python学习————魔法方法
linux docker xp镜像,为什么同一个镜像docker pull两次啊
css_盒子模型:块级盒子/内联盒子_显示类型/盒模型border可见性
vue集成openlayers(vue+openlayers)加载geojson并实现点击弹窗教程
【JavaScript 进阶教程】非 extends 的组合继承
【历史上的今天】7 月 17 日:软银收购 ARM;第一次电子邮件中断;维基媒体国际会议
SAP UI5 图片显示控件 Avatar 的使用方式介绍试读版