准备

您需要一个本地的Linux服务,用来安装Jenkins服务端

您需要一个本地的windows项目服务器,用来自动化部署项目代码

您需要一个本地的docker仓库,用来管理镜像,索引:创建仓库

概念图

在这里插入图片描述

安装Jenkins服务器

Java环境

yum install java-1.8.0-openjdk* -y
java -version

安装Jenkins

sudo wget https://pkg.jenkins.io/redhat/jenkins-2.150-1.1.noarch.rpm
sudo rpm -ivh jenkins-2.150-1.1.noarch.rpm
sudo yum localinstall jenkins-2.150-1.1.noarch.rpm -y

设置Jenkins参数

vi /etc/sysconfig/jenkins
JENKINS_USER="root"
JENKINS_PORT="8080"

防火墙

sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --reload
sudo service jenkins status
#提示成功完成安装

初始化

#打开浏览器 输入服务器地址加端口号(默认8080)
#默认首次登录提示需要输入默认密码,使用cat在Jenkins服务器中查看初始化密码
cat /var/lib/jenkins/secrets/initialAdminPassword

安装Docker

sudo yum install docker-ce
sudo systemctl start docker
sudo systemctl enable docker
# 添加docker用户组,一般已存在,不需要执行
sudo groupadd docker
# 将登陆用户加入到docker用户组中
sudo gpasswd -a $USER docker
sudo docker version

安装应用服务器

安装Docker

#如果是WindowsServer,官网下载Docker Desktop安装即可
#如果是Linux,参照上一步的安装方法

启动docker的远程访问

https://cloud.tencent.com/developer/article/1657953

netsh interface portproxy add v4tov4 listenport=2375 connectaddress=127.0.0.1 connectport=2375 listenaddress=<your-public-ip> protocol=tcp

开启2375端口

// DockerDesktop->Settings->General->Expose daemon on tcp://localhost:2375 without TLS(选中)
// DockerDesktop->Settings->Docker Engine 添加如下Json
"hosts":[
   "tcp://0.0.0.0:2375"
]

测试连接(本机IP)

docker -H tcp://xxx.xxx.xxx.xxx:2375 info

准备代码仓库

可选

#Azure 代码仓库
#AWS代码仓库
Git代码仓库(我们以git为例)

编写项目代码

任何可运行项目代码
Nodejs、Dotnet、Java、Python

Nginx代理配置(nginx-angular.conf)

server {
    listen    80;
	server_name  contractclient;
	location / {
           root   /usr/share/nginx/html;
           index  index.html index.htm;
	    try_files $uri $uri/ /index.html;
    }
	error_page   500 502 503 504  /50x.html;
       location = /50x.html {root   html;}
 }

配置dockerfile

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["NuGet.Config", "."]
...

Jenkins项目配置

登录

http://xxx.xxx.xxx.xxx:8080/

查看已有项目

Dashboard/我的视图/列表

新建测试项目

Dashboard/新建任务/[项目名称]/XXXXX/确定

基本配置:

General源码管理构建环境
【勾选】丢弃旧的构建【勾选】Git【勾选】Delete workspace before build starts
填入仓库地址、添加账号/密码
分支默认是master,修改main或其它

执行的脚本,构建重点说明:

#根据实际情况cd到指定dockerfile路径
#有的仓库结构比较深,需要cd到想要自动化部署的项目主目录。
cd XXXX/XXXX
dir
#执行dockerfile打镜像,注意后边的"."
docker build -t [项目相对路径] .
#打包私有镜像仓库
docker tag [项目相对路径]:latest [仓库域名地址]/[项目名]/[项目镜像地址]
#登录私有镜像仓库
cat /home/[username]/Jenkins/DockerHtpasswd | docker login -u [username] --password-stdin [仓库域名地址]
#推送私有镜像仓库
docker push [仓库域名地址]/[项目名]/[项目镜像地址]
#应用服务器拉取镜像
docker -H tcp://[windows项目服务器IP]:2375 pull [仓库域名地址]/[项目名]/[项目镜像地址]
#如果容器存在则删除容器,重新构建
if [ "$(docker -H tcp://[windows项目服务器IP]:2375 ps -q -f name=[项目名称])" ]; then
    docker -H tcp://[windows项目服务器IP]:2375 stop [项目名称]
    docker -H tcp://[windows项目服务器IP]:2375 rm [项目名称]
fi
#run镜像
docker -H tcp://[windows项目服务器IP]:2375 run --name [项目名称] -d -p 8080:80 [仓库域名地址]/[项目名]/[项目镜像地址]

运行自动化部署

Dashboard/我的视图/所有/[项目名称]/立即构建

点击下方的列表当前构建项,查看部署过程日志

Dashboard/我的视图/所有/[项目名称]/#1/控制台输出

成功提示

Finished: SUCCESS

验证测试

http://[windows项目服务器IP]:8080
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐