Mac环境下Jenkins学习笔记-Docker部署+角色分配+pipline构建+发送邮件

前言

最近抽空又把jenkins给学了一下,这次使用docker部署,内容涉及到部署,插件安装,角色权限分配,以及使用pipline构建,参数化,最后是发送邮件通知。

docker部署安装

1. 因为涉及到使用docker部署,所以我直接上docker hub去搜索到相应的镜像和安装命令,很简单直接看命令吧
docker run -itd -p 8081:8080 -p 50001:50000 -v /Users/shenhaodong/jenkins_home:/var/jenkins_home  
-e TZ='Asia/Shanghai' jenkins/jenkins:lts
# -p 是映射端口号
# -v 是挂载到本地
# -e 是修改jenkins时间

通过docker ps 可以看到已经在本地启动成功,而且在本地jenkins_home下可以看到挂载的文件


image.png

image.png
2. 访问 http:127.0.0.1:8081
image.png
3. 因为之前已经把jenkins挂载到本地可以直接在本地的jenkins_home里找到密码
image.png

输入密码后,可以看到如下图


image.png

建议直接选择第二项,自己选择插件来安装


image.png
4. 创建管理用户,保存完成即可
image.png

权限与角色

因为jenkins本身提供的不足以满足我们对与权限的需求,所以还是需要安装插件来实现。另外jenkins本身是英文,对于国人来说还是中文更舒适,因此这个也需要安装插件

1. 插件目录

Manage Jenkins ->Manage Plugins -> Availble

2. 安装中文插件
image.png
3. 安装角色插件
image.png
4. 安装后重启

http://127.0.0.1:8081/restart/
选择是,就可以重启

image.png

重启成功后,可以看到界面变成来中文
image.png

5. 更改jenkins默认授权测试为Role-Based Strategy

系统管理-> 全局安全配置


image.png
6. 新建角色

在系统管理选择Manage and Assign Role


image.png

新建角色


image.png

新建一个全局角色,base_role:给他赋可读权限;
新建两个子角色(项目的权限),A组和B组,A组成员可以看到test开头的项目,B组成员可以看到product开头的项目;
image.png
7. 新建两个用户,并且分别给它分配A组和B组权限

新增用户-test 和prodcut用户


image.png

image.png

分配权限- test和prodcut分配全局权限,test分配A组,prodcut分配B组


image.png

image.png
8. 测试
1. 分别新建两个项目,test开头和prodcut开头的项目

可以看到root用户可以看到两个项目


image.png
2. 登录test用户,查看项目
image.png
3. 登录product用户,查看项目
image.png

Credentials Binding Plugin(用户授权和凭证)

因为在生产中,jenkins经常需要和外部的一些系统打交道,常见的场景是需要从gitlab中拉取代码、构建、部署,所以需要配置一下凭证才可以完成。
Jenkins 提供多种类型的凭证,常用的就两种,
1.用户和密码
2. 通过SSH private key的方式
下面就演示一下第一种方式

1. 添加凭证

image.png

image.png

2. 使用该账号从git拉下代码测试一下

1.测试前需要安装gitlab的插件

image.png

2. 新建一个自由风格的项目,配置gitlab的url,拉取项目
image.png

可以看到,构建成功

image.png

Pipline构建

Jenkins原生只提供自由风格的构建,但是在实际生产中更多的使用的是Pipline的构建。

1. 安装插件
image.png
2. 新建Pipeline风格的项目
image.png
3. 写一个pipeline的脚本测试一下

小技巧:pipeline语法生成器
因为pipeline 是一种脚本语言,如果我们只是使用的话不需要掌握太深,只要会用就行。jenkins也为我们提供了大量的事例以及语法生成器,具体可以参考如下:

image.png

image.png

image.png

可以选择界面的方式,也可以选择在把把脚本写入Jenkinsfile放在项目根目录

pipeline {
    agent any

    stages {
        stage('git pull') {
            steps {
                echo 'git pull'
            }
        }
        stage('build ') {
            steps {
                echo 'build'
            }
        }
        stage('deploy ') {
            steps {
                echo 'deploy'
            }
        }
    }
}

方法一:

image.png

方法二
image.png

方法二配置.png

更详细.png
4. 开始构建- 可以看到构建的整个过程
image.png
5. 设置构建时的参数化
image.png
# 可以通过 ${branch} 的方式获取到build传递过来的参数

pipeline {
    agent any

    stages {
        stage('git pull') {
            steps {
                git branch: '${branch}', credentialsId: '33b48af2-4976-457b-b68c-74193358afcb', url: 'http://git.longhu.net/maas-qa/wucap_web.git'
            }

        }
        stage('build ') {
            steps {
                echo 'build1'
            }
        }
    }
    post {
        always {
             emailext (
                subject: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
                body: '${FILE,path="email.html"}',
                to: "[email protected]",
                from: "[email protected]"
            )
        }

    }
}

设置完的界面如下,可以直接选择分支构建即可

image.png

构建后发送邮件

1. 安装邮件相关的插件

因为jenkins自带的邮件通知不太完善,所以还是需要下载特定的邮件插件- Email Extension Template , 重启后生效

image.png

2. 配置jenkins 关于邮件相关的

首先:进入系统管理- 系统配置页面
在系统管理员邮件地址栏填写自己的邮箱地址

image.png

其次:Extended E-mail Notification 做如下配置
SMTP server: 就是你自己邮箱的smtp默认的服务器地址,因为我的是163邮箱所以默认是这个
SMTP Port:465 因为我下面开启了Use SSL,所以默认端口号就是465
Use SSL 期望勾上
Default user e-email suffix: 默认用户邮箱后缀
Default Content Type: 默认内容类型
Default Recipients: 默认接受者,通过逗号分开
Reply To List: 回复者列表
image.png

再而可以通过配置 “邮件通知” 来测试一下

可以看到测试成功了

image.png

最后写入邮件模版并且把它放到项目跟目录,并且Jenkinsfile引入即可
email.html模板





${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志



    
以下为${PROJECT_NAME }项目构建信息

构建信息
  • 项目名称:${PROJECT_NAME}
  • 构建编号:第${BUILD_NUMBER}次构建
  • 触发原因:${CAUSE}
  • 构建状态:${BUILD_STATUS}
  • 构建日志:${BUILD_URL}console
  • 构建Url:${BUILD_URL}
  • 工作目录:${PROJECT_URL}ws
  • 项目Url:${PROJECT_URL}
  • SonarQube结果:http://sonar******
  • 代码覆盖率结果:http://**/job/${PROJECT_NAME}/${BUILD_NUMBER}/jacoco/
历史变更记录:
${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:
%c
",showPaths=true,changesFormat="
[%a]
%m
",pathFormat=" %p"}

Jenkinsfile文件

pipeline {
    agent any

    stages {
        stage('git pull') {
            steps {
                git branch: 'test1', credentialsId: '122dbcaf-e271-4357-a89a-2be183b12b3c', url: 'http://git.longhu.net/maas-qa/wucap_web.git'
            }

        }
        stage('build ') {
            steps {
                echo 'build1'
            }
        }
        stage('deploy ') {
            steps {
                echo 'deploy'
            }
        }
    }
    post {
        always {
             emailext (
                subject: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
                body: '${FILE,path="email.html"}',
                to: "[email protected]",
                from: "[email protected]"
            )
        }

    }
}

所有一切准备好后,代码提交就可以通过构建看到效果


image.png

over

你可能感兴趣的:(Mac环境下Jenkins学习笔记-Docker部署+角色分配+pipline构建+发送邮件)