想坚持更新本身的博客这个想法已经好久了,一直都没有迈开第一步。在2018年的最后日子里迈开了这一步。java
Jenkins和docker作持续集成主要是原因是由于公司在.net的路上转头向.net core 发展,因为.net core的版本更新比较频繁在linux上安装和卸载.net core不太方便,因而有了Jenkins+docker的组合。linux
Jenkins主要是负责持续集成,docker实际负责集成.net core环境部署程序。git
Jenkins和docke的集成环境:centos7docker
1、安装java环境json
官网下载 jdk:jdk-8u171-linux-x64.rpmvim
安装 jdkcentos
配置环境app
vim /etc/profile 在最后加上下面的配置ssh
JAVA_HOME=/usr/java/jdk1.8.0_171 CLASSPATH=.:$JAVA_HOME/lib.tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH
执行 source /etc/profile 配置生效svn
2、安装docker
安装基础环境 :yum install -y yum-utils device-mapper-persistent-data lvm2
获取docker源 :
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
获取docker版本列表:
yum list docker-ce --showduplicates|sort -r
安装docker:
yum install docker-ce版本号
docker安装后使用 docker infn 查询是否安装成功
启动daocker :
systemctl start docker
编辑daemon
vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn"],//docker镜像获取地址,通常都配成阿里的镜像这样速度回很快 "insecure-registries": [""],//配置你要有本身的私有镜像库经过配置这个能够访问 "max-concurrent-downloads": 10, "log-driver": "json-file", "log-level": "warn", "log-opts": { "max-size": "10m", "max-file": "3" } }
从新加载daemon :
systemctl daemon-reload
重启docker:
systemctl restart docker
这样docker安装完毕
3、安装Jenkins
官网下载 rpm包:https://pkg.jenkins.io/redhat-stable/ 我使用的是jenkins-2.121.1-1.1.noarch.rpm
下载
wget https://pkg.jenkins.io/redhat-stable/jenkins-2.121.1-1.1.noarch.rpm
安装:
yum install -y jenkins-2.121.1-1.1.noarch.rpm
启动:
systemctl start jenkins
到这安装已经完成准备开始配置Jenkins
访问:http://ip:8080
提示须要/var/lib/jenkins/secrets/initialAdminPassword这里的密码
须要选择须要插件,这里能够选择推荐插件安装,后面还能够本身再选择安装其余插件,这里我选择默认安装
安装中
安装完成后的样子,这时候就能够安装本身想要插件了
咱们项目使用使用的team foundation server存储项目,因此要安装tfs的插件
系统管理 -> 插件管理
插件安装完成就能够去构建项目了
新建构建任务
填写任务名称而后选择构建一个自由风格的软件项目
建立任务后进去会看到这些选择,有一个须要配置的在高级中
这里工做空间须要配置,为了后面的构建使用
配置项目源码获取,这里能够根据本身源码的存储方式选择获取方式,支持git,svn ,tfs是前面安装的插件才能支持的
配置好项目源后Jenkins就能获取到咱们的项目了
这是构建触发器
这个是构建环境配置
Abort the build if it's stuck 这里配置构建项目的超时 ps:这里要预估下本身项目的构建时间,若是构建的时间超过了超时时间就构建失败
下面是构建的步骤,这个根据本身的环境来配置
个人构建步骤:
这样项目就已经构建完成,并同推送到镜像库中
还有构建后的操做
这个能够配置ssh一些远程链接方式进行后续的部署。
这里我再分享下个人Dockerfile文件
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base WORKDIR /app EXPOSE 80 FROM microsoft/dotnet:2.2-sdk AS build WORKDIR /src COPY ["TxERP.NetCore.OrderingPolicy.Web/TxERP.NetCore.OrderingPolicy.Web.csproj", "TxERP.NetCore.OrderingPolicy.Web/"] COPY ["TxERP.NetCore.OrderingPolicy.Web/NuGet.config", "TxERP.NetCore.OrderingPolicy.Web/"] //若是你有本身的nuget私有库的话须要把nuget的配置文件拷贝进来,保证项目能获取到类库 RUN dotnet restore "TxERP.NetCore.OrderingPolicy.Web/TxERP.NetCore.OrderingPolicy.Web.csproj" --disable-parallel COPY . . WORKDIR "/src/TxERP.NetCore.OrderingPolicy.Web" RUN dotnet build "TxERP.NetCore.OrderingPolicy.Web.csproj" -c Release -o /app FROM build AS publish RUN dotnet publish "TxERP.NetCore.OrderingPolicy.Web.csproj" -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone //镜像内部默认的是格林尼治时间,这样时间会快8小时,因此要把时区文件拷贝进来 ENTRYPOINT ["dotnet", "TxERP.NetCore.OrderingPolicy.Web.dll"]
这个Dockerfile时间项目创建docker文件的基础上作的改动可能有的朋友会用到
到此Jenkins和docke持续集成已经完成,谢谢各位能看完此文,有错误的地方还请你们给指出。