使用webhook自动部署代码

使用webhook可以实现推送功能,webhook是反向api机制,当达到触发条件后,会调用已配置的api。
在自动化部署中,通过webhook向接口推送消息,接口执行部署脚本,可以实现开发人员提交或者合并代码即触发机制,后台收到消息后执行脚本自动拉取代码并构建镜像启动。
webhook配置在git仓库中,公司代码库已配置,不做详细描述,网上搜索教程吧。
后台执行脚本一般使用语言的命令行工具包实现。
shell脚本如下:

#!/bin/bash
getImageId(){
  docker images --filter=reference='test:v1' -q;
}//获取镜像id
getContainerId(){
  docker ps --filter='name=myContainer' -q;
}//获取容器id
getNoneCId(){
  docker images|grep none|awk '{print $3}';
}//制作最小golang镜像时,会先使用golang-alpine镜像编译,这一步会生成一个none镜像

imageid=$(getImageId)
containerid=$(getContainerId)
noneid=$(getNoneCId)

cd $GOPATH/src/test
git checkout develop //切换git分支
git branch
git pull//拉取代码

docker stop $containerid //停止当前容器
docker rm $containerid //删除当前容器
docker rmi $imageid //删除镜像
docker rmi $noneid //删除none镜像
docker build -t test:v1 //构建镜像test:v1
docker run -d --name myContainer -p 8080:8080 test:v1 //创建并运行容器myContainer,映射容器内8080端口到主机8080
docker ps //查看docker进程

自动拉取代码并构建镜像后,可以通过curl url验证自己的功能啥的~

你可能感兴趣的:(使用webhook自动部署代码)