jenkins

安裝

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

在/etc/apt/sources.list尾巴上添加以下:javascript

deb https://pkg.jenkins.io/debian-stable binary/

執行命令java

sudo apt-get update
sudo apt-get install jenkins

修改用root用戶啓動Jenkins

vim /etc/defalut/jenkins

修改以下兩行node

JENKINS_USER=root
JENKINS_GROUP=root

修改後,執行命令:mysql

service jenkins start

本身的項目參考

Jenkinsfile以下:nginx

pipeline {
    agent any
    environment {
        zycloud_path = '/zycloud'
        repo = 'git@10.10.1.58:zycloud_web'
        version = '1.0.0'
        ip = "127.0.0.1"
        MYSQL_ROOT_PASSWORD = "admin"
    }
    stages {
        stage('init') {
            steps {
                script {
                    if (!fileExists('/zycloud')) {
                        sh 'mkdir /zycloud'
                    }
                }
            }
        }
        stage("uninstall") {
            steps {
                script {
                    def images = ["zycloud-admin", "zycloud-license", "zycloud-auth", "zycloud-center", "zycloud-gate", "zycloud-client", "zycloud-desktop"]
                    for (int i = 0; i < images.size(); i++) {
                        try {
                            sh "docker rm -f ${images[i]}"
                        } catch (ex) {}
                        try {
                            sh "docker rmi zycloud/${images[i]}:${version}"
                            sh "docker rmi zycloud/${images[i]}:latest"
                        } catch (ex) {}
                    }
                    def baseImages = ["zycloud-mysql", "zycloud-redis", "zycloud-rabbitmq"]
                    baseImages.each {
                        try {
                            sh "docker rm -f ${it}"
                        } catch (ex) {}
                    }
                }
            }
        }

        stage("fetch code") {
            parallel {
                stage('zycloud-server') {
                    steps {
                        script {
                            if (fileExists('/zycloud/zycloud-server')) {
                                dir ("/zycloud/zycloud-server") {
                                    sh 'git pull'
                                }
                            } else {
                                dir("/zycloud") {
                                    sh "git clone ${repo}/zycloud-server.git"
                                }
                            }
                        }
                    }
                }
                stage('zycloud-license') {
                    steps {
                        script {
                            if (fileExists('/zycloud/zycloud-license')) {
                                dir ("/zycloud/zycloud-license") {
                                    sh 'git pull'
                                }
                            } else {
                                dir("/zycloud") {
                                    sh "git clone ${repo}/zycloud-license.git"
                                }
                            }
                        }
                    }
                }
                stage('zycloud-client') {
                    steps {
                        script {
                            if (fileExists('/zycloud/zycloud-client')) {
                                dir ("/zycloud/zycloud-client") {
                                    sh 'git pull'
                                }
                            } else {
                                dir("/zycloud") {
                                    sh "git clone ${repo}/zycloud-client.git"
                                }
                            }
                        }
                    }
                }
                stage('zycloud-desktop') {
                    steps {
                        script {
                            if (fileExists('/zycloud/zycloud-desktop')) {
                                dir ("/zycloud/zycloud-desktop") {
                                    sh 'git pull'
                                }
                            } else {
                                dir("/zycloud") {
                                    sh "git clone ${repo}/zycloud-desktop.git"
                                }
                            }
                        }
                    }
                }
            }
        }
        stage('build') {
            parallel {
                stage('build server') {
                    steps {
                        dir("${zycloud_path}/zycloud-server") {
                            sh 'mvn clean package -DskipTests'
                        }
                    }
                }
                stage('build license') {
                    steps {
                        dir("${zycloud_path}/zycloud-license") {
                            sh 'mvn clean package docker:build'
                        }
                    }
                }
                stage('build desktop') {
                    steps {
                        script {
                            dir ("${zycloud_path}/zycloud-desktop") {
                                try {
                                    sh "npm install . --registry=https://registry.npm.taobao.org"
                                    sh "npm run build:prod"
                                } catch (ex) {
                                    sh "npm rebuild node-sass --force"
                                    sh "npm install --registry=https://registry.npm.taobao.org"
                                    sh "npm run build:prod"
                                }
                                sh "docker build -t zycloud/zycloud-desktop:${version} -f hack/Dockerfile.zycloud-desktop ."
                            }
                        }
                    }
                }
                stage('build client') {
                    steps {
                        script {
                            dir ("${zycloud_path}/zycloud-client") {
                                try {
                                    sh "npm install . --registry=https://registry.npm.taobao.org"
                                } catch (ex) {
                                    sh "npm rebuild node-sass --force"
                                    sh "npm install --registry=https://registry.npm.taobao.org"
                                }
                                sh "docker build -t zycloud/zycloud-client:${version} -f hack/Dockerfile.zycloud-client ."
                            }
                        }
                    }
                }
            }
        }
        stage('package') {
            steps {
                script {
                    if (fileExists("${zycloud_path}/zycloud.tar")) {
                        sh "rm -rf ${zycloud_path}/zycloud.tar"
                    } 
                    def images = ["zycloud-admin", "zycloud-license", "zycloud-auth", "zycloud-center", "zycloud-gate", "zycloud-client", "zycloud-desktop"]
                    def baseImages = ["zycloud-node", "zycloud-mysql", "zycloud-redis", "zycloud-nginx", "zycloud-rabbitmq"]
                    def all = images + baseImages;
                    def commands = "";
                    all.each {
                        commands = commands + "zycloud/" + "${it}:${version} " 
                    }
                    echo "package images"
                    sh "docker save ${commands} > ${zycloud_path}/zycloud.tar"
                }
            }
        }
        stage('install') {
            steps {
                echo "install mysql"
                sh "docker run -d --name zycloud-mysql --net=host -v zycloud-mysql:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --restart=always zycloud/zycloud-mysql:${version}"
                sh "while ! nc -z ${ip} 3306 </dev/null >/dev/null; do sleep 5; done"
                sh "mysql -uroot -p${MYSQL_ROOT_PASSWORD} -h${ip} -e 'source /var/lib/jenkins/workspace/build/zycloud.sql'"
                echo "install zycloud-rabbitmq"
                sh "docker run -d --name zycloud-rabbitmq --net=host -v zycloud-rabbitmq:/var/lib/rabbitmq -v /etc/localtime:/etc/localtime:ro --restart=always zycloud/zycloud-rabbitmq:${version}"
                echo "install zycloud-redis"
                sh "docker run -d --name zycloud-redis --net=host -v zycloud-redis:/var/lib/redis -v /etc/localtime:/etc/localtime:ro --restart=always zycloud/zycloud-redis:${version}"
                echo "install zycloud-center"
                sh "docker run -d --name zycloud-center --net=host -v /zycloud/:/zycloud -v /etc/localtime:/etc/localtime:ro -e MYSQL_HOST=${ip} -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --restart=always zycloud/zycloud-center:${version}"
                echo "install zycloud-auth"
                sh "docker run -d --name zycloud-auth --net=host -v /zycloud/:/zycloud -v /etc/localtime:/etc/localtime:ro -e MYSQL_HOST=${ip} -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --restart=always zycloud/zycloud-auth:${version}"
                sh "sleep 10"
                echo "install zycloud-admin"
                sh "docker run -d --name zycloud-admin --net=host -v /zycloud/:/zycloud -v icon:/opt/zycloud/ui/app-icon -v /etc/localtime:/etc/localtime:ro -e MYSQL_HOST=${ip} -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --restart=always zycloud/zycloud-admin:${version}"
                echo "install zycloud-gate"
                sh "docker run -d --name zycloud-gate --net=host -v /zycloud/:/zycloud -v /etc/localtime:/etc/localtime:ro -e MYSQL_HOST=${ip} -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --restart=always zycloud/zycloud-gate:${version}"
                echo "install zycloud-license"
                sh "docker run -d --name zycloud-license --net=host --privileged=true -v /zycloud/:/zycloud -v /etc/localtime:/etc/localtime:ro -v /dev/mem:/dev/mem -v license:/config/zyc -e MYSQL_HOST=${ip} -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --restart=always zycloud/zycloud-license:${version}"
                echo "install zycloud-desktop"
                sh "docker run -d --name zycloud-desktop --net=host -v icon:/usr/local/zycloud-desktop/static/tinymce/icon -v /etc/localtime:/etc/localtime:ro -e ZYCLOUD_IP=${ip} --restart=always zycloud/zycloud-desktop:${version}"
                echo "install zycloud-client"
                sh "docker run -d --name zycloud-client --net=host -v icon:/usr/local/zycloud-client/resources/icon -v /etc/localtime:/etc/localtime:ro --restart=always zycloud/zycloud-client:${version}"
            }
        }
    }
}
相關文章
相關標籤/搜索