基于阿里云效实现cicd记录

背景介绍

基于docker swarm 实现了集群服务,mysql、redis等中间件在manager 节点中,work节点跑web服务,web代码在gitee上进行管理,想要实现代码每更打一次tag,自动进行构建最新web 镜像,然后work节点自动更新运行最新镜像服务

实现

1. 构建镜像

1.1 进入阿里云效 创建一条流水线
1.2 选择流水线源,将gitee授权到云效中,然后进行选择代码仓库
1.3. 到阿里云镜像服务中创建一个进行,方便后续打包构建好进行推送

如果是新用用户,那么需要先配置命名空间

然后再创建你的web服务镜像

1.4 回到流水线中,构建镜像选择推送到你的仓库中

可以通过环境变量给要构建出来的镜像打标签,目前我使用的是流水线号,每触发执行一次流水线就会更新一次镜像标签

2. 部署

2.1 work节点机器安装Runner,让我们的docker服务器能够和阿里云进行链接

在部署步骤中有个新建主机,点击可跳转到云效中添加服务器主机,跟着它上面命令在你的主机上安装 Runner,安装好后就可以在流水线中选择主机组了,这样流水线到部署步骤的时候就可以执行部署代码了

目前我使用的是docker swarm 集群,在manager节点中使用docker stack deploy -c server.yml 部署堆栈的时候,work节点上的docker 无法自动pull server.yml 中使用到的容器,所以我这边就新增一个在work主机组pull镜像的步骤,后面在manager主机上就可以使用docker stack deploy 进行启动服务了

2.2 manaer节点部署堆栈服务

在第二个部署步骤中,先将当前流水线号当做镜像的tab版本号配置到环境变量中,然后再启动堆栈,yml配置如下:

yml 复制代码
version: '3.8'

networks:
  base_service_database-net:
    external: true
  web_app:
    external: true
  monitoring:
    external: true

services:

  caipu_cook_info_api:
    image: xxxx/tnan/caipu_api:${CAIPU_API_TAG}
    container_name: caipu_cook_info_api
    command: bash -c " cd caipu_cook_web && gunicorn -c gunicorn.conf.py main:app "
    volumes:
      - /data/logs/cook_web_info_api:/app/caipu_cook_web/logs
    networks:
      - monitoring
      - web_app
      - base_service_database-net
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "7050:8888"
    restart: always
    deploy:
      mode: global  # 关键配置:全局模式
      placement:
        constraints:
          - node.role == worker  # 可选:限制在 worker 节点
        preferences:
          - spread: node.labels.zone  # 跨区域分布
          - spread: node.id          # 均匀分布

yml中的${CAIPU_API_TAG}可以从当前环境变量中获取到对应的镜像tag版本号

3 代码推送触发

不要忘了触发配置,在触发设置中,开启webhook 触发,复制下面webhook地址,到你个gitee上进行配置


目前我这只勾选了tag push,每打一个tag推送后就触发一次cicd进行流水线构建部署

相关推荐
YOLO数据集集合31 分钟前
一站式AI数据自动化标注与训练平台:零门槛玩转YOLO全系列模型
人工智能·深度学习·yolo·ai·自动化·数据集·标注软件
holidaypenguin3 小时前
Docker 前端本地开发指南(实操版)
docker
xiaoxiangsiyan3 小时前
RHCE2026完整版全知识点清单
运维·网络·学习·自动化·rhce
风控PM说3 小时前
自动化风控策略生成:基于决策树的方法
运维·决策树·自动化
fatcoder4 小时前
玩转Docker 08 — 实战:容器化真实后端并编排
后端·docker·容器
AlanBruce4 小时前
摩尔信使MThings新功能:水电不分家、一键设备扫描
网络·自动化·plc·mthings·摩尔信使·电气·西门子s7
vortex56 小时前
Container Desktop 安装与配置指南
docker
江湖有缘7 小时前
5款开源wiki知识库工具,支持Docker快速部署!
docker·容器·开源
JavaDog程序狗8 小时前
【指南】uni-app微信小程序多环境CI-CD完全指南
ci/cd·uni-app·jenkins
云上飞476369629 小时前
Windows WSL2 + Docker 环境下NVIDIA PhysicsNeMo 安装指南
windows·docker·physicsai·physicsnemo