Jenkins+Docker+GIT持续集成


Jenkins、Docker Hub、Github集成是非常简单的一条龙服务,但我们大部分时间使用的是国内Git仓库,并且源码为私有。这篇文章介绍的是通过Git仓库的Webhooks通知Jenkins执行构建并发布到阿里容器镜像服务,阿里容器镜像服务触发器通知我们的集群更新服务。

准备工作

开通容器镜像服务:https://cr.console.aliyun.com 并配置好独立的登录密码。
创建一个命名空间和镜像仓库,我们将使用storage的源码进程演示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
得到我们的仓库地址和使用说明,我选的成都,所以仓库地址是registry.cn-chengdu.aliyuncs.com
在这里插入图片描述

编写Dockerfile

参见源码https://github.com/donjan-deng/la-storage/blob/master/Dockerfile

安装Jenkins

在管理节点执行:

docker run -d --restart always --name jenkins \
    -u root -p 8080:8080 \
    -v /home/data/jenkins-data:/var/jenkins_home \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v "$HOME":/home jenkinsci/blueocean

打开:http://192.168.137.200:8080,需要密码。进入docker

docker exec -it jenkins bash
cat /var/jenkins_home/secrets/initialAdminPassword

我的密码是635ab3fe80c7406bbc3b821d045f7122

下一步就是插件安装,选择推荐安装。接下来是漫长的等待。

接下来创建管理帐号或者使用admin继续,密码就是上面得到的。

添加一个全局凭据保存阿里云镜像仓库的账号密码

在这里插入图片描述
在这里插入图片描述

添加API Token

在这里插入图片描述
在这里插入图片描述

去掉跨站点请求安全设置

在这里插入图片描述
在这里插入图片描述

编写Jenkinsfile

参见源码https://github.com/donjan-deng/la-storage/blob/master/Jenkinsfile

添加流水线

打开Blue Ocean面板:http://192.168.137.200:8080/blue/organizations/jenkins 创建流水线。选择git,填入你的私有仓库地址,可以使用用户名密码方式登录,也可以使用证书。
在这里插入图片描述
创建完流水线会自动执行第一次构建。
在这里插入图片描述

部署服务

配置env文件

进入我们搭建集群时安装的Portainer面板,在Configs创建一个storage.env的config

APP_NAME=storage
APP_KEY=base64:5B8U2aa/7ftmij9oZP9kz6JzpLJQOGx5MtVyqf/rbXo=
APP_TIMEZONE=UTC

LOG_CHANNEL=elasticsearch
ELASTIC_HOST=es01:9200
LOG_SLACK_WEBHOOK_URL=
#我们的storage服务没有用到数据库,所以不用设置
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
QUEUE_CONNECTION=sync

FILESYSTEM_DRIVER=s3
AWS_KEY=BCIAIOSFODNN7EXAMPLE
AWS_SECRET=aKalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
AWS_REGION=us-east-1
AWS_URL=http://minio:9000
AWS_BUCKET=image
SERVICE_USER_CENTER=http://user_center:9504
登录阿里云镜像仓库

在Portainer面板添加我们的阿里云镜像仓库
在这里插入图片描述
在这里插入图片描述

创建服务

两种方法:

  • 在管理节点执行命令
docker login registry.cn-chengdu.aliyuncs.com #先登录
docker service create \
    --name storage \
    --with-registry-auth \
    --replicas 1 \ #这是同时运行的副本数,=如果设置为每个节点都运行换成--mode global
    --network my-net \
    --config source=storage.env,target=/app/.env \ #前面我们创建的配置文件
     registry.cn-chengdu.aliyuncs.com/donjan/storage:latest
  • 在Portainer面板创建
    在这里插入图片描述
    同时运行的副本数,选择Global所有节点都运行
    在这里插入图片描述
    打开webhook
    在这里插入图片描述
    私有网络在这里插入图片描述
    配置文件在这里插入图片描述
    如何变更config
    比如我们.env配置要变,创建一个storage.v2.env,可以在Portainer面板删掉原来的,添加新的。然后Apply changes或者直接执行命令
  docker service update \
  --config-rm storage.env \
  --config-add source=storage.v2.env,target=/app/.env \
  storage

持续集成

  • 在我们GIT仓库webhook设置master有push就发送POST请求给Jenkins。

    http://admin:11c4d7faba574273c76a92def472979658@192.168.137.200:8080/job/la-storage/job/master/build

    其中admin为账号:前面创建的token,la-storage为流水线名称,master为分支名。必须是POST请求。

  • 在我们的Portainer面板找到刚才创建的Service,复制出webhook连接,我的是

    http://192.168.137.200:9000/api/webhooks/a882c379-8fae-4042-a53b-8635c3b23989

    在阿里云镜像仓库创建一个触发器,URL就填写上面的,选择“Tag触发",然后勾选我们创建服务用的latest Tag

《PHP微服务练兵》系列索引:https://blog.csdn.net/donjan/article/details/103005084

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值