Day05-02-Jenkins-pipeline
- 1. Jenkins-Pipeline概述
- 1) pipeline?
- 2. pipeline格式
- 3. 小试牛刀
- 4. Java上线的项目
- 4.1 流程汇总
- 4.2 根据流程书写pipeline架构
- 4.3 分步实现
- 1)拉取代码
- 2)检查,编译,部署
- 4.4 完整pipeline代码
- 5. 根据tag标签拉取代码(了解自己扩展即可)
- 6. 总结
1. Jenkins-Pipeline概述
- ansible-ad-hoc命令行版本ansible模块。
- ansible-playbook剧本。
1) pipeline?
-
pipeline-流水线
-
通过jenkins的工作框架,通过"代码的方式",将多个任务联合起来.
-
流水线
- 模块化
- 方便检查
- 排错
- 整体运行清晰
2. pipeline格式
三大核心:
-
agent:类似于ansible hosts 指定在哪些机器运行pipeline
-
stages:与stage 类似于 ansible tasks
-
steps:具体的指令 类似于ansible中调用各种模块
3. 小试牛刀
pipeline {
agent any
environment {
host="oldboylinux.com"
}
stages {
stage('1.Open') {
steps {
echo "open eyes $host"
}
}
stage('2.CloseAlarm') {
steps {
echo "close alarm $host"
}
}
stage('3.Go_to_sleep') {
steps {
echo "go-to-sleep $host"
}
}
}
}
4. Java上线的项目
4.1 流程汇总
-
Jenkins拉取Gitlab代码,获取tag标签
-
Jenkins调用Sonarqube/sonar scan 代码质量分析
-
略: Jenkins调用发送脚本,发送代码质量检查结果
-
Jenkins调用Maven进行构建
-
Jenkins调用部署脚本
- 摘下web服务器
- 分发代码,解压代码,软连接…重启服务
- 负载均衡接入web服务器
-
略:Jenkins通过脚本,发送上线结果
4.2 根据流程书写pipeline架构
pipeline {
agent any
stages {
stage('git_pull') {
// 拉取代码
steps {
echo "open eyes $host"
}
}
stage('sonar') {
// sonarqube 代码质量检查
steps {
echo "close alarm $host"
}
}
stage('sonar_result_tongzhi') {
// 代码质量检查结果发送
steps {
echo
}
}
stage('maven_build') {
// java代码编译
steps {
echo
}
}
stage('war_deploy') {
// war包分发,部署
steps {
echo
}
}
stage('deploy_result') {
// war部署 结果
steps {
echo
}
}
}
}
4.3 分步实现
1)拉取代码
stage('1.git_pull') {
// 拉取代码
steps {
git branch: '${git_tag}',credentialsId: '1b05ca78-742d-4826-9c27-bd97abe58153', url: 'git@gitlab.oldboylinux.cn:dev/java_simple.git'
}
}
2)检查,编译,部署
stage('2.sonar') {
// sonarqube 代码质量检查
steps {
sh '''/app/tools/maven/bin/mvn clean verify sonar:sonar \\
-Dsonar.projectName=${JOB_NAME} \\
-Dsonar.projectKey=${JOB_NAME} \\
-Dsonar.host.url=http://sonar.oldboylinux.cn:9000 \\
-Dsonar.login=0fad8e180d138aac0ec793f5bf327d6ba233e82a '''
}
}
stage('3.sonar_result_tongzhi') {
// 代码质量检查结果发送
steps {
echo "没配置"
}
}
stage('4.maven_build') {
// java代码编译
steps {
sh ''' /app/tools/maven/bin/mvnclean package -DskipTests '''
}
}
stage('4.5 .确认是否部署') {
steps {
input '是否继续进行部署'
}
}
4.4 完整pipeline代码
pipeline {
agent any
stages {
stage('1.git_pull') {
// 拉取代码
steps {
git branch: 'master', credentialsId: '1b05ca78-742d-4826-9c27-bd97abe58153', url: 'git@gitlab.oldboylinux.cn:dev/java_simple.git'
}
}
stage('2.sonar') {
// sonarqube 代码质量检查
steps {
sh '''/app/tools/maven/bin/mvn clean verify sonar:sonar \\
-Dsonar.projectName=${JOB_NAME} \\
-Dsonar.projectKey=${JOB_NAME} \\
-Dsonar.host.url=http://sonar.oldboylinux.cn:9000 \\
-Dsonar.login=0fad8e180d138aac0ec793f5bf327d6ba233e82a '''
}
}
stage('3.sonar_result_tongzhi') {
// 代码质量检查结果发送
steps {
echo "没配置"
}
}
stage('4.maven_build') {
// java代码编译
steps {
sh ''' /app/tools/maven/bin/mvnclean package -DskipTests '''
}
}
stage('4.5.确认是否部署') {
steps {
input '是否继续进行部署'
}
}
stage('5.war_deploy') {
// war包分发,部署
steps {
//sh ''' sh -x /server/scripts/java_deploy_cd.sh '''
echo "deploy"
}
}
stage('6.deploy_result') {
// war部署 结果
steps {
echo "部署结果"
}
}
}
}
5. 根据tag标签拉取代码(了解自己扩展即可)
- 参数化构建
parameters | |
---|---|
gitParameter git参数化构建 | name变量名字 tag_name变量 |
type变量类型 PT_TAG获取tag标签,PT_BRANCH分支名字 | |
defaultValue变量的默认值 | |
useRepository指定的源。 | |
如何调用这个变量 | ${tag_name} ❌ ${params.tag_name} |
Git Parameter | Jenkins plugin:https://plugins.jenkins.io/git-parameter/
pipeline {
agent any
parameters {
gitParameter name: 'tag_name',
type: 'PT_TAG',
defaultValue: 'master',
useRepository: "git@gitlab.oldboylinux.cn:dev/java_simple.git"
}
stages {
stage('Hello') {
steps {
git branch: "${params.tag_name}",url: 'git@gitlab.oldboylinux.cn:dev/java_simple.git'
}
}
}
}
- 需要先跑1次。
- 然后刷新
6. 总结
-
devops ,ci/cd
-
git基本使用,下载,提交,标签,回滚,分支及分支合并
-
远程仓库使用:
- 码云/github 创建仓库,配置密钥
- gitlab: 创建仓库,配置密钥,用户,项目授权.
-
Jenkins
- 实现测试环境自动部署
- 生产环境手动部署
- 回滚
-
maven 打包工具/编译工具
-
代码检测工具Sonarqube…
-
pipeline
-
发送通知-钉钉
-
项目:通过Pipeline实现()
- 软件版本:
- gitlab gitlab-ce-12.10.14
- jenkins-2.289
- sonarqube 7.7 (mysql)
- 实现测试环境自动部署
- 生产环境手动部署
- 回滚
- 软件版本: