技术思绪摘录旅行
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。

1、安装java环境JDK

yum install -y java

2、安装jenkins

添加Jenkins库到yum库,Jenkins将从这里下载安装。

yum -y install wget
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key 
yum install -y jenkins

3、启动jenkins,这一步可以等一下,后面还有一些配置

service jenkins start
service jenkins stop    //停止
service jenkins restart //重启

安装完成,你需要明白jenkins的几个知识点:

  • - 安装成功之后,jenkins将作为一个守护进程随系统启动

  • - 系统会创建一个“jenkins”用户来允许这个服务,如果需要改变这个用户,需要改配置文件,后文再说如何改这个用户。

  • - 启动所用的配置文件所在位置:/etc/sysconfig/jenkins,包括端口号和jenkins用户都在这里配置

  • - 默认情况下,jenkins运行在8080端口,如果不冲突,可以不改

  • - jenkins的默认JENINS_HOME目录在:/var/lib/jenkins/

  • - jenkins的默认日志文件在:/var/log/jenkins/jenkins.log

  • - jenkins的war运行包在:/usr/lib/jenkins/jenkins.war

  • - 安装成功之后,初始化密码在:/var/lib/jenkins/secrets/initialAdminPassword


4、安装完成之后,这个jenkins用户是权限不足的,无法帮我们执行一些文件夹的操作,我们需要把它换成root

打开配置文件

vi /etc/sysconfig/jenkins

找到JENKINS_USER,然后会发现执行的默认用户是jenkins

修改$JENKINS_USER

JENKINS_USER="root"

修改jenkins相关文件夹的用户权限

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

重启jenkins

service jenkins restart

打开防火墙的8080端口

firewall-cmd --permanent --zone=public --add-port=8080/tcp
systemctl reload firewalld

这时候可以在客户机访问jenkins了,找到管理员密码进行插件安装等操作。

查看初始化密码

vi /var/lib/jenkins/secrets/initialAdminPassword

5、安装.NetCore SDK

安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

安装SDK,这里看情况,你的项目需要哪一个版本就安装哪一个

sudo yum install dotnet-sdk-3.1
sudo yum install dotnet-sdk-5.0

6、安装GIT

yum install git

到这,jenkins环境才算完全搭建好了。

7、进入jenkins首页,开始搭建项目。

新增项目--》自由风格项目--》确定

image.png

image.png

8、开始配置参数(This project is parameterized)

image.png

- 选择类型参数-分支名称

BRANCH_NAME
master
分支名称

- 选择类型参数-编译方式

COMPILE_MODE
Debug
Release
编译方式

- 字符串参数-启动目录

PROJECT_START_PATH
./
启动项目文件夹(根据拉取下来的目录结构而定,有些可能是src/Benchint.Leo.Mphis.ClientApi.HttpApi.Host)

- 字符串参数-主版本号

MAJOR_NO
1
主版本号

- 字符串参数-次版本号

BUILD_NO
0
次版本号

- 字符串参数-三级版本号

THR_NO
0
三级版本号

- 字符串参数-启动项目名称

SITE_NAME
JwtDemoApi
启动项目名称(启动项目的具体名称,比如Benchint.Leo.Mphis.ClientApi.HttpApi.Host)

- 字符串参数-启动端口号

SITE_PORT
809
启动端口(程序内不可写死启动端口,否则此处端口无法成功,每个项目应该不一样)

9、源码管理-Git

image.png

http://x.x.x.x/libra/lz1/Libra.DataReport.git
${BRANCH_NAME}

这里选择了具有对git仓库的管理和操作的账户-jenkins

然后指定的分支,是上面配置的变量BRANCH_NAME

10、构建-选择Execute shell

env
ls -la
echo "进入目录:"
cd $PROJECT_START_PATH

echo "还原项目包"
dotnet restore
echo "如果有自建nuget,可以改成如下命令"
#dotnet  restore -s "https://api.nuget.org/v3/index.json" -s "http://10.3.1.240:8080/nuget"

echo "编译代码"
dotnet build -c $COMPILE_MODE

echo "杀停原站点"
ps -ef | grep $SITE_NAME | grep -v grep | awk '{print $2}' | xargs --no-run-if-empty kill

echo "删除现有文件,重新发布"
rm -rf /projects/publish/publish_$SITE_NAME

echo "发布项目"
mkdir   -p /projects/publish/publish_$SITE_NAME
dotnet publish -c $COMPILE_MODE  -r linux-x64 --self-contained true   -o  /projects/publish/publish_$SITE_NAME

echo "拷贝到运行目录"
mkdir   -p /projects/run/run_$SITE_NAME/$MAJOR_NO.$BUILD_NO.$THR_NO.$BUILD_ID
cp -r /projects/publish/publish_$SITE_NAME/*  /projects/run/run_$SITE_NAME/$MAJOR_NO.$BUILD_NO.$THR_NO.$BUILD_ID

echo "拷贝配置文件到新版本"
mkdir   -p /projects/run/run_$SITE_NAME/config
echo "这里放配置文件">/projects/run/run_$SITE_NAME/config/readme.txt
cp -r /projects/run/run_$SITE_NAME/config/*  /projects/run/run_$SITE_NAME/$MAJOR_NO.$BUILD_NO.$THR_NO.$BUILD_ID

echo "启动项目"
firewall-cmd --permanent --zone=public --add-port=$SITE_PORT/tcp
systemctl reload firewalld
cd /projects/run/run_$SITE_NAME/$MAJOR_NO.$BUILD_NO.$THR_NO.$BUILD_ID
BUILD_ID=dontKillMe nohup  ./$SITE_NAME --urls  http://*:$SITE_PORT &

11、保存,齐活。

以下列举常用命令

查看jenkins服务是否启动
systemctl status jenkins

查看防火墙状态
systemctl status firewalld

查看开放端口
firewall-cmd --list-ports

防火墙端口操作
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
firewall-cmd --state                           ##查看防火墙状态,是否是running
firewall-cmd --reload                          ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones                       ##列出支持的zone
firewall-cmd --get-services                    ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp               ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp                 ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent     ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent  ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent     ##永久添加80端口
firewall-cmd --remove-port=80/tcp --permanent  ##永久移除80端口
firewall-cmd --list-ports                      ##查看已经开放的端口
iptables -L -n                                 ##查看规则,这个命令是和iptables的相同的
man firewall-cmd                               ##查看帮助


重启防火墙
systemctl reload firewalld

查看指定进程
ps -ef |grep 进程名称

查看端口号占用(yum install net-tools)
netstat -lnp|grep 端口号 
netstat -ntlp

查看进程
pgrep -l 进程名称




CarsonIT 微信扫码关注公众号 策略、创意、技术

留下您的脚步

 

最近评论

查看更多>>

精选推荐

阅读排行

友情打赏

请打开您的微信,扫一扫