阿里云效替代jenkins部署netcore程序
问题描述:随着jenkins的不断升级,占用内存是越来越夸张,还需要宿主机上安装java11,最新版java11也不好使了,云服务器内存吃紧就寻思的换个思路走CI/CD,尝试使用阿里云效,折腾了半天感觉效果还行。编译打包方式与jenkins略有不同,之前是将代码拉到服务器jenkins目录,通过Dockerfile执行编译、发布、打包镜像流程,现在是将代码拉到阿里,执行编译、发布,生成发布文件压缩包,下载到服务器目录,执行解压、打包镜像流程。
解决方案:登录阿里云效,新建流水线,下面贴大概流程及关键部署脚本。
流水线页面详情
构建环节和官网给的代码是一致的
# input your command here dotnet restore dotnet publish -c Release -o out
主机部署脚本如下
tar zxvf /home/admin/app/package.tgz -C /home/admin/xxx/ cd /home/admin/xxx/ image_version=`date +%Y%m%d%H%M`; echo $image_version; # 停止之前的docker container docker stop xxx; # 删除这个container docker rm xxx; # build镜像并且打上tag docker build -t xxx:$image_version .; docker images; # 把刚刚build出来的镜像跑起来 docker run -p 8238:8238 -e TZ=Asia/Shanghai --restart=always --name xxx -d xxx:$image_version; docker logs xxx;
Dockerfile脚本如下
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base RUN apt-get clean RUN apt-get update RUN apt-get -y install fonts-wqy-zenhei && apt-get clean && fc-cache -fv WORKDIR /app EXPOSE 8238 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build COPY ./ /app FROM build AS publish FROM base AS final COPY --from=publish /app . ENTRYPOINT ["dotnet", "xxx.Mvc.dll"]
哦了,下一步就是卸载jenkins了。。。