一个简单的小栗子,利用GitLab+Ansible+Jenkins实现CI/CD

 

 其中,代码部署,各组件服务的安装、启动、配置、重启,服务健康检查都可以交给Ansible做

 

 

一个pipeline栗子

#!groovy


pipeline {
    agent {node {label 'master'}} #确定在master主机上执行


    environment {
        PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin" #确定环境变量
    }


    parameters { #设置参数
        choice(
            choices: 'dev\nrprod',
            description: 'Choose deploy environment',
            name: 'deploy_env'
        )
        string (name: 'branch', defaultValue: 'master', description: 'Fill in your ansible repo branch')
    }


    stages {
        stage ("Pull deploy code") { 从GitLab wordpress-ansible项目克隆ansbile-playbook文件
            steps{
                sh 'git config --global http.sslVerify false'
                dir ("${env.WORKSPACE}"){
                    git branch: 'master', credentialsId: '6cde576d-8b02-405a-bd8d-d2ef23c49c1a', url: 'https://gitlab.test.com/root/ansible-repo.git'
                }
            }
        }


        stage ("Check env") { #利用ssh命令查看目标主机的状态,确认是否要执行部署
            steps {
                sh """
                set +x
                user=`whoami`
                if [ $user == deploy ]
                then
                    echo "[INFO] Current deployment user is $user"
                    source /home/deploy/.py3-a2.5-env/bin/activate
                    source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q
                    echo "[INFO] Current python version"
                    python --version
                    echo "[INFO] Current ansible version"
                    ansible-playbook --version
                    echo "[INFO] Remote system disk space"
                    ssh root@test.example.com df -h
                    echo "[INFO] Rmote system RAM"
                    ssh root@test.example.com free -m
                else
                    echo "Deployment user is incorrect, please check"
                fi


                set -x
                """
            }
        }


        stage ("Anisble deployment") { #运行clone下来的ansible-playbook文件
            steps {
                input "Do you approve the deployment?"
                dir("${env.WORKSPACE}/playbooks"){
                    echo "[INFO] Start deployment"
                    sh """
                    set +x
                    source /home/deploy/.py3-a2.5-env/bin/activate #加载python3.6环境变量
                    source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q #加载ansible环境变量
                    ansible-playbook -i inventory/$deploy_env ./deploy.yaml -e branch=$branch -e env=$deploy_env
                    set -x
                    """
                    echo "[INFO] Deployment finished..."
                }
            }
        }
    }
}

 

posted @ 2020-09-25 17:32  Edward_han  阅读(526)  评论(0)    收藏  举报