git在CICD实践中的应用11:gitee仓库webhook使用(下)
2020-02-06 10:38
666 查看
一、背景
上一文中,我们使用nodejs作为webhook触发的脚本,但是实现的不好,配置不如jenkins那样方便,因此,这个脚本需要适时修改。为了配合本系列主题,本文使用docker来部署这个脚本——此处更应该称之为服务,一个专门响应gitee仓库webhook的服务。当我们修改了脚本文件,并提交代码后,自动构建、部署。
为方便起见,我们使用gitlab托管nodejs代码,在.gitlab-ci.yaml文件中做构建和部署的动作。
——是的,gitlab本身具备“提交自动触发构建”的环境,但gitee不具备,所以利用gitlab在gitee上完成gitlab应有的功能。
二、概述
操作要点描述如下:
- 在Gitlab构建脚本中,将所需的文件拷贝到云主机上。
- 在云主机上构建镜像。
三、实验
Dockerfile文件:
FROM node:alpine LABEL maintainer Late Lee(li@latelee.org) # Create app directory RUN mkdir -p /home/Service WORKDIR /home/Service # Bundle app source COPY . /home/Service RUN npm install EXPOSE 4000 CMD [ "node", "server.js" ]
说明:
- 基于node基础镜像构建。
- 创建Docker镜像,内含node运行环境。
- 将运行所需文件拷贝到镜像中,开放4000端口,在启动容器时运行nodejs文件。
.gitlab-ci.yml文件:
send_job: before_script: - apt-get update -qq && apt-get install -y sshpass script: - pwd - ls -a # 此处进行编译、构建等操作 after_script: - echo "will try to build docker in remote host..." # 拷贝临时文件,使用-p,防止出错 - sshpass -p "$PASSWD" ssh -o StrictHostKeyChecking=no $USER@$HOST "mkdir -p /tmp/gitee-koa" # 拷贝文件 - sshpass -p "$PASSWD" scp -o StrictHostKeyChecking=no Dockerfile package.json koa_gitee.js $USER@$HOST:/tmp/gitee-koa # 构建docker - sshpass -p "$PASSWD" ssh -o StrictHostKeyChecking=no $USER@$HOST "cd /tmp/gitee-koa;docker build -t gitee-koa ." # 先删除,再运行docker - sshpass -p "$PASSWD" ssh -o StrictHostKeyChecking=no $USER@$HOST "cd /tmp/gitee-koa;docker rm -f gitee-koa;docker run --name gitee-koa -p 4000:4000 -itd gitee-koa" only: - master
说明:
- 在远程主机创建临时目录。
- 将必要的文件拷贝到该目录。
- 创建docker镜像。
- 删除docker容器并重新运行,容器名称为gitee-koa。注意云主机要开放4000端口。
- 使用sshpass操作远程主机。
- 密码、用户名、主机名称,均使用Gitlab的环境变量保存。配置界面如图1所示。
图1
四、测试
当提交代码时,Gitlab自动构建,如图2所示:
图2
当构建成功后,云主机已经重新启动了docker。可以用
docker ps gitee-koa查看,图3为响应WebHook的日志:
图3
五、小结
本文假设脚本文件含有涉密内容,所以不能直接构建好docker上传到如dockerhub这样公开的服务器上,但是,可以选择阿里云docker仓库,阿里云仓库可以为私有。这样一样,就不需要在远程主机上构建docker了。
我们也可以舍弃docker方式,假设云主机具备的nodejs环境,则直接运行js文件即可。
但是,无论哪种方式,其过程本质上是一样的。
前文与本文涉及的WebHook,可适用于GitHub,仅请求数据不同而已。
附
由于笔者网速慢(最便宜的套餐,连上网络非常卡,而且gitlab和dockerhub服务器还是外面的,从决定做,到预研,到实验,至结束,耗时一个晚上(约4小时)以及一个上午。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 使用 IDEA + Maven + Git 快速开发 Java Web 应用
- 使用 IDEA + Maven + Git 快速开发 Java Web 应用
- 在git.oschina上使用WebHook自动部署
- 在windows下,git webhook使用php拉取代码的学习总结
- 使用 IDEA + Maven + Git 快速开发 Java Web 应用
- Docker实践 - 使用maven插件自动部署web应用至Docker容器的tomcat
- 《Web 标准和SEO应用实践 》-使用免费的搜索系统
- tornado学习笔记11 Web应用中模板(Template)使用应用实践
- Docker实践-使用maven插件自动部署web应用至Docker容器的tomcat
- 使用 IDEA + Maven + Git 快速开发 Java Web 应用
- Git WebHook:用于迅速搭建并使用 WebHook 进行自动化部署和运维系统( Python)
- 使用 IDEA + Maven + Git 快速开发 Web 应用
- 基础架构四-APP1:使用代码仓库、应用仓库、yum本地源完成CICD
- 使用 IDEA + Maven + Git 快速开发 Java Web 应用
- Web前端开发最佳实践(11):使用更严格的JavaScript编码方式,提高代码质量
- 使用 IDEA + Maven + Git 快速开发 Java Web 应用
- 玩转git之webhook应用初探
- 使用 IDEA + Maven + Git 快速开发 Web 应用
- 使用 IDEA + Maven + Git 快速开发 JAVA或者Web 应用(转)
- 使用 IDEA + Maven + Git 快速开发 Java Web 应用