接着上一篇继续:
操作步骤
安装gitlab plugin
插件中心搜索并安装gitlab,直接安装即可。
系统管理,配置Gitlab
获取AccessToken
登录gitlab,选择user->profile->access tokens新建一个访问token。
获取Secret Token
新建job->构建触发器选择 Build when a change is pushed to GitLab->生成一个Secret token
gitlab配置webhook
进入项目下settings->webhooks->url(是jenkins端job的url)->Secret Token 填入在Jenkins端生成的token->Add webhook->test push envent成功说明通过。
至此,gitlab与jenkins关联成功。gitlab端提交代码会触发webhook,然后触发jenkins构建打包。
编写项目的jenkins文件
pipeline {
agent { label '10.248.190.3'} ##指定运行job的jenkins节点
options {
gitLabConnection('gitlab')
}
stages {
stage('printenv') {
steps {
echo 'Hello World'
sh 'printenv'
}
}
stage('check') { #gitlab的代码拉取
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '750073ef-4545-451e-865d-4d13a7f0682b', url:
'http://10.248.190.7/root/pipline-brog.git']]])
}
}
stage('build-image') { #构建docker镜像
steps {
sh 'docker build . -t myblog:latest'
}
}
stage('deploy') { #部署项目到k8s集群
steps{
sh "sed -i 's#{{IMAGE_URL}}#myblog:latest#g' deploy/*"
timeout(time: 1, unit: 'MINUTES') {
sh "kubectl apply -f deploy/"
}
}
}
}
post { #把运行结果发出
success {
echo 'Congratulations!'
sh """
curl 'https://oapi.dingtalk.com/robot/send?access_token=9e481a9918fb0fe6bd86911f4dfc94bbda5b21d80bb63371c83f79dd1636d484' -H 'Content-Type: application/json' -d '{"msgtype": "text","text": {"content": "构建成功\n 关键字:DevOps\n 项目分支:${GIT_BRANCH}\n 项目名称: ${JOB_BASE_NAME}\n Commit Id: ${GIT_COMMIT}\n 构建地址:${RUN_DISPLAY_URL}"}}' """
}
failure {
echo 'Oh no!'
sh """
curl 'https://oapi.dingtalk.com/robot/send?access_token=9e481a9918fb0fe6bd86911f4dfc94bbda5b21d80bb63371c83f79dd1636d484' -H 'Content-Type: application/json' -d '{"msgtype": "text","text": {"content": "构建失败\n 关键字:DevOps\n 项目名称: ${JOB_BASE_NAME}\n Commit Id: ${GIT_COMMIT}\n 构建地址:${RUN_DISPLAY_URL}"}}'
"""
}
}
}
钉钉推送
官方文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
调用钉钉相关api接口:
配置机器人
调用接口发消息:
$ curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text", "text": {
"content": "欢迎到DevOps"
}
}'
gitlab提交代码
触发jenkins job自动构建
打开blue ocean可以查看job过程中每个具体步骤
最后将构建结果发送至钉钉群
整个DevOps流水线就可以拉通,但是整个架构中还是有一些可以优化的点,之后的博客将会基于该架构做优化,欢迎大家关注我的博客。