gitlab与Jenkins持续集成到Centos下的docker容器
NetCore项目配置
检查项目根目录下是否存在Dockerfile文件,没有则创建。 以下为netcore2.2现成的配置例子,其它版本类似 项目代码托管在gitlab上
FROM microsoft/dotnet:2.2-sdk AS build WORKDIR /src COPY ["ProjectApi/ProjectApi.csproj", "ProjectApi/"] COPY ["Model/Model.csproj", "Model/"] COPY ["BLL/BLL.csproj", "BLL/"] RUN dotnet restore "ProjectApi/ProjectApi.csproj" COPY . . WORKDIR "/src/ProjectApi" RUN dotnet build "ProjectApi.csproj" -c Release -o /project_api FROM build AS publish RUN dotnet publish "ProjectApi.csproj" -c Release -o /project_api FROM microsoft/dotnet:2.2-aspnetcore-runtime AS final ENV TZ=Asia/Shanghai EXPOSE 80 WORKDIR /project_api COPY --from=publish /project_api . RUN echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib deb http://mirrors.163.com/debian/ jessie-backports main non-free contrib deb-src http://mirrors.163.com/debian/ jessie main non-free contrib deb-src http://mirrors.163.com/debian/ jessie-updates main non-free contrib deb-src http://mirrors.163.com/debian/ jessie-backports main non-free contrib deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib deb-src http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib" > /etc/apt/sources.list && apt-get update && apt-get install libgdiplus -y && cd /usr/lib && ln -s libgdiplus.so gdiplus.dll && ln -s /lib/x86_64-linux-gnu/libdl-2.24.so /lib/x86_64-linux-gnu/libdl.so ENTRYPOINT ["dotnet", "ProjectApi.dll"]
Jenkins配置
Jenkins安装搭建好完后登录,点击左侧菜单的新建任务, 输入一个任务名称,选择构建一个自由风格的软件项目后确定保存。 任务创建好后,点击配置进入配置页面 只需要配置的点
源码管理栏 添加自己的gitlab账号,以及代码访问地址,并指定分支
构建触发器配置 勾选推送gitlab后触发
构建执行shell 主要只是执行docker命令,docker容器与宿主的网络需要先建好,构建时指定一个ip,否则可能每次容器ip都会改变
以上配置完成后保存,可以点击立即构建检查构建成功。
gitlab配置
gitlab配置比较简单,进入项目后点击该项目设置模块下的集成菜单,填写Jenkins的触发Url和密码,这两条在刚刚的Jenkins构建触发器栏中复制过来,点击下方的添加即可完成自动构建。
关于前端Vue工程配置基本一样,只有dockerfile和docker命令的如下
FROM node:10.15.2-slim AS build WORKDIR /project_ui COPY . . RUN npm config set registry http://registry.npm.taobao.org && npm install && npm run build FROM httpd:2.4 EXPOSE 80 #复制打包的文件 COPY --from=build /project_ui/dist /usr/local/apache2/htdocs/