看起来你可以通过设置环境variablesDOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
来节省一些.NET Core的编译时间 。 我发现在CentOS 7和Debian Jessie Linux发行版上情况并非如此。
我有jenkins用来build立.NET核心服务的jenkins奴隶jenkins.slave.dotnet.image
图像,我的图像标签是jenkins.slave.dotnet.image
。
Jenkins Docker Plugin使用jenkins.slave.dotnet.image
在构build触发时启动从容器。 Jenkins Docker插件可以访问jenkins.slave.dotnet.image
所在的Docker主机。
在我的jenkins.slave.dotnet.image
我设置了如下的环境variables:
ENV NUGET_XMLDOC_MODE skip ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE true
所有的工作都很好,除了那些环境variables被dotnet
命令忽略之外,看到一个.NET Core服务的Jenkins构build的输出,如果环境variablesDOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
被dotnet
检查,你不应该在图像中看到圈出的文本CMDS:
将( docker exec -it jenkins.slave.dotnet.container bash
)连接到使用jenkins.slave.dotnet.image
的容器,可以看到DOTNET_SKIP_FIRST_TIME_EXPERIENCE已正确设置为“true”:
dotnet的输出–info:
这是我的Jenkins Slave Docker镜像( jenkins.slave.dotnet.image
)的jenkins.slave.dotnet.image
,我的Jenkins主要运行容器来执行.NET Core Builds( 这是dotnet publish -c Debug -vm
执行的环境 ):
FROM tsl.devops.jenkins.slave.basic.docker.image MAINTAINER Brian Ogden ############################################# # .NET Core SDK ############################################# RUN yum install -y \ libunwind \ libicu RUN curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=848821 RUN mkdir -p /opt/dotnet && tar zxf dotnet.tar.gz -C /opt/dotnet RUN ln -s /opt/dotnet/dotnet /usr/local/bin #add Trade Service Nuget Server RUN mkdir -p /home/jenkins/.nuget/NuGet COPY /files/NuGet.Config /home/jenkins/.nuget/NuGet/NuGet.Config RUN chown -R jenkins /home/jenkins/.nuget RUN chgrp -R jenkins /home/jenkins/.nuget RUN chmod 600 /home/jenkins/.nuget/NuGet/NuGet.Config RUN chmod 700 /home/jenkins/.nuget/NuGet #speed up dotnet core builds ENV NUGET_XMLDOC_MODE skip ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE true #############################################
下面是一个.NET Core Micro Service构build工件的示例,它构build在我刚刚分享的Jenkins Slave Docker环境中:
FROM tsl.devops.dotnetcore.base.image MAINTAINER Brian Ogden ############################################# # .NET Service setup ############################################# ARG ASPNETCORE_ENVIRONMENT WORKDIR /app COPY ./src/TSL.Bom.Service/bin/Debug/netcoreapp1.1/publish . ENV ASPNETCORE_URLS http://+:5001 ENV ASPNETCORE_ENVIRONMENT $ASPNETCORE_ENVIRONMENT EXPOSE 5001 ENTRYPOINT ["dotnet", "TSL.Bom.Service.dll"] #############################################