基于阿里云效实现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进行流水线构建部署

相关推荐
hjxu201610 小时前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
Stewie1213812 小时前
Docker 面试题
运维·docker·容器
vpk11212 小时前
Docker Compose 安装 Redis
redis·docker·容器
星纬智联技术13 小时前
GEO E2E 自动化验证测试文章
运维·自动化·geo
爱敲代码的菜菜14 小时前
【测试】自动化测试
css·selenium·测试工具·junit·自动化·xpath
last demo14 小时前
Docker-compose和图形界面管理
docker·容器·eureka
奶茶精Gaaa15 小时前
AI实战(二)生成ui自动化
功能测试·学习·自动化
厦门辰迈智慧科技有限公司16 小时前
高边坡自动化监测要点分析
自动化·高边坡监测·边坡监测
小仓桑16 小时前
【Agent智能体项目实战一】阿里云通义千问兼容 OpenAI 接口实现 AI 对话
人工智能·阿里云·云计算·agent
好像不对劲16 小时前
【docker】win10 wsl docker不能挂GPU
运维·docker·容器·wsl