写点什么

极客时间运维进阶训练营第四周作业

作者:好吃不贵
  • 2022-11-16
    浙江
  • 本文字数:2764 字

    阅读完需:约 9 分钟

1.部署 jenkins master 及多 slave 环境

在部署 jenkins 的环境,包括 master 和 slave 的环境,安装 openjdk 的 11 版。

mkdir -p /var/lib/jenkins

apt install openjdk-11-jdk

在 master 上:

安装 locale 的插件,还有 locale Chinese 插件。

安装 Blue Ocean 插件。

打开邮件发送功能

系统管理员邮件地址也需要配置为相同的地址,同时 email 插件要安装正确。

系统管理-"configure system"-邮件通知。

点击下方的测试邮件,可以看邮件是否可以正确发出。

部署 slave 环境

流程是:系统管理-节点管理-新建节点。


之后就可以连上了。


显示响应时间,表示脸上了,可以正常工作了。

分配任务到 slave

配置尽可能调度到某个 slave,就会自动把 task 转过去了。

或者在 pipeline 指定。

2.基于 jenkins 视图对 jenkins job 进行分类

我的视图里,可以看到所有的 job。


列表视图可以新增,选择正则表达式在视图中显示任务比较好,增加的任务会自动显示在这里。

增加列表视图后,在主界面就可以看到了。

可以看到上次成功距离现在的时间,以及上次执行了多长时间。

3.总结 jenkins pipline 基本语法

pipeline 主要有 3 类语法,pipeline 在最外层,里面是 stages 和 steps。

其它还有 environment 等,可以配置全局变量,或者 stages 里的局部变量,只在 stage 里生效。

Post 的条件语法:

always

无论流水线或阶段的完成状态如何,都允许在 post 部分运行该步骤。

changed

只有当前流水线或阶段的完成状态与它之前的运行不同时,才允许在 post 部分运行该步骤。

failure

只有当前流水线或阶段的完成状态为"failure",才允许在 post 部分运行该步骤, 通常 web UI 是红色。

success

只有当前流水线或阶段的完成状态为"success",才允许在 post 部分运行该步骤, 通常 web UI 是蓝色或绿色。

unstable

只有当前流水线或阶段的完成状态为"unstable",才允许在 post 部分运行该步骤, 通常由于测试失败,代码违规等造成。通常 web UI 是黄色。

aborted

只有当前流水线或阶段的完成状态为"aborted",才允许在 post 部分运行该步骤, 通常由于流水线被手动的 aborted。通常 web UI 是灰色。

4.部署代码质量检测服务 sonarqube

sonar 依赖于 postgreSQL,所以要装 sonar 前,需要先安装 postgreSQL 才行。

postgreSQL 安装和启动

安装

apt update

apt-cache madison postgresql

apt install postgresql

启动

用的是版本 12,所以 start 后的数字是 12。

pg_createcluster --start 12 mycluster

配置

vim /etc/postgresql/12/mycluster/pg_hba.conf

#IPv4 local connections:

host all all 0.0.0.0/0 scram-sha-256

地址从 127.0.0.1 改为全 0。

vim /etc/postgresql/12/mycluster/postgresql.conf

listen_addresses = '' #defaults to 'localhost'; use '*' for all

把监听地址从 localhost 改为*,表示监听所有地址。

确认监听 5432 端口

试运行 postgreSQL

postgreSQL 不支持 root 用户,所以需要用 su - $USER 切换到 postgres 用户。

root@ecs-337800:~# su - postgres

postgres@ecs-337800:~$ psql -U postgres

psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))

Type "help" for help.

postgres=# CREATE DATABASE sonar

postgres-# CREATE USER sonar WITH ENCRYPTED PASSWORD '123456'

postgres-# GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar

postgres-# ALTER DATABASE sonar OWNER TO sonar

postgres-# \q

postgres@ecs-337800:~$ exit

logout

sonarqube

安装

二进制安装

可以在这里下载:https://www.sonarqube.org/downloads/

系统 snap 安装

ubuntu 也可以通过snap install sonarqube来安装。

Jenkins 插件安装

插件管理 - 搜索 sonarqube 即可。

配置

vi /etc/sysctl.conf

vm.max_map_count=26244

fs.file-max=65536

启动 sonar

mkdir /apps && cd /apps/

unzip sonarqube-9.7.1.62043.zip

ln -sv /apps/sonarqube-9.7.1.62043 /apps/sonarqube

useradd -r -m -s /bin/bash sonarqube && chown sonarqube.sonarqube /apps/ -R && su - sonarqube

vim /apps/sonarqube/conf/sonar.properties

sonar.jdbc.username=sonar

sonar.jdbc.password=123456

sonar.jdbc.url=jdbc:postgresql://125.124.238.46/sonar

/apps/sonarqube/bin/linux-x86-64/sonar.sh start

看是否启动

tail /apps/sonarqube/logs/*.log

http 登录 sonar 服务器

可配置 systemd 启动 sonar。

Administration-Marketplace 选择 Plugins,安装 chinese 插件,装好之后,需要重启。

关闭强制用户认证。

Sonar 可以配置通过 systemd 的 service 自动启动。

[Unit]

Description=SonarQube service

After=syslog.target network.target

[Service]

Type=simple

User=sonarqube

Group=sonarqube

PermissionsStartOnly=true

ExecStart=/bin/nohup /usr/bin/java -Xms1024m -Xmx1024m -Djava.net.preferIPv4Stack=true -jar /apps/sonarqube/lib/sonar-application-9.7.1.62043.jar

StandardOutput=syslog

LimitNOFILE=131072

LimitNPROC=8192

TimeoutStartSec=5

Restart=always

SuccessExitStatus=143

[Install]

WantedBy=multi-user.target

使能开机启动:

systemctl enable sonarqube.service

5.基于命令、shell 脚本和 pipline 实现代码质量检测

基于命令的扫描

https://binaries.sonarsource.com/

扫描命令是:/apps/sonar-scanner/bin/sonar-scanner -Dsonar.projectKey=magedu -Dsonar.projectName=magedu-python-app1 -Dsonar.projectVersion=1.0 -Dsonar.sources=./src -Dsonar.language=py -Dsonar.sourceEncoding=UTF-8


扫描结束会打印出信息。

基于 shell

把命令放到 jenkins 的 shell 里,执行 job 即可。

基于 pipeline

pipeline {

agent any

parameters {

string(name: 'BRANCH', defaultValue: 'develop', description: '分支选择')

choice(name: 'DEPLOY_ENV', choices: ['develop', 'production'], description: '部署环境选择')

}

stages {

stage('变量测试1') {

steps {

sh "echo $env.WORKSPACE"

sh "echo $env.JOB_URL"

sh "echo $env.NODE_NAME"

sh "echo $env.NODE_LABELS"

sh "echo $env.JENKINS_URL"

sh "echo $env.JENKINS_HOME"

}

}

stage('python源代码质量扫描') {

steps {

sh "cd $env.WORKSPACE && /apps/sonar-scanner/bin/sonar-scanner -Dsonar.projectKey=magedu -Dsonar.projectName=magedupython-

app1 -Dsonar.projectVersion=1.0 -Dsonar.sources=./src -Dsonar.language=py -Dsonar.sourceEncoding=UTF-8"

}

}

}

}

6.扩展:jenkins 安装 Sonarqube Scanner 插件、配置 sonarqube server 地址、基于 jenkins 配置代码扫描参数实现代码质量扫描 Execute SonarQube Scanner

可以下载 sonar 的 binary,然后解压到 jenkins 插件目录,实现代码检测。或者通过 jenkins 的插件来安装。


用户头像

好吃不贵

关注

还未添加个人签名 2018-11-20 加入

还未添加个人简介

评论

发布
暂无评论
极客时间运维进阶训练营第四周作业_好吃不贵_InfoQ写作社区