准备
您需要一个本地的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