# 教程概览

Pipeline 用户文档包含了一系列的入门教程帮您使用 Pipeline 以自动化的方式开始构建你的应用程序。

如果您是一个想要提高对持续集成(CI) / 持续交付 (CD) 概念的理解的开发者, 或者已经对这些概念很熟悉 但不知道如何使用 Pipeline 去实现, 那就从这些教程开始学习吧。

# 入门教程

本教程展示如何使用 Pipeline 涉及到基于特定的技术栈的 CI/CD 概念的基础。 建议您再使用前首先阅读Pipeline 入门

选择与你的技术栈有关或你最熟悉的一个教程:

# 高级教程

该教程展示 Pipeline 更高级的特性和如何管理你的更复杂更灵活的流水线项目。

# 用 Pipeline 多主机简单运维

案例说明:通过 yum 安装 redis 
1. 下载epel仓库
2. 安装redis仓库
3. 使用命令启动redis服务
4. 设置redis为开机自启动
5. 防火墙开放默认端口[CentOS 7]

image

image

image

示例脚本:

var pipeline={
    parameters:{
        confirm:{
            type:'bool',message:'确认全新安装redis ?'
        }
    },
    stages:{
        uat:{
            node:"uat.example.com",
            workspace:"/opt/",
            steps:{
                runInstall(){
                    ret = $.parameter('confirm');
                    if(!ret){
                        $.abort('用户取消安装');
                    }
                    ret=$.sh('yum install epel-release -y');
                    if(ret!=0){
                        $.abort('下载epel仓库失败')
                    }
                    $.sh('yum install redis -y'); 
                    $.sh('service redis start')
                    $.sh('chkconfig redis on');
                    $.sh('firewall-cmd --zone=public --add-port=6379/tcp --permanent');
                    $.sh('firewall-cmd --reload');
                }
            }
        }
    }
}

扩展案例:下载软件

  1. 通过wget 下载安装文件
  2. 复制拷贝至相应主机
  3. 发送完成通知

示例脚本:


var pipeline={
    stages:{
        compile:{
            node:'compile.example.com',
            workspace:'/opt/soft/',
            steps:{
                download(){
                    ret = $.sh('wget http://download.redis.io/releases/redis-4.0.14.tar.gz');
                    if(ret!=0){
                        $.abort('下载Redis文件失败');
                    }
                },
                archive(){
                	$.copyTo('redis-4.0.14.tar.gz', 'uat.example.com','/opt/soft/redis-4.0.14.tar.gz');
                },
                notify(){
                    $.sendNotification('liaoyanlong','下载,并传输完成');
                }
            }
        }
    }
}