jenkins构建项目配置及推送阿里云镜像仓库
使用阿里云的k8s,更新一个项目需要如下步骤:1.先更新代码2.再将代码打包生成一个docker镜像,推送到阿里云镜像仓库(私有的)3.在阿里云上使用新的镜像新启一个docker,并把老的docker删除(阿里云k8s可以配置钩子,镜像更新自动重启docker)使用jenkins构建,就方便很多了。(先要阿里云k8s镜像更新自动重启docker配置好)在此只使用jenkins运行一个sh文件。只需
·
使用阿里云的k8s,更新一个项目需要如下步骤:
1.先更新代码
2.再将代码打包生成一个docker镜像,推送到阿里云镜像仓库(私有的)
3.在阿里云上使用新的镜像新启一个docker,并把老的docker删除(阿里云k8s可以配置钩子,镜像更新自动重启docker)
使用jenkins构建,就方便很多了。(先要阿里云k8s镜像更新自动重启docker配置好)
在此只使用jenkins运行一个sh文件。
只需要在jenkins配置下执行命令即可:
sh文件就按照项目发布步骤来写(按照自己项目内的构建逻辑来写,
【
此处的代码结构:admin项目内有如下几个文件夹
docker [主要用到里面的Dockerfile配置文件]
conf.d [内部存放nginx配置文件]
config [项目配置文件,代码仓库内忽略了配置文件]
git [git内的文件是从代码仓库拉取下来的最新的代码]
www [项目代码]
】具体逻辑不在此赘述):
示例代码:
path="/var/www/" #项目路径
folder="admin" #项目文件夹名
gitUrl="git@git.com:test/test.git" #项目git地址
gitBranch="admin" #要拉取的git分支
projectEnv="production" #环境标识
dockerTestRegistry="registry.cn-shanghai.aliyuncs.com/test/test:prod" #阿里云镜像仓库地址
BUILD_ENV="production"
buildVersionFile="test/build-version.html" #构建版本时间记录
echo "======== start to publish $folder:$projectEnv (branch:$gitBranch)"
cd $path || (echo "no such dictionary: $path" && exit 1)
if [ ! -d $folder ];then
mkdir $folder
fi
cd $folder || (echo "fail to create folder: $path/$folder" && exit 1)
echo '======== start to fetch git'
if [ ! -d git ];then
git clone -b $gitBranch $gitUrl git
fi
cd git || (echo 'fail to create git folder' && exit 1)
git checkout -f $gitBranch
git pull
echo '======== start to prepare docker file'
cd ..
echo '======== start to copy www files'
if [ ! -d www];then
mkdir www
else
rm -rf .www/*
fi
cp -r ./git/www/* ./www
echo '======== copy src files success'
echo '======== start to copy config files'
cp -r ./config/* ./www/common/config
echo '======== copy config files success'
echo '======== start to write build time file'
rm -rf $buildVersionFile
touch $buildVersionFile
echo `date +"%Y-%m-%d %H:%M:%S"`>>$buildVersionFile
cat $buildVersionFile
echo '======== write build time file success'
echo '======== prepare docker file finished'
echo '======== start to run docker file'
cd docker || (echo "no docker dictionary!" && exit 1)
echo '======== start to build admin'
rm -rf conf.d/*
cp -r ../conf.d/* conf.d
docker build -t $dockerAdminRegistry -f ./Dockerfile ../ --build-arg BUILD_ENV=$BUILD_ENV
docker push $dockerAdminRegistry
echo '======== build admin success'
echo '======== all finished!'
exit 0
总结:项目发布的所有的步骤都在sh内写好,Jenkins的作用只是执行此sh文件。
更多推荐
已为社区贡献1条内容
所有评论(0)