前言:最近想学习一下通过Jenkins实现自动化部署,源代码管理器用的是GitHub。如有需要的伙伴们可以尝试以下相关材料,有所了解可忽略。

CentOS下部署.NetCore

CentOS下使用Docker方式部署.NetCore

让我们开始进入正题,开始我们的自动化部署踩坑之路,希望整理后分享出来的教程能给有需要的伙伴避避坑。如有错误,欢迎交流。

1、安装Jenkins

安装Jenkins教程请参考:CentOS 7安装Jenkins

2、安装Docker和Git

# 安装docker-ce
yum -y install docker-ce
 
# 查看版本,测试是否安装成功
docker version

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

# 查看版本,测试是否安装成功
git --version

 3、新建任务

centos自定义封装 centos自动化部署_docker

4、从Github拿到仓库地址和Token

(4-1)仓库地址

centos自定义封装 centos自动化部署_centos自定义封装_02

(2-1)Token

 

centos自定义封装 centos自动化部署_docker_03

centos自定义封装 centos自动化部署_.netcore_04

 

centos自定义封装 centos自动化部署_c#_05

centos自定义封装 centos自动化部署_docker_06

centos自定义封装 centos自动化部署_c#_07

 5、在Jenkins配置Github项目地址

centos自定义封装 centos自动化部署_c#_08

在Jenkins点击源码管理选择Git,Repository URL(仓库地址)填写步骤(4-1)仓库地址,也就是你Github项目的https地址

centos自定义封装 centos自动化部署_linux_09

项目属于私有的,所以需要在下面添加Github用户名密码(密码填写Github Token参考步骤(2-1)Token

centos自定义封装 centos自动化部署_docker_10

centos自定义封装 centos自动化部署_.netcore_11

选择配置的账号

centos自定义封装 centos自动化部署_linux_12

6、立即构建

centos自定义封装 centos自动化部署_c#_13

构建过程中常见错误

错误:ERROR: Error fetching remote repo 'origin'
解决方案:Jenkins构建过程中报错误Error fetching remote repo ‘origin‘

错误:ERROR: Error cloning remote repo 'origin'
时而出现这个错误,时而成功,猜测是由于使用Github网络原因。如有了解具体原因的知情小伙伴,可在评论区分享。 (为了验证是否是Github的原因,我后面将Github改为Gitee,多次构建都成功)

centos自定义封装 centos自动化部署_.netcore_14

centos自定义封装 centos自动化部署_.netcore_15

根据控制台输出可知道构建工作空间路径,打开该路径发现Github项目已经被拉取下来。仅仅拉取下来还不够,我们希望能自动部署到Docker。

7、生成Dockerfile文件

centos自定义封装 centos自动化部署_docker_16

centos自定义封装 centos自动化部署_centos自定义封装_17

8、配置执行shell

centos自定义封装 centos自动化部署_linux_18

centos自定义封装 centos自动化部署_docker_19

 shell命令

#!/bin/bash

echo ---------------获取短版本号...--------
GITHASH=`git rev-parse --short HEAD`

# # PS:根据vs生成的Dockerfile文件中的一些执行路径可以发现是要与项目文件同级,所以这边需要把他移动到与项目文件同级。
echo ---------------移动Dockerfile文件到当前文件...--------
mv WebApplication1/Dockerfile .

echo ---------------Building Docker Image...--------
docker build -t jkdemo:$GITHASH .

echo ---------------将短版本号标记为最新版本...--------
docker tag jkdemo:$GITHASH jkdemo:latest

echo ---------------删除当前运行的容器...----------
docker rm -f jkdemo

echo ---------------Launching Container...----------
docker run -d -p 5001:80 --name jkdemo jkdemo:latest

 9、再次立即构建

centos自定义封装 centos自动化部署_linux_20

centos自定义封装 centos自动化部署_c#_21

  10、测试

 根据shell执行,运行的容器端口为5001

centos自定义封装 centos自动化部署_c#_22