通过jenkins实现持续发布

===============================================

 2020/11/30_第1次修改                       ccb_warlock

 

===============================================

部署完jenkins(https://www.cnblogs.com/straycats/p/14033405.html)后,接着就是使用jenkins实现持续发布.net项目,下面架构图是基于《京东基础架构建设之路》的解决方案做了些调整。

1.提交源码

2.触发Jenkins任务

3.远程执行shell脚本,操作构建服务器

4.构建服务器拉取源码构建打包

5.将包和Dockerfile发给镜像构建节点

6.在镜像构建节点生成镜像

7.将镜像上传至仓库

8.部署容器

 

这里合并了构建功能到开发服务器,故接着就是配置开发服务器、jenkins服务器即可。


一、选择镜像仓库

可以选择一些免费的镜像仓库(dockerhub、阿里云等等)用于存放你构建的镜像。如果需要搭私有仓库可以选择搭建基于https的harbor(https://www.cnblogs.com/straycats/p/8850693.html

 

本次示例就是选择搭建了私有的harbor,并将修改了host使用myharbor.cn。

 


二、配置开发服务器

2.1 安装docker

centos7上部署参考 https://www.cnblogs.com/straycats/p/10680502.html

 

2.2 安装git

sudo yum install -y git

2.3 拉取源码

假设代码的项目为abc,开发分支是dev,这里先将源码拷贝到目录/opt/source目录下。

cd /opt/source
git clone -b dev <git地址>

2.4 创建构建目录

mkdir -p /opt/publish/abc/published

2.5 编写远程执行用的shell脚本

mkdir -p /opt/build/abc
cd /opt/build/abc
vi build.sh

# 将下面的内容保存到build.sh中。

#!/bin/bash
source_dir="/opt/source/abc"
publish_dir="/opt/publish/abc/published"

echo "==> Begin build project <=========="
cd $source_dir
sudo git checkout dev

commit_id_old=`git rev-parse HEAD`
sudo git pull
commit_id_current=`git rev-parse HEAD`

if [ $commit_id_old = $commit_id_current ];then
    echo "==> Branch dev has not changed, exit <=========="
    exit 1
fi

sudo rm -rf $publish_dir
sudo mkdir -p $publish_dir
sudo dotnet publish -o $publish_dir
echo "==> End build project <=========="

echo "==> Begin build image <=========="
# Dockerfile文件放在源码的Server目录下
sudo yes| cp -rf $source_dir/Server/Dockerfile /opt/publish/abc
cd /opt/publish/abc
# 这里myharbor.cn是私有的harbor,并修改了本地host
sudo docker build --rm -t myharbor.cn/abc/abc:latest .
sudo docker push myharbor.cn/abc/abc:latest
echo "==> End build image <=========="

echo "==> Begin deploy stack <=========="
cd /opt/docker/compose/abc
sudo docker stack rm abc-stack
sudo docker stack deploy -c abc-stack.yml abc-stack
echo "==> End deploy stack <=========="

三、部署jenkins服务器

3.1 部署jenkins服务器

 参考:https://www.cnblogs.com/straycats/p/14033405.html

 

3.2 配置密钥对

 参考:https://www.cnblogs.com/straycats/p/14058205.html

 

3.3 配置凭据

 <明天继续写后面的内容>

 

 

 

 

 

 

3.4 安装jenkins插件Publish Over SSH

 

3.5 创建jenkins任务

1)点击“新建任务”

2)构建环境,勾选“Add timestamps to the Console Output”

 

 <明天继续写后面的内容>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/straycats/p/14065719.html