You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Gitlab CI/CD流水线满足三类网络自动化研究场景需求

方案选择建议

两种方案均可行,可根据你的项目实际情况选择:

  • 若三个研究案例属于同一项目体系,共享Ansible角色、公共变量、NAPALM依赖配置等公共资源,优先选择*单仓库单.gitlab-ci.yml*方案,可大幅降低重复配置的维护成本
  • 若三个研究案例完全独立,无共享资源,且后续需要分别交付、独立开源或做权限隔离,再考虑分仓库单独配置的方案,否则单仓库方案的使用效率更高

单仓库单.gitlab-ci.yml实现方法

通过GitLab CI的rules关键字搭配自定义流水线变量,即可实现按需运行指定案例的逻辑,具体操作如下:

  1. 定义全局通用阶段,三个案例可复用你已设计的校验、测试环境部署、测试验证、生产环境部署、生产验证全流程阶段:
stages:
  - validate
  # TEST environment
  - deploy_to_test
  - deploy_to_test_verification
  # PRODUCTION environment
  - deploy_to_prod
  - deploy_to_prod_verification
  1. 为每个案例的作业配置规则,你可以自定义名为SCENARIO的变量,不同取值对应不同研究案例,只有变量匹配时对应作业才会执行:
# -------------- 研究案例1:配置下发/新服务部署 --------------
validate_case1:
  stage: validate
  script:
    - ansible-playbook validate-new-service.yml
  rules:
    - if: $SCENARIO == "case1"

deploy_to_test_case1:
  stage: deploy_to_test
  script:
    - ansible-playbook deploy-new-service.yml -i test-hosts
  rules:
    - if: $SCENARIO == "case1"

# 剩下的测试验证、生产部署、生产验证作业同理配置rules规则

# -------------- 研究案例2:移除L2接口维护 --------------
validate_case2:
  stage: validate
  script:
    - ansible-playbook validate-remove-l2.yml
  rules:
    - if: $SCENARIO == "case2"

deploy_to_test_case2:
  stage: deploy_to_test
  script:
    - ansible-playbook remove-l2-interface.yml -i test-hosts
  rules:
    - if: $SCENARIO == "case2"

# -------------- 研究案例3:全量配置替换维护 --------------
validate_case3:
  stage: validate
  script:
    - napalm validate --config full-running.cfg
  rules:
    - if: $SCENARIO == "case3"

deploy_to_test_case3:
  stage: deploy_to_test
  script:
    - ansible-playbook full-config-replace.yml -i test-hosts
  rules:
    - if: $SCENARIO == "case3"
  1. 按需触发流水线的方式:
  • 页面手动触发:进入GitLab项目的「运行流水线」页面,新增变量SCENARIO,取值填写case1/case2/case3,点击运行后只会执行对应案例的所有作业
  • API触发:调用GitLab CI流水线触发接口时,请求参数携带对应SCENARIO变量即可
  1. 进阶优化:如果三个案例的作业逻辑重复度高,可以用extends关键字提取公共模板,减少冗余代码:
# 公共部署作业模板
.common_deploy:
  script:
    - ansible-playbook $PLAYBOOK_PATH -i ${ENV}-hosts
  rules:
    - if: $SCENARIO == $TARGET_SCENARIO

# 案例1测试部署作业直接继承模板,仅需传入差异化变量
deploy_to_test_case1:
  extends: .common_deploy
  stage: deploy_to_test
  variables:
    PLAYBOOK_PATH: deploy-new-service.yml
    ENV: test
    TARGET_SCENARIO: case1

分仓库方案注意事项

如果选择分仓库的方案,需要先把三个案例依赖的公共Ansible角色、变量文件、依赖声明等资源抽为独立公共包,三个仓库分别引用即可,适合三个场景后续需要独立迭代、权限分开管控的场景。

内容的提问来源于stack exchange,提问作者Sam2022

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:54:04