.NET Core + Jenkins + Github 自动化部署到 Docker

前言

 

环境 centos7.9,.NET5

一、Jenkins 搭建

1、下载 Jenkins 的 war 包

在 home 目录建一个 jenkins 目录放 jenkins 的包


#进入\home 目录
cd \home
#创建 jenkins 目录
mkdir jenkins

在 jenkins 目录下载 war 包


#进入 jenkin 目录
cd \home\jenkins
#下载 jenkins 的 war 包
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

如果包 wget 命令用不了的话,安装一下


#如果 wget 命令用不了的话,执行以下命令
yum -y install wget 

下载完后 jenkins 目录下产生一个 jenkins.war 文件

.NET Core + Jenkins + Github 自动化部署到 Docker

2、安装 java jdk

看到 war,可以知道 jenkins 是 java 写的,所以要安装 java,官网上提示安装 java1.8 或 java11,这里安装 java1.8


#下载 java jdk 的 rpm 文件
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" \
http://download.oracle.com/otn-pub/java/jdk/8u301-b09/d3c52aa6bfa54d3ca74e617f18309292/jdk-8u301-linux-x64.rpm
#授权限
chmod +x jdk-8u301-linux-x64.rpm
#安装
rpm -ivh jdk-8u301-linux-x64.rpm

如果报 Unable to establish SSL connection 执行一下下面命令


#如果报 Unable to establish SSL connection.执行下面命令
yum install openssl openssl-devel -y

执行完上面 3 个命令,看下 java 版本信息


java -version

看到已经安装好了

.NET Core + Jenkins + Github 自动化部署到 Docker

3、安装 Jenkins

进入到上面的 jenkins.war 包的目录 homejenkins


#启动,调通前用这个,没问题后再用后台启动,关闭窗体就停止,或 ctrl+c 停止
#java -jar jenkins.war --httpPort=8081
#后台运行 --后台启动,窗体关闭了,也在后台启动
nohup java -jar jenkins.war --httpPort=8081 &
#输入 jps 查看当前 jenkins 启动的进程号
#ps ef|grep jenkins 查询当前启动的 jenkins 的进程号
#如果要关闭,kill -9 端口号

执行上面命令中的 nohup java -jar jenkins.war –httpPort=8081 & 后,浏览器打开 ip:8081,这里安装过程要小等一会才能打开

.NET Core + Jenkins + Github 自动化部署到 Docker

然后按提示命令打开 vi /root/.jenkins/secrets/initialAdminPassword 文件把密码复制到输入框上


vi /root/.jenkins/secrets/initialAdminPassword

然后到这个界面,如果不熟悉,就用推荐的。

.NET Core + Jenkins + Github 自动化部署到 Docker

一直等待安装完,如果有失败是网络原因,重试就能装上了。

.NET Core + Jenkins + Github 自动化部署到 Docker

装完后跳到这个界面,输入用户名密码,邮件。

.NET Core + Jenkins + Github 自动化部署到 Docker

然后到这个界面,直接保存。

.NET Core + Jenkins + Github 自动化部署到 Docker

然后开始使用,来到 jenkins 界面,右上方有个铃,点击升级。

.NET Core + Jenkins + Github 自动化部署到 Docker

装完重启

.NET Core + Jenkins + Github 自动化部署到 Docker

安装完成。

.NET Core + Jenkins + Github 自动化部署到 Docker

如果遇到升级慢的问题解决

1、修改/home/jenkins/hudson.model.UpdateCenter.xml 文件


vi /home/jenkins/hudson.model.UpdateCenter.xml

修改为:



  
    default
http://mirror.xmission.com/jenkins/updates/update-center.json
  

2、设置 default.json 权限 安装插件什么的时候,不需要 google.com,改成百度


 cd /root/.jenkins/updates/

然后执行下面的


sed -i 's/http:\/\/updates.jenkins�ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu
.cn\/jenkins/g' default.json && sed -i
's/http:\/\/www.google.com/https:\/\/www.baidu.com/g
' default.json

修改完之后,需要重新启动

二、github .NET Core 项目准备

github 创建一个私有仓库

.NET Core + Jenkins + Github 自动化部署到 Docker

创建完后进入仓库,把地址复制出来

.NET Core + Jenkins + Github 自动化部署到 Docker

把项目克隆到本地,这里用 vs2019 的 git 功能

.NET Core + Jenkins + Github 自动化部署到 Docker

点克隆后会弹出一个 github 的授权页面授权给 vs,然后成功把项目克隆到本地。

.NET Core + Jenkins + Github 自动化部署到 Docker

创建一个.NetCore 程序,并放到刚才克隆的目录

.NET Core + Jenkins + Github 自动化部署到 Docker

运行一下查看界面

.NET Core + Jenkins + Github 自动化部署到 Docker

因为我们要把.NetCore 程序部署到 Docker,所以建一个 DockerFile 文件

.NET Core + Jenkins + Github 自动化部署到 Docker

点了后会会产生一个 Dockerfile 文件,在根目录,需要把它移动到外面,和项目文件夹同级。

.NET Core + Jenkins + Github 自动化部署到 Docker

然后提交修改。

.NET Core + Jenkins + Github 自动化部署到 Docker

把项目推到 github

.NET Core + Jenkins + Github 自动化部署到 Docker

打开 githug 看到项目已经提交成功

.NET Core + Jenkins + Github 自动化部署到 Docker

三、服务器 git 客户端安装

回到服务器,执行安装 git 客户端命令


#安装 git 客户端
yum install -y git
#安装 git 客户端
yum install -y git

安装完客户端后,执行命令生成 ssh key 命令,一直回车确认即可。


#生成 ssh key
ssh-keygen -t rsa -C 'youreamil@email.com'

.NET Core + Jenkins + Github 自动化部署到 Docker

执行完命令后,可以看到把 ssh key 生成到了/root/.ssh 目录下了,id_rsa 文件为私钥,id_rsa.pub 为公钥。

执行 vi /root/.ssh/id_rsa.pub 打开公钥。

.NET Core + Jenkins + Github 自动化部署到 Docker

把上面的公钥复制到 github 上的 ssh key 里。

.NET Core + Jenkins + Github 自动化部署到 Docker
.NET Core + Jenkins + Github 自动化部署到 Docker

四、Jenkins 自动化构建任务创建

回到 jenkins,新建任务

.NET Core + Jenkins + Github 自动化部署到 Docker

输入任务名称,构建自由风格项目

.NET Core + Jenkins + Github 自动化部署到 Docker

进去源码管理,选择 Git,仓库 URL 填上面克隆 github 项目的 ssh 地址,因为项目是私有的,因为是私有的,所以也要把 git 的私钥凭证加进来。

复制 github 上的地址

.NET Core + Jenkins + Github 自动化部署到 Docker

填到 jenkins 的 git 上,把分支改为 github 的默认 main 分支,然后添加 github 凭证。

.NET Core + Jenkins + Github 自动化部署到 Docker

凭证填上面的 id_rsa 文件里面的私钥,命令 vi /root/.ssh/id_rsa 然后复制里面的私钥填到 sshkey 凭证里面。

.NET Core + Jenkins + Github 自动化部署到 Docker

配置完后外面选刚才的配置。

.NET Core + Jenkins + Github 自动化部署到 Docker

构建环境,把超时时间设 10 分钟,因为访问 github 网络可能会有点慢,项目文件大的时候拉取需要时间。

.NET Core + Jenkins + Github 自动化部署到 Docker

构建,选择执行 shell 命令,命令如下,生成 docker 镜像,然后运行容器实例,然后完成。


#!/bin/bash
# 获取短版本号
GITHASH=`git rev-parse --short HEAD`
echo ---------------开始编译程序...------------------
echo ---------------Building Docker Image...--------
----------
docker build -t jkdemo:$GITHASH .
docker tag jkdemo:$GITHASH jkdemo:latest
echo ---------------Launching Container...----------
--------
docker rm -f jkdemo1
docker run -d -p 5001:80 --name jkdemo1 jkdemo:latest

.NET Core + Jenkins + Github 自动化部署到 Docker

在这个任务下点击立即构建,就会自动拉取代码,然后执行里面的 shell 命令发布。

.NET Core + Jenkins + Github 自动化部署到 Docker

构建成功

.NET Core + Jenkins + Github 自动化部署到 Docker

访问部署的.NetCore ,ip:5001,访问成功

.NET Core + Jenkins + Github 自动化部署到 Docker

更新站点,提交

.NET Core + Jenkins + Github 自动化部署到 Docker
.NET Core + Jenkins + Github 自动化部署到 Docker

再点击立即构建,构建成功,点进去还能看到提交的内容

.NET Core + Jenkins + Github 自动化部署到 Docker
.NET Core + Jenkins + Github 自动化部署到 Docker

再访问站点,发现更新了。

.NET Core + Jenkins + Github 自动化部署到 Docker

后面的修改,提交后,只需要点击构建就可以自动发布啦!公司中一般都是用自己搭的 gitlab,只要把 github 的操作换成 gitlab,操作过程也是一样的。

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...