coding+jenkins+k8s 实现 devops
devops流程git-push(开发分支) ---->coding----->jenkins----->ci/cd(测试环境)-----邮件通知---->提交merge 请求(合入master分支)----->人工评审------>ci/cd(生产环境)------>邮件通知工具配置实现原理是通过coding 上webhook 关联到jenkins 服务
·
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])
}
}
}
更多推荐
已为社区贡献7条内容
所有评论(0)