lrcoop 2020-04-20
主机名 | 外网IP | 内网IP | 内存/磁盘 |
---|---|---|---|
gitlab | 10.0.1.200 | 172.16.1.200 | 1C2G/20G |
jenkins | 10.0.1.201 | 172.16.1.201 | 1C1G/20G |
nexus | 10.0.1.202 | 172.16.1.202 | 1C2G/20G |
sonar | 10.0.1.203 | 172.16.1.203 | 1C4G/20G |
web | 10.0.1.7 | 172.16.1.7 | 1C1G/20G |
https://www.pingface.com/archives/git
https://www.pingface.com/archives/gitlab
https://www.pingface.com/archives/gitlabusage
# 安装 jdk $ rpm -ivh jdk-8u181-linux-x64.rpm # 安装 jenkins $ rpm -ivh jenkins-2.176.1-1.1.noarch.rpm 这里的 jenkins 也可从清华镜像源下载指定版本:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/。
/usr/lib/jenkins/:jenkins 安装目录,war 包也在这里; /etc/sysconfig/jenkins:jenkins 配置文件,端口、JENKINS_HOME 可在此处配置; /var/lib/jenkins/:默认的 JENKINS_HOME; /var/log/jenkins/jenkins.log:Jenkins 日志文件;
$ vim /etc/sysconfig/jenkins JENKINS_USER="root"
$ tar xf jenkins_plugins.tar.gz -C /var/lib/jenkins
$ systemctl start jenkins 启动完成后会监听 8080 端口。
编辑/var/lib/jenkins/hudson.model.UpdateCenter.xml 文件,将 https://updates.jenkins.io/update-center.json 修改为 https://mirrors.huaweicloud.com/jenkins/updates/update-center.json。 上面使用的是华为源,还有清华源地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json。
要求构建完成后,输出Jenkins的工作目录。
由于 jenkins 主机要通过 git 从 gitlab 拉取代码,所以要保证 jenkins 主机能正常免密从gitlab拉取到代码,需要安装好git,还需要将jenkins主机的ssh公钥添加到gitlab.
「https://gitee.com/kangjie1209/monitor」手动提交到 gitlab,或直接按如下操作将其导入 gitlab
这一步成功的前提是 jenkins 主机的公钥要配置到gitlab中,否则会因权限不足拉取不到gitlab中的代码
$ ll /var/lib/jenkins/workspace/My_FreeStyle_Job/|wc -l
$ cat /scripts/jenkins/deploy_monitor.sh #!/bin/bash # webserver_ip=‘10.0.1.7‘ code_dir="${WORK_SPACE}" web_code_dir="/code/monitor-${BUILD_ID}/" # 打包 jenkins 主机拉取到的代码 cd $code_dir tar zcf /tmp/monitor_code.tar.gz ./* # 拷贝打包后的代码包到 web 主机的站点目录 scp /tmp/monitor_code.tar.gz ${webserver_ip}:/tmp # 解压 web 主机中的代码包并创建软链接 ssh $webserver_ip "mkdir ${web_code_dir} -p && cd /tmp && tar xf monitor_code.tar.gz -C ${web_code_dir} && cd /code/ && rm -rf monitor && ln -s ${web_code_dir} monitor"
上述脚本中的 ${WORK_SPACE} 和 ${BUILD_ID} 是 jenkins 的内置参数: - ${WORK_SPACE} 是当前构建工程在 jenkins 主机中的工作目录,在上述示例中的值就是 /var/lib/jenkins/workspace/freestyle-prj; - ${BUILD_ID} 是构建历史的序列号; jenkins 中可使用的内置变量可通过 http://<jenkins 主机地址>/env-vars.html 查看。
$ mkdir /code/ $ cat /etc/nginx/conf.d/web.conf server { listen 80; location / { root /code/monitor/; } }
$ ll /code lrwxrwxrwx 1 root root 16 Apr 17 11:59 monitor -> /code/monitor-2/
此时如果通过git push代码到仓库时,jenkins就会自动构建并发布了。
# 修改代码,打个 V1.0 标签 ... $ git commit -am ‘v1.0‘ $ git tag -a v1.0 -m ‘v1.0 稳定版‘ $ git push -u origin v1.0 # 再次修改代码,打个 v2.0 标签 ... $ git commit -am ‘v2.0‘ $ git tag -a v2.0 -m ‘v2.0 稳定版‘ $ git push -u origin v2.0
$ cat /scripts/jenkins/deploy_monitor.sh #!/bin/bash # if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then echo "monitor-${BUILD_ID} 已部署,不允许重复构建" exit fi webserver_ip=‘10.0.1.7‘ code_dir="${WORKSPACE}" web_code_dir="/code/monitor-${BUILD_ID}/" # 打包 jenkins 主机拉取到的代码 cd $code_dir tar zcf /tmp/monitor_code.tar.gz ./* # 拷贝打包后的代码包到 web 主机的站点目录 scp /tmp/monitor_code.tar.gz ${webserver_ip}:/tmp # 解压 web 主机中的代码包并创建软链接 ssh $webserver_ip "mkdir ${web_code_dir} -p && cd /tmp && tar xf monitor_code.tar.gz -C ${web_code_dir} && cd /code/ && rm -rf monitor && ln -s ${web_code_dir} monitor"
此时如果重复构建相同的tag版本在jenkins控制台会输出不允许重复构建。
# 修改代码,打个 v3.0 4.0 5.0标签 ... $ git commit -am ‘v3.0‘ $ git tag -a v3.0 -m ‘v3.0 稳定版‘ $ git push -u origin v3.0 # 修改代码,打个 v4.0 标签 ... $ git commit -am ‘v4.0‘ $ git tag -a v4.0 -m ‘v4.0 稳定版‘ $ git push -u origin v4.0
$ cat /scripts/jenkins/deploy_monitor.sh #!/bin/bash # webserver_ip=‘10.0.1.7‘ code_dir="${WORKSPACE}" web_code_dir="/code/monitor-${git_version}/" deploy(){ # 打包 jenkins 主机拉取到的代码 cd $code_dir tar zcf /tmp/monitor_code.tar.gz ./* # 拷贝打包后的代码包到 web 主机的站点目录 scp /tmp/monitor_code.tar.gz ${webserver_ip}:/tmp # 解压 web 主机中的代码包并创建软链接 ssh $webserver_ip "mkdir ${web_code_dir} -p && cd /tmp && tar xf monitor_code.tar.gz -C ${web_code_dir} && cd /code/ && rm -rf monitor && ln -s ${web_code_dir} monitor" } if [ "$deploy_env" == "deploy" ];then if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then echo "monitor-${BUILD_ID} 已部署,不允许重复构建" exit fi deploy else ssh $webserver_ip "cd /code/ && rm -rf monitor && ln -s ${web_code_dir} monitor" fi
参考:https://www.pingface.com/archives/mysql57
- SonarQube基础java开发,需安装open JDK8版本
- SonarQube需要依赖MySQL数据库,至少5.6版本以上
- SonarQube的小型实例至少4G内存,如果大型实例需要16G内
# 安装好数据库之后需要创建sonar数据库 create database?sonar?DEFAULT?CHARACTER?SET?utf8;
下载地址:https://www.sonarqube.org/downloads/? $ unzip?sonarqube‐7.0.zip? $ mv?sonarqube‐7.0?/usr/local/? $ ln?‐s?/usr/local/sonarqube‐7.0/?/usr/local/sonarqube? $ useradd?sonar? $ chown?‐R?sonar.sonar?/usr/local/sonarqube‐7.0/?
vim?/usr/local/sonarqube/conf/sonar.properties sonar.jdbc.username=root? sonar.jdbc.password=lizhenya123 sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewrieBatchedStatements=true&useConfigs=maxPerformanc e&useSSL=false?
$ su?‐?sonar?‐c?"/usr/local/sonarqube/bin/linux‐x86‐64/sonar.sh?start" # 等几十秒后查看9000端口是否监听 $ netstat -lntup|grep java
启动后的端口为9000使用浏览器直接访问http://10.0.0.203:9000/about 用户名admin 密码admin 生成一个token,只显示一次,记录好. jenkins: 7559e4be476a7bc9b52f0682a097381f790b0f3e
1.安装中文汉化插件 在页面上找到administrator > Marketplace > 搜索框 chinese,出现一个 chinese pack 然后点击install,安装完点击 restart 重启生效 2.默认已安装C JAVA Python PHP JS 等代码质量分析工具,如果一个项目使用了JAVA CSS JS HTML,默认情况下sonar 只会检测JAVA,JS等代码的漏洞和bug,如果安装了HTML、CSS等插件,则会检测该项目代码中JAVA JS HTML CSS代码的漏洞和bug
2.手动安装插件 $?mv /usr/local/sonarqube/extensions/plugins /usr/local/sonarqube/extensions/plugins_bak? $ rz?‐bye?plugins.tar.gz? $ tar?xf?plugins.tar.gz?‐C?/usr/local/sonarqube/extensions? $ chown -R sonar.sonar /usr/local/sonarqube/extensions/plugins? $ su - sonar -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh restart"
jenkins服务器测试推送html代码至SonarQube检测
客户端其他版本下载地址搜索对应版本 例如:SonarScanner 4.0
https://docs.sonarqube.org/7.9/analysis/scan/sonarscanner/
$ rz -byte sonar-scanner-cli-4.0.0.1744-linux.zip $ unzip sonar-scanner-cli-4.0.0.1744-linux.zip $ mv sonar-scanner-4.0.0.1744-linux sonar-scanner-4.0.0.1744 $ ln -s /opt/src/sonar-scanner-4.0.0.1744 /usr/local/sonar-scanner $ cd /usr/local/sonar-scanner $ echo "export PATH=$PATH:/usr/local/sonar-scanner/bin" >> /etc/profile $ source /etc/profile
$ vim /usr/local/sonar-scanner/conf/sonar-scanner.properties sonar.host.url=http://10.0.1.203:9000 sonar.login=7559e4be476a7bc9b52f0682a097381f790b0f3e sonar.sourceEncoding=UTF-8
# 进入代码目录 $ cd /var/lib/jenkins/workspace/My_FreeStyle_Job/ # 推送代码 $ sonar-scanner -Dsonar.projectKey=html -Dsonar.sources=. # 出现如下提示表示代码推送成功 `INFO: EXECUTION SUCCESS`