1、宿主机中创建目录

mkdir -p /jenkins_home

2、编辑compose文件,文件名jenkins.yml

version: '3.4'
services:
jenkins-upgrade:
volumes:
- /jenkins_home:/var/jenkins_home
image: jenkins/jenkins:lts
ports:
- :
- :
deploy:
mode: global
update_config:
parallelism:
delay: 10s
order: stop-first

宿主机端口和容器被映射的端口一定要一致

3、部署,执行命令

docker stack deploy -c jenkins.yml jenkins

不好意思今天博客园抽风,贴不上图,一贴图就提示我登陆,后边再补图吧

4、访问8080端口,选择必须的插件,配置用户名密码(略)

5、安装插件 Maven Integration plugin 、SSH、Gitlab和Gitlab Hook Plugin

5.1、在系统管理-全局工具配置中,找到并点击“Maven 安装...”按钮,填写Maven Name(随意填写),勾选自动安装,并保存

6、新建一个maven任务,

7、在源码管理中添加源码地址,增加用户名密码凭据

8、在构建触发器中 选中Build when a change is pushed to GitLab,后边的地址就是git的webhook要填的地址,在高级中生成Secret token,也填到git的webhook中

9、在Build中的Goals and options里填写clean package

10、在Post Steps中添加Execute shell script on remote host using ssh,分别填写SSH的地址和要执行的命令,SSH的地址需要先在  系统管理-系统设置 的 SSH remote hosts  添加相关数据,然后才能在下拉框中选中。参考命令如下:

/usr/local/apache-tomcat-8.5./bin/shutdown.sh
rm -f /usr/local/apache-tomcat-8.5./webapps/upgrade.war
cp -f /jenkins_home/workspace/upgrade-manager-maven/target/upgrade-manager-0.0.1.war /usr/local/apache-tomcat-8.5./webapps/upgrade.war
/usr/local/apache-tomcat-8.5./bin/startup.sh

容器集群模式部署参考命令如下:

export LAST_HTML_IMAGE_NAME=`docker images |grep html-in-microservice|sed -n '1p'|awk {'print $1":"$2'}`
sed -i "s#image:.*#image: $LAST_HTML_IMAGE_NAME#g" /apps/html.yml
nohup docker save -o /docker-images/html-`docker images|grep html-in-microservice|sed -n '1p'|awk {'print $2'}`.tar $LAST_HTML_IMAGE_NAME >/dev/null >& &
nohup docker stack deploy -c /apps/html.yml html >/dev/null >& &

保存即可

11、再gitlab的webhook中配置相应的内容

之后再提交代码就会触发构筑和脚本执行

(完毕)

centos7 在docker swarm中运行Jenkins,利用gitlab的webhook触发自动部署脚本的更多相关文章

  1. 利用github的webhook进行自动部署

    利用github的webhook进行自动部署 github提供了webhook功能,大概意思就是,当你提交了代码,git检测到你进行了push,可以调起你一个你知道的url. 这个功能有什么用了?比如 ...

  2. 在docker中运行jenkins实现代码自动发布到测试服务器

    在docker中运行jenkins 用的镜像是apline版:lts-alpine,并设置正确的时区. docker run --name jenkins_master -d \ -p 8081:80 ...

  3. Docker容器中运行ASP.NET Core

    在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了. ...

  4. docker_facenet_image在Docker容器中运行Facenet环境搭建

    对开发和运维人员来说,可能最梦寐以求的就是一次性地创建或配置,可以在任意环境.任意时间让应用正常运行.而Docker恰恰是可以实现这一终极目标的瑞士军刀. 具体来说,Docker在开发和运维过程中,具 ...

  5. .NetCore下使用IdentityServer4 & JwtBearer认证授权在CentOS Docker容器中运行遇到的坑及填坑

    今天我把WebAPI部署到CentOS Docker容器中运行,发现原有在Windows下允许的JWTBearer配置出现了问题 在Window下我一直使用这个配置,没有问题 services.Add ...

  6. 一个docker容器中运行多个服务还是弄一堆docker容器运行?

    不建议直接在单个 Docker 容器中运行多个程序. 以 2017年 10 月18 日 Docker 官方支持 Kubernetes 为分水岭计算,Kubernetes 赢得容器编排之战的最终胜利已经 ...

  7. 在docker容器中运行hello world!

    在docker容器中运行hello world! docker容器可以理解为在沙盒中运行的进程.这个沙盒包含了该进程运行所必须的资源,包括文件系统.系统类库.shell 环境等等.但这个沙盒默认是不会 ...

  8. Elasticsearch核心技术(1)--- Docker容器中运行ES、Kibana、Cerebro

    Docker容器中运行ES,Kibana,Cerebro和Logstash安装与数据导入ES 想加强ES有关的知识,看了阮一鸣老师讲的<Elasticsearch核心技术与实战>收获很大, ...

  9. .Net Core 3.0 的 docker 容器中运行 无法 访问 Oracle数据库

    .Net  Core 3.0 的 docker 容器中运行 无法 访问 Oracle数据库  , 一直报下面的错误 ORA-00604: error occurred at recursive SQL ...

随机推荐

  1. 携程机票的ABTest实践

    携程ABTest伴随UBT(User Behavior Tracking System)系统一起,两年多的时间,从最初online寥寥几个实验,到现在单是机票BU每周就有数十个app/online/h ...

  2. hdu-4466-Triangle 数学题

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4466 题目意思: 一根长为N的木棒,长度分成若干个三角形,使得任意两个三角形都相似.对应顺序三角形全 ...

  3. @Autowired用法详解

    @Autowired 注释,它可以对类成员变量.方法及构造函数进行标注,完成自动装配的工作. 通过 @Autowired的使用来消除 set ,get方法.在使用@Autowired之前,我们对一个b ...

  4. andengine的convertLocalCoordinatesToSceneCoordinates方法

    使用Tile地图,看过andengine中的例子,都会发现例子中有这么一段话,以前版本的是convertLocalToSceneCoordinates方法. scene.registerUpdateH ...

  5. tensorflow语义分割api使用(deeplab训练cityscapes)

    安装教程:https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/installation.md citysca ...

  6. RecyclerView的使用(2)之多Item布局的载入

    原创文章,转载请注明 http://blog.csdn.net/leejizhou/article/details/50708349 李济洲的博客 上一篇介绍的了RecyclerView的基础使用ht ...

  7. 带监督的文本分类算法FastText

    该算法由facebook在2016年开源,典型应用场景是“带监督的文本分类问题”.   模型 模型的优化目标如下:   其中,$<x_n,y_n>$是一条训练样本,$y_n$是训练目标,$ ...

  8. easyui权限系统改造备忘

    修改list.js文件 //// 如果所有操作按钮隐藏,则list-toolbar隐藏 //if ($(".list-toolbar").length > 0) { // v ...

  9. Spark:JavaRDD 转化为 Dataset<Row>的两种方案

    JavaRDD 转化为 Dataset<Row>方案一: 实体类作为schema定义规范,使用反射,实现JavaRDD转化为Dataset<Row> Student.java实 ...

  10. Python防止sql注入

    看了网上文章,说的都挺好的,给cursor.execute传递格式串和参数,就能防止注入,但是我写了代码,却死活跑不通,怀疑自己用了一个假的python 最后,发现原因可能是不同的数据库,对于字符串的 ...