devops流程

git-push(开发分支) ---->coding----->jenkins----->ci/cd(测试环境)-----邮件通知---->提交merge 请求(合入master分支)----->人工评审------>ci/cd(生产环境)------>邮件通知

工具配置

实现原理是通过coding 上webhook 关联到jenkins 服务器上的Generic Webhook Trigger 插件实现代码提交自动出发 ci/cd 
(本来想用coding 自己开发的[jenkins coding webhook](http://updates.jenkins-ci.org/download/plugins/coding-webhook/) 插件发现它太简陋在jenkins 上无法提取git 相关的一些变量)

git

1.安装
yum install  git
2.配置
mkdir -p code 
cd  code
git  init
git remote add origin https://e.coding.net/xxx/xxx.git
具体代码库地址如下:

在这里插入图片描述

3.代码操作
  下载:git clone https://e.coding.net/xxx/xxx/kanqtest.git
  创建分支: git branch  test
  切换到指定分支: git checkout test
  添加: git add xxxx
  commit 到本地:git commit -sm "xxxxx(注释)"
  提交远程分支:git push origin test2

jenkins webhook

1.安装 Generic Webhook Trigger 插件
 无法科学上网 直接使用手动上传安装包的方式安装
 a. 下载插件

jenkins 第三方插件下载地址
b.安装
在这里插入图片描述

2.配置

在这里插入图片描述

   简单的只用勾选这个插件,然后配置下Post content parameters 这个就行,Variable 为你发送的body 变量 Expression 为jenkins 上的变量名
  这里需要保证       Expression 的字符串一定只比 Variable 中填的多”$.“

coding webhook

 配置webhook 用于自动出发jenkins 任务  
 1.打开项目找到项目配置

在这里插入图片描述

 2.创建webhook

在这里插入图片描述

 3.设置webhook

在这里插入图片描述
在这里插入图片描述

  注:这里由于我们将jenkinss 搭在了内网的环境下。但是coding 是从公网访问我们的jenkins 所以需要用vpn 做下 网络转换(这里寻求了公司网络管理员帮助)将jenkins 的地址添加到服务的url 上,账号密码为你登录jenkins 的账号密码
   测试下看是否正常 如果正常就可以配置 具体的jenkins 任务了。

jenkin smtp 邮箱

 1.设置qq邮箱,用用来做公共账号的qq号登录qq邮箱web,然后打开smtp服务。  

在这里插入图片描述

   注:生成的授权码保存下来后面配置jenkins 需要
   2.设置jenkins 

在这里插入图片描述
在这里插入图片描述

   密码就是上面得到的授权码

jenkins 具体任务(jenkinsfile pipline)

 def webHookData = readJSON text: "${head_commit}"
 String commitID= webHookData["id"][0..7]
String url=webHookData.url
realJenkinsUrl=BUILD_URL.replaceAll("jenkins.devops.kubesphere.local:30180","x.x.x.x:15401")
pipeline {
agent {
node {
  label 'maven'
}
}
stages {
stage('docker login') {
  steps {
    container('maven') {
      sh 'echo $DOCKERHUB_CREDENTIAL_PSW'
      sh "env"
      sh 'exit 0'
    }

  }
}
/*
stage('build & push') {
  agent none
  steps {
    container('maven') {
      git(url: 'https://e.coding.net/x/x/x.git', credentialsId: 'cxz', changelog: true, poll: false)
      sh 'pwd'
      sh 'ls'
      sh 'docker build -t $REGISTRY/$APP_NAME .'
      sh 'docker push $REGISTRY/$APP_NAME'
    }

  }
}

stage('deploy app') {
  agent none
  steps {
    container('maven') {
      sh 'pwd'
      sh 'ls'
      sh 'echo $PROJECT_NAME'
      kubernetesDeploy(configs: 'manifest/deploy.yaml', kubeconfigId: 'kubeconfig2', dockerCredentials: [], enableConfigSubstitution: false, deleteResource: false)
    }

  }
}
*/
 }
 environment {
REGISTRY = 'kanq.test'
DOCKERHUB_USERNAME = ''
APP_NAME = 'devops-go-sample'
KUBECONFIG_CREDENTIAL_ID = 'go'
PROJECT_NAME = 'test-dev'
}
post{
  always{
     // println("$.head_commit.id")
      //sh "echo $after"
      //sh "echo ${head_commit['id']}"
      
      sh "echo $commitID"
      sh "echo $url"
    //  sh "echo $head_commit['id']"
     // sh "echo  ${head_commit['id']}"
      addShortText background: 'white', borderColor: 'white', color: 'DodgerBlue', link: "$url", text: "$commitID"
      mail bcc: '', body: """
      代码coding 地址:'${head_commit_url}'
      jenkins 地址: '${realJenkinsUrl}'
      """, cc: '', from: '2833732855@qq.com', replyTo: '', subject: "kanq devops success!!!!", to: "$head_commit_author_name"
      //addBadge icon: '/images/16x16/yellow.gif', id: '', link: 'https://kanqtest.coding.net/p/x/d/xt/git/commit/95b5f46d7b5c438fcdc78ec2dc08033602fc55ca', text: '11111'
      //script{manager.addShortText("aaaaa")}
     // manager.addShortText(manager.envVars['GIT_COMMIT'][0..7])
  }
  }
  }
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐