Net Core 自动部署 Jenkins

wugang0 2020-06-02

目的:实现把Git测试分支中的代码发布到Linux测试环境

1、安装Jenkins。

首先需要找一台服务器安装Jenkins,我用的是Linux。启动后直接用IP+端口号访问就可以看到启动动的Jenkisn.

Tips:关于Jenkins的配置,为了方便我是用Linux的root用户登录的,具体配请自行更改。

#安装java环境(Jenkins需要这个java环境)
sudo yum install java
java -version

# 安装Git
sudo yum install git
git --version 

#安装Jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
yum install jenkins

#修改jenkins 的配置信息
vi /etc/sysconfig/jenkins

#修改配置
JENKINS_USER="root"
JENKINS_PORT:"8080"

#修改目录权限
 [ sysconfig]# chown -R root:root /var/lib/jenkins
[ sysconfig]# chown -R root:root /var/cache/jenkins
[ sysconfig]# chown -R root:root /var/log/jenkins

#启动Jenkins
systemctl start jenkins

2、配置Jenkins

实现目的:当前的Jenkins 是安装在192.168.11.80上,需要Jenkins把Git 上拉取的代码发布到 192.168.0.138上。此时138上已经配置好了supervisorctl。也就是说Jenkisn和web服务器没在一个服务器上。

(1)Jenkins安装远程插件(Publish Over SSH) 系统管理->插件管理

Net Core 自动部署 Jenkins

 (2)配置远程服务器链接(此处用的是密码用户用的rooot)系统管理->系统配置

Net Core 自动部署 Jenkins

3、新建一个Jenkins任务(或复制一个已有的任务)

Net Core 自动部署 Jenkins

 (1)配置Git

Net Core 自动部署 Jenkins

 Net Core 自动部署 Jenkins

 Net Core 自动部署 Jenkins

Net Core 自动部署 Jenkins

 构建就可以了

Net Core 自动部署 Jenkins

如你的web服务器是用Docker发布的,Jenkins的执行Shell,你可以参考一下

echo "获取当前容器是否存在-----------------------------------------------------------------"
containerps=$(docker ps -f name=resapi -q)
containerstop=$(docker ps -a -f name=resapi -q)
for alpha in "$containerps";do
    if [ "$alpha" == "" ];then
    echo "检查是否存在停止的容器-------------------------------------------------"
        for alpha1 in "$containerstop";do
          if [ "$alpha1" == "" ];then
          echo "不存指定容器-----------------------------------"
          else
          echo "存在停止了的 然后直接删除-----------开始------------------"
          docker rm $alpha1
          echo "存在停止了的 然后直接删除-----------完成------------------"
        fi
       done
    else
    echo "存在-停止运行 然后删除----------------------开始-----------------"
    docker stop $alpha
    docker rm $alpha
     echo "存在-停止运行 然后删除---------------------完成------------------"
    fi
done

echo "获取当前镜像是否存在-----------------------------------------------------------------"
dockerlist=$(docker images resapiimage:latest -q)
for alpha2 in "$dockerlist";do
  if [ "$alpha2" == "" ];then
     echo "不存在指定镜像-------------------------------------------------" 
  else
       echo "存在当前指定的镜像 删除镜像--------------开始-----------------------------------"
      docker rmi $alpha2
     echo "存在当前指定的镜像 删除镜像--------------完成-----------------------------------"
  fi
done

echo "开始输入工作目录-----------------------------------------------------------------"
echo $WORKSPACE

echo "转到项目工程目录-----------------------------------------------------------------"
cd $WORKSPACE/AoJi.Res/


echo "重新生成------------------------------------开始-----------------------------"
dotnet build
echo "重新生成------------------------------------完成-----------------------------"

echo "项目发布-------------------------------------开始----------------------------"
dotnet publish --output /data/www/resapi.aojiedu.com/
echo "项目发布-------------------------------------完成----------------------------"

echo "转到项目发布目录-----------------------------------------------------------------"
cd  /data/www/resapi.aojiedu.com/

echo "构建Docker镜像-------------------------------开始----------------------------------"
echo pwd
docker build -t resapiimage .
echo "构建Docker镜像-------------------------------完成----------------------------------"

echo "运行Docker容器-------------------------------------开始----------------------------"
docker run  --name=resapi -p 5001:5001 -d resapiimage
echo "运行Docker容器------------------------------------完成-----------------------------"

Net Core 自动部署 Jenkins

相关推荐