jenkins Pipeline脚本内容

目录

1、jenkins启动方式

2、配置部署应用样例

2.1、k8s部署应用样例

2.2、ssh部署应用样例


1、jenkins启动方式

docker run -d --name jenkins -p 80:8080 -p 50000:50000 -u root --restart always -e MAVEN_HOME=/usr/local/maven -e JAVA_HOME=/usr/local/jdk -e NODE_HOME=/usr/local/nodejs -e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/jdk/bin:/usr/local/maven/bin:/usr/local/nodejs/bin   -v /data/jenkins_home:/var/jenkins_home    -v /var/run/docker.sock:/var/run/docker.sock      -v /usr/bin/docker:/usr/bin/docker    -v /usr/bin/kubectl:/usr/bin/kubectl    -v /root/.kube:/root/.kube    -v /usr/local/maven:/usr/local/maven  -v /usr/local/nodejs:/usr/local/nodejs  -v /usr/local/jdk:/usr/local/jdk    -v /etc/localtime:/etc/localtime jenkins/jenkins:lts

2、配置部署应用样例

2.1、k8s部署应用样例

2.1.1、配置连接k8s的配置文件

2.1.2、脚本样例 

pipeline{
    agent any
    
    environment {
        APP_ENV = "test"
        SERVICE = "gateway-encryption"
        GIT_BRANCH = "test"
        GIT_URL = "https://gitlab.51idc.com/smartops/education/${SERVICE}.git"
        GIT_CREDENTIALS_ID = "zhangjinhai-gitlab"
        DOCKERHUB_BASE = "reg.anchnet.com"
        DOCKERHUB_CREDENTIALS_ID = "nwy_harbor"
        DOCKER_IMAGE = "${DOCKERHUB_BASE}/smartops_nw/${SERVICE}:${APP_ENV}-1.0.$BUILD_NUMBER"
        KUBECONFIG_CREDENTIALS_ID = "k8s_config"
    }
    
    stages{
        stage('git clone') {
            steps {
                git branch: GIT_BRANCH, credentialsId: GIT_CREDENTIALS_ID, url: GIT_URL
            }
        }
        stage('gradlew') {
            steps {
                sh './gradlew clean build -x test'
            }
        }
        stage("docker build"){
            steps{
                sh "docker build -t ${DOCKER_IMAGE} ."
            }
        }
        stage("docker push"){
            steps{
                withCredentials([usernamePassword(credentialsId: "${DOCKERHUB_CREDENTIALS_ID}", usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_PASS')]) {
                    sh "echo ${REGISTRY_PASS} | docker login -u ${REGISTRY_USER} --password-stdin ${DOCKERHUB_BASE}"
                    sh "docker push ${DOCKER_IMAGE}"
                    sh "docker rmi ${DOCKER_IMAGE}"
                }
            }
        }
        stage("kubectl deploy"){
            steps{
                withCredentials([file(credentialsId: KUBECONFIG_CREDENTIALS_ID, variable: 'KUBECONFIG')]) {
                    sh "kubectl --kubeconfig=${KUBECONFIG} get deploy/smartops-${SERVICE} -o custom-columns=NAME:.spec.template.spec.containers[0].image"
                    sh "kubectl --kubeconfig=${KUBECONFIG} set image deploy/smartops-${SERVICE} ${SERVICE}=${DOCKER_IMAGE}"
                }
            }
        }
    }
}

2.2、ssh部署应用样例

pipeline{
    agent any
    
    environment {
        SERVICE = "cms"
        GIT_BRANCH = "test"
        GIT_URL = "http://e.devops.anchnet.com/cloud/nwyyy/nwy-${SERVICE}.git"
        GIT_CREDENTIALS_ID = "4238bcb4-690e-4963-80ef-b1ab7e7798f5"
        SSH_HOST = "192.168.66.8"
        SSH_CREDENTIALS_ID = "192.168.66.8_ssh"
        BUILD_FILE = "${WORKSPACE}/${SERVICE}/target/${SERVICE}-1.0.1.jar"
        REMOTE_DIR = "/root"
        REMOTE_EXEC = "sh /root/startNwy.sh ${SERVICE} restart"
    }
    
    stages{
        stage('git clone') {
            steps {
                git branch: GIT_BRANCH, credentialsId: GIT_CREDENTIALS_ID, url: GIT_URL
            }
        }
        stage('maven') {
            steps {
                sh 'mvn clean install -U package -Dmaven.test.skip=true -B -U -e --s settings.xml'
            }
        }
        stage("remote deploy"){
            steps{
                script{
                  //调用上面定义好的方法
                  rserver = GetRemoteServer(SSH_HOST, SSH_CREDENTIALS_ID)
                  sshPut remote: rserver, from: BUILD_FILE, into: REMOTE_DIR
                  sshCommand remote: rserver, command: REMOTE_EXEC
                }
            }
        }
    }
}

def GetRemoteServer(ip, cid){
    def remote = [:]
    remote.name = ip
    remote.host = ip
    remote.port = 22
    remote.allowAnyHosts = true
    //通过withCredentials调用Jenkins凭据中已保存的凭据,credentialsId需要填写,其他保持默认即可
    withCredentials([usernamePassword(credentialsId: cid, passwordVariable: 'password', usernameVariable: 'userName')]) {
        remote.user = "${userName}"
        remote.password = "${password}"
    }
    return remote
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值