Gitlab+Jenkins+Docker实现net core持续集成

前言

在项目中使用这一套自动集成的体系之后,一直想找个时间总结出来,用于自己记录也打算将自己的所得分享给园友们,不经常写文章,可能会有错误的地方,希望各位不吝指正,我会及时的改正并表示感谢,希望大家能够一起进步。

前期准备

centos7.5系统环境,关闭防火墙

jenkins in docker 安装

    yum install docker

    docker service start

    docker pull jenkins

    docker run -d -p 8080:8080 -p 50000:50000 \
        -v jenkins:/var/jenkins_home \
        -v /etc/localtime:/etc/localtime \
        --name jenkins           docker.io/jenkins/jenkins

-d 后台运行镜像

-p 80:8080 将镜像的8080端口映射到服务器的80端口

-p 50000:50000 将镜像的50000端口映射到服务器的50000端口

-v jenkins:/var/jenkins_home 挂载卷

/var/jenkins_home目录为jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。该命令会将/var/lib/docker/volumes/jenkins映射到相应路径,默认的挂载卷都在docker目录下的volumes文件夹内,可以自己指定主机内的其他路径

-v /etc/localtime:/etc/localtime 让容器使用和服务器同样的时间设置。

--name jenkins 给容器起一个别名

我在创建好之后遇到了访问jenkins界面白屏的问题,重启容器问题解决,重启大法好。

重启命令 docker service restart

配置jenkins

Publish over SSH插件配置

系统管理->系统设置

Passphrase:用户密码

Git凭证添加

进入凭据->系统->全局凭据->添加

添加成功后,点击Test Configuration 测试是否能够连通

新建构建任务

源码管理

配置如下,凭证选择我们上面配置的git凭证,分支调到需要发布的分支上

构建触发器

选择轮询SCM设置为H/2 * * * *,即每两分钟检查一次是否有新的提交

构建后操作

选择Send files or execute commands over SSH,这里我们不用这个插件进行文件传输,而是用它来执行主机中的shell脚本,配置如下

脚本内容如下:

#!/bin/bash

echo ‘开始执行部署‘

#进入jenkins的工作区
cd /var/lib/docker/volumes/jenkins/_data/workspace/test

echo ‘更新镜像‘

echo ‘---------------重新构建镜像----------------------‘
cp testCore/Dockerfile Dockerfile
#执行net core 程序的dockerfile,生成程序镜像
docker build --no-cache -t testCore:master .
echo ‘---------------镜像构建成功----------------------‘

#容器创建
docker run -d -it     -v /home/configs/testCore/appsettings.json:/app/appsettings.json     -v /etc/localtime:/etc/localtime:ro     -p 6000:80     --restart=always     --name test testCore:master

echo ‘部署结束‘

至此,整个构建过程就结束了,但是你在如此构建几次之后就会发现一个问题

查询了一下,导致该问题的原因是

重新构建镜像的时候,该镜像正在被某容器使用中,那么在重新构建同名同版本镜像后,docker保留原来的镜像,即容器还是用原来的, 那么原来的镜像名称变成none,tag也成了none

解决的办法是 在shell脚本之后添加一行删除tag为none的镜像的脚本,如下

docker images|grep none|awk ‘{print $3}‘|xargs docker rmi

总结

实验的进程总不会像表面那样一番风顺,期间也会遇到各种各样的问题,我很享受那种闯过一关又一关看到成果的过程,后续更新我会将我在部署时遇到的一些小问题整理出来,作为记录学习,感谢阅读。

原文地址:https://www.cnblogs.com/qmhuang/p/11123761.html

时间: 2024-10-05 23:54:39

Gitlab+Jenkins+Docker实现net core持续集成的相关文章

基于Jenkins Pipeline的ASP.NET Core持续集成实践

原文:基于Jenkins Pipeline的ASP.NET Core持续集成实践 最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署,因此这里总结一下. 一.关于持续集成与Jenkins Pipeline 1.1 持续集成相关概念 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI) . 持续集成指的是,频繁地 (一天多次) 将代码集成到

Jenkins+Maven进行Java项目持续集成

最近配置了Jenkins服务器,记录下基本过程.(当然还遇到了若干小问题,兵来将挡水来土掩就是了) Jenkins安装 安装Tomcat 从Jenkins官网下载jenkins.war文件.官网地址:http://jenkins-ci.org/,注意选择最新版本的Long-Term Support Release 把war文件部署到Tomcat中 启动Tomcat 在浏览器中配置Jenkins,浏览器地址:http://{Tomcat IP}:{Tomcat port}/jenkins/ Jen

使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库文件和版本,以及怎么将自己的模块上传至nexus私服,供其他模块引用.下面将主要介绍如何利用Jenkins.SVN.Tomcat以及Sonar来完成项目的自动化编译.测试和发布,以及检查项目的代码质量. 利器Jenkins     Jenkins源于另外一个持续集成工具Hudson,Hudson在o

GitLab + Jenkins + Docker + Kubernetes。

目前方案是GitLab + Jenkins + Docker + Kubernetes. 方案的工作流程如下:首先,开发人员提交代码代码提交:随后,GitLab 会自动触发Jenkins job,Jenkins job会构建相应的镜像,放在一个Kubernetes的Pod里面:接下来,Kubernetes的Pod会把模块需要的其他依赖都包含在其内部(比如MySQL.Redis.MongoDB等),运行robot测试用例,测试用例的结果最后会反馈到Jenkins中:所有测试通过之后,GitLab把

Jenkins+maven+git+sonar 系统持续集成&代码单测管理

Jenkins+maven+git+sonar 系统持续集成&代码单测管理 Jenkins的安装 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作. 1.下载最新的版本(一个 war 文件).Jenkins官方网址: http://Jenkins-ci.org/ 2.运行 java -jar jenkins.war(jenkins默认使用的是内嵌的jetty服务,用户也可以布置到其它容器中.)

基于Jenkins+git+gradle的android持续集成,jenkinsgradle

转载:http://www.android100.org/html/201506/22/156680.html 基于Jenkins+git+gradle的android持续集成,jenkinsgradle 本文参考了: http://my.oschina.net/uboluo/blog/157483 http://java.dzone.com/articles/automating-continuous 以前都是通过IDE(eclipse or Android Studio)手动生成apk通过Q

使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

转载:http://www.cnblogs.com/leefreeman/p/4226978.html 前言 上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库文件和版本,以及怎么将自己的模块上传至nexus私服,供其他模块引用.下面将主要介绍如何利用Jenkins.SVN.Tomcat以及Sonar来完成项目的自动化编译.测试和发布,以及检查项目的代码质量.

第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s

总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8s-master上执行rc.service的创建,进而创建Pod,从私服拉取镜像,根据该镜像启动容器 在第四十三章 微服务CICD(5)- gitlab + jenkins + docker中,实现了前两步.本节实现第三步 一.打通jenkins与k8s-master两台机器之间的ssh无密码访问

gitlab + jenkins + docker + k8s

总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8s-master上执行rc.service的创建,进而创建Pod,从私服拉取镜像,根据该镜像启动容器 在第四十三章 微服务CICD(5)- gitlab + jenkins + docker中,实现了前两步.本节实现第三步 一.打通jenkins与k8s-master两台机器之间的ssh无密码访问