台州公司网站建设,网站表格边框怎么做,网络推广平台有哪些,云服务器快速安装wordpressgitlab runner的安装和基本使用:https://bear-coding.blog.csdn.net/article/details/120591711安装并给项目配置完gitlab runner后再操作后面步骤。实现目标#xff1a;master分支代码有变更的时候自动构建build。当开发人员在gitlab上给项目打一个tag标签分支的时候自动触发…gitlab runner的安装和基本使用:https://bear-coding.blog.csdn.net/article/details/120591711安装并给项目配置完gitlab runner后再操作后面步骤。实现目标master分支代码有变更的时候自动构建build。当开发人员在gitlab上给项目打一个tag标签分支的时候自动触发流水线根据标签名称和分支名称来自动发布例如分支名称为test_3.1.1.1_project1project2则发布到测试环境例如分支名称为prod_3.1.1.1_project1project2则发布到生产环境在项目根目录下创建以下文件创建好之后提交到gitlab上就直接可以使用了.gitlab-ci.yml 流水线文件stages:- build- test- prod#当master分支变更的时候触发
build:stage: buildscript: sh ./build.shonly:- master #master主干有变更的发起编译任务tags:- trade_runner #任务标签根据此标签匹配gitlab runner的标签。test:stage: testscript: sh ./test.shonly:refs:- tags #创建tag分支且格式为”test_44.55.66.77_project1.project2“的时候发起发布任务variables:- $CI_COMMIT_TAG ~ /^test_[0-9]\.[0-9]\.[0-9]\.[0-9]_[a-zA-Z0-9\.]$/tags:- trade_runnerprod:stage: prodscript: sh ./prod.shonly:refs:- tags #创建tag分支且格式为”prod_44.55.66.77_project1.project2“的时候发起发布任务variables:- $CI_COMMIT_TAG ~ /^prod_[0-9]\.[0-9]\.[0-9]\.[0-9]_[a-zA-Z0-9\.]$/tags:- trade_runnerwhen: manual #设置需要手动触发build.sh 执行编译项目的脚本文件#!/bin/shecho start build task,job_name$CI_JOB_NAME#判断流水线任务必须是build
if [ $CI_JOB_NAME ! build ]; thenecho error job name: $CI_JOB_NAMEexit 1
ficd GitLabTest/
dotnet build $build_args
#获取构建结果
build_result$?
echo end build task,$build_result
exit $build_resulttest.sh 执行发布测试环境的脚本#!/bin/shthetimedate %Y%m%d%H%M
tag_msgecho $CI_COMMIT_TAG | awk -F _ {print $3}
echo start test task,tag$CI_COMMIT_TAG,job_name$CI_JOB_NAME,tag_message$tag_msg,time$thetime#判断流水线任务必须是deploy
if [ $CI_JOB_NAME ! test ]; thenecho error job name: $CI_JOB_NAMEexit 1
fi#要发布的项目列表
programs(${tag_msg/// })for program in ${programs[]}
do#切换到要发布的项目里,并发布项目cd GitLabTest/$programecho start publish $programdotnet publish -c Release -r linux-x64 -p:PublishSingleFiletrue $build_args -p:DebugSymbolstrue -p:DebugTypeportableif [ $? ! 0 ]; thenecho publish $program failedexit 1fiecho publish $program successcd ../../
donebase_pwdpwd
build_path_middlepublishfor program in ${programs[]}
do#将发布好的文件复制到发布目录下#也可以将文件打包成tar传输到远程服务器上或者生成docker镜像推送到镜像服务器。见后面注释部分echo start copy $program#预先创建存放发布文件的目录并将权限给到gitlab-runner#mkdir /usr/local/publish#chown -R gitlab-runner:gitlab-runner /usr/local/publishmkdir -p /usr/local/$build_path_middle/$program/cp -rf $base_pwd/GitLabTest/$program/bin/Release/net7.0/linux-x64/* /usr/local/$build_path_middle/$program/echo copy $program success
done#将文件打包成tar传输到远程服务器上
# rm -f program.tar.gz
# tar zcf program.tar.gz -C publish --exclude *.tar.gz .
# ssh -p $server_port $server_ip mkdir -p $deploy_base_pwd/$program/
# ssh -p $server_port $server_ip { cd $deploy_base_pwd/$program/ [ -s program.tar.gz ] mv -f program.tar.gz program_bak.tar.gz; } || true
# scp -P $server_port program.tar.gz $server_ip:$deploy_base_pwd/$program/#将文件生成docker镜像并推送到镜像仓库
#docker build -f /usr/local/$build_path_middle/$program/Dockerfile -t 镜像仓库地址/trade-$program:${thetime} .
#docker push 镜像仓库地址/trade-$program:${thetime}
#docker rmi 镜像仓库地址/trade-$program:${thetime}
prod.sh 执行发布到生产环境的脚本与test.sh基本一至根据实际需要更改#!/bin/shthetimedate %Y%m%d%H%M
tag_msgecho $CI_COMMIT_TAG | awk -F _ {print $3}
echo start product task,tag$CI_COMMIT_TAG,job_name$CI_JOB_NAME,tag_message$tag_msg,time$thetime#判断流水线任务必须是deploy
if [ $CI_JOB_NAME ! prod ]; thenecho error job name: $CI_JOB_NAMEexit 1
fi#要发布的项目列表
programs(${tag_msg/// })for program in ${programs[]}
do#切换到要发布的项目里,并发布项目cd GitLabTest/$programecho start publish $programdotnet publish -c Release -r linux-x64 -p:PublishSingleFiletrue $build_args -p:DebugSymbolstrue -p:DebugTypeportableif [ $? ! 0 ]; thenecho publish $program failedexit 1fiecho publish $program successcd ../../
donebase_pwdpwd
build_path_middlepublishfor program in ${programs[]}
do#将发布好的文件复制到发布目录下#也可以将文件打包成tar传输到远程服务器上或者生成docker镜像推送到镜像服务器。见后面注释部分echo start copy $program#预先创建存放发布文件的目录并将权限给到gitlab-runner#mkdir /usr/local/publish#chown -R gitlab-runner:gitlab-runner /usr/local/publishmkdir -p /usr/local/$build_path_middle/$program/cp -rf $base_pwd/GitLabTest/$program/bin/Release/net7.0/linux-x64/* /usr/local/$build_path_middle/$program/echo copy $program success
done#将文件打包成tar传输到远程服务器上
# rm -f program.tar.gz
# tar zcf program.tar.gz -C publish --exclude *.tar.gz .
# ssh -p $server_port $server_ip mkdir -p $deploy_base_pwd/$program/
# ssh -p $server_port $server_ip { cd $deploy_base_pwd/$program/ [ -s program.tar.gz ] mv -f program.tar.gz program_bak.tar.gz; } || true
# scp -P $server_port program.tar.gz $server_ip:$deploy_base_pwd/$program/#将文件生成docker镜像并推送到镜像仓库
#docker build -f /usr/local/$build_path_middle/$program/Dockerfile -t 镜像仓库地址/trade-$program:${thetime} .
#docker push 镜像仓库地址/trade-$program:${thetime}
#docker rmi 镜像仓库地址/trade-$program:${thetime}