欢迎光临
我们一直在努力

58.DevOps进阶

文章目录

  • DevOps进阶
    • 代码审计
      • 核心功能
      • 部署
      • 代码测试
        • maven方式
        • sonar-scanner方式
    • 代码审计整合Jenkins
    • harbor镜像仓库
      • 部署
      • 推送镜像
      • 拉取镜像
    • Jenkins服务中使用docker
    • Jenkins服务中构建镜像推送到harbor仓库
    • 镜像部署目标web服务器

DevOps进阶

代码审计

SonarQube 是一个开源的代码质量管理平台,用于自动化检测代码中的质量问题和安全漏洞,帮助团队 持续提升代码质量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

官方地址: https://www.sonarsource.com/products/sonarqube/downloads/

核心功能

  • 静态代码分析

    • 自动识别代码缺陷(如空指针异常)、安全漏洞(如SQL注入)和代码异味(不良设计),支 持30+编程语言(Java、C#、Python等)。
    • 集成PMD、FindBugs、Checkstyle等插件增强检测能力,提供深度规则定制。
  • 多维质量指标

    • 分析代码重复率、复杂度(圈复杂度)、注释覆盖率及单元测试覆盖率(需集成JaCoCo等工 具)。
    • 量化技术债务,生成修复优先级建议。
  • 开发流程集成

    • 无缝对接CI/CD工具(Jenkins、GitLab CI、GitHub Actions),提交代码后自动触发扫描。
    • 通过IDE插件(SonarLint)实时反馈问题,支持开发阶段即时修复。
  • 质量门禁(Quality Gate)

    • 定义质量阈值(如漏洞数量上限),未达标代码自动阻断合并或部署。
  • 部署

    在Jenkins服务器上,拉取postgres数据库和代码审计sonarqube镜像

    [root@jenkins ~]# docker pull postgres:12.6
    [root@jenkins ~]# docker pull sonarqube:8.9.6-community

    创建代码审计容器创建脚本

    [root@jenkins ~]# cd /usr/local/docker/
    [root@jenkins docker]# mkdir sonarqube_docker
    [root@jenkins docker]# ls
    jenkins_docker sonarqube_docker
    [root@jenkins docker]# cd sonarqube_docker/

    [root@jenkins sonarqube_docker]# vim docker-compose.yml
    [root@jenkins sonarqube_docker]# cat docker-compose.yml
    version: '3.1'
    services:
    db:
    image: postgres:12.6
    container_name: db
    ports:
    5432:5432
    networks:
    – sonarnet
    environment:
    POSTGRES_USER: sonar
    POSTGRES_PASSWORD: sonar
    POSTGRES_DB: sonar
    sonarqube:
    image: sonarqube:8.9.6-community
    container_name: sonarqube
    depends_on:
    – db
    ports:
    9000:9000
    environment:
    SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
    SONAR_JDBC_USERNAME: sonar
    SONAR_JDBC_PASSWORD: sonar
    networks:
    – sonarnet
    networks:
    sonarnet:
    driver: bridge

    启动脚本

    [root@jenkins sonarqube_docker]# docker-compose up -d
    Creating network "sonarqube_docker_sonarnet" with driver "bridge" #出现错误没有启动成功
    Creating db ... done
    Creating sonarqube ... done

    查看日志

    [root@jenkins sonarqube_docker]# docker logs sonarqube
    。。。。
    bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    。。。。#最大虚拟内存空间太低了,至少需要262144

    解决问题:虚拟内存太小,max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144],需要扩容

    [root@jenkins sonarqube_docker]# vim /etc/sysctl.conf
    [root@jenkins sonarqube_docker]# tail -n 1 /etc/sysctl.conf
    vm.max_map_count=262144
    #激活
    [root@jenkins sonarqube_docker]# sysctl -p

    重新创建

    [root@jenkins sonarqube_docker]# docker-compose up -d
    db is up-to-date
    Starting sonarqube ... done

    访问地址: http://192.168.18.154:9000/

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    更新密码

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    登录到sonarqube首页界面

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    下载并安装中文插件

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    下载并安装

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    出现报错

    v在这里插入图片描述

    问题解决:

    修正docker-compose.yml文件:

    [root@jenkins sonarqube_docker]# vim docker-compose.yml
    [root@jenkins sonarqube_docker]# cat docker-compose.yml
    version: '3.1'
    services:
    db:
    image: postgres:12.6
    container_name: db
    ports:
    5432:5432
    networks:
    – sonarnet
    environment:
    POSTGRES_USER: sonar
    POSTGRES_PASSWORD: sonar
    POSTGRES_DB: sonar
    sonarqube:
    image: sonarqube:8.9.6-community
    container_name: sonarqube
    depends_on:
    – db
    ports:
    9000:9000
    volumes:
    – ./plugins/:/opt/sonarqube/extensions/plugins #添加创建仓库数据卷
    environment:
    SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
    SONAR_JDBC_USERNAME: sonar
    SONAR_JDBC_PASSWORD: sonar
    networks:
    – sonarnet
    networks:
    sonarnet:
    driver: bridge

    本地中文插件sonar-l10n-zh-plugin-8.9.jar放入,并服务重启

    [root@jenkins sonarqube_docker]# docker-compose stop
    Stopping sonarqube ... done
    Stopping db ... done
    [root@jenkins sonarqube_docker]# docker-compose up -d
    Starting db ... done
    Recreating sonarqube ... done
    [root@jenkins sonarqube_docker]# ls
    docker-compose.yml plugins

    #本地上传sonar-l10n-zh-plugin-8.9.jar
    [root@jenkins sonarqube_docker]# cd plugins/
    [root@jenkins plugins]# ls
    sonar-l10n-zh-plugin-8.9.jar
    [root@jenkins plugins]# docker-compose restart
    Restarting sonarqube ... done
    Restarting db ... done
    #注意:如果出现sonar无法正常启动,需要把原来启动的sonarqube和postgre容器删除掉,再重新使用docker-compose拉起来

    首页显示为中文

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    代码测试

    回到Windows系统的idea上

    sonarqube会支持两种方式测试代码:

    maven方式

    1:maven方式,sonarqube对maven有支持,可以使用maven命令对代码测试。

    修改maven目录下的settings.xml文件

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    指定位置插入如下内容:sonarqube的用户名、密码和Jenkins主机节点

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    #代码
    <profile>
    <id>sonar</id>
    <activation>
    <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
    <sonar.login>admin</sonar.login>
    <sonar.password>dcr@1111</sonar.password> <sonar.host.url>http://192.168.18.154:9000</sonar.host.url>
    </properties>
    </profile>

    设置maven环境变量

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    在idea当前终端命令行进行输入:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    执行

    mvn sonar:sonar

    报错

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    版本报错

    原因:sonar-maven-plugin:4.0.0.4121默认支持jdk11,而项目中使用的是jdk8,导致版本出错

    解决问题:

    可以采用下载对应的sonar-maven-plugin:3.11.0.3922版本来解决

    在pom.xml中插入以下内容:

    <plugin>
    <groupId>org.sonarsource.scanner.maven</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>3.11.0.3922</version>
    </plugin>

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    重新执行mvn sonar:sonar,进行加载

    打开sonarqube网页,完成项目代码审计

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    查看检测结果

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    sonar-scanner方式

    官方插件下载地址: https://docs.sonarsource.com/sonarqube-server/latest/analyzing-source-code/scanners/sonarscanner/

    在Jenkins服务器上操作,把压缩包sonar-scanner-cli-4.6.0.2311-linux.zip解压到Jenkins的data目录中

    #本地上传sonar-scanner-cli-4.6.0.2311-linux.zip
    [root@jenkins ~]# unzip sonar-scanner-cli-4.6.0.2311-linux.zip
    [root@jenkins ~]# mv sonar-scanner-4.6.0.2311-linux/ sonar-scanner
    [root@jenkins ~]# mv sonar-scanner /usr/local/docker/jenkins_docker/data/

    修改配置

    [root@jenkins ~]# cd /usr/local/docker/jenkins_docker/data/sonar-scanner/
    [root@jenkins sonar-scanner]# ls
    bin conf jre lib
    [root@jenkins sonar-scanner]# cd conf
    [root@jenkins conf]# ls
    sonar-scanner.properties
    [root@jenkins conf]# vim sonar-scanner.properties
    [root@jenkins conf]# cat sonar-scanner.properties
    #Configure here general information about the environment, such as SonarQube server connection details for example
    #No information about specific project should appear here

    #—– Default SonarQube server
    sonar.host.url=http://192.168.18.154:9000 #去掉注释,修改为Jenkins的地址

    #—– Default source code encoding
    sonar.sourceEncoding=UTF-8 #去注释

    进行项目代码测试

    [root@jenkins conf]# cd /usr/local/docker/jenkins_docker/data/workspace/mytest
    [root@jenkins mytest]# /usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=linux-test
    。。。。
    ERROR: Error during SonarScanner execution
    ERROR: Not authorized. Analyzing this project requires authentication. Please provide a user token in sonar.login or other credentials in sonar.login and sonar.password.
    ERROR:
    ERROR: Re-run SonarScanner using the -X switch to enable full debug logging.
    #需要使用token进行身份认证

    需要使用token令牌进行身份验证

    点击右上角,用户-我的账号

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    添加参数,再次执行,需要添加编译过后内容的位置

    [root@jenkins mytest]# /usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=linux-test -Dsonar.login=e253a0b8e35b9527885207c3508479c8843073ea -Dsonar.projectKey=linux-test
    .....
    ERROR: Error during SonarScanner execution
    org.sonar.java.AnalysisException: Your project contains .java files, please provide compiled classes with sonar.java.binaries property, or exclude them from the analysis with sonar.exclusions property.
    ....#没有java

    继续添加参数,则测试成功(注意:这个密钥后面整合Jenkins要用到)

    [root@jenkins mytest]# /usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=linux-test -Dsonar.login=e253a0b8e35b9527885207c3508479c8843073ea -Dsonar.projectKey=linux-test -Dsonar.java.binaries=./target/

    回到sonarqube网页中查看

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    代码审计整合Jenkins

    使用插件导入sonar.hpi

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    搜索已安装插件

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    注意:先应用再保存后,再回到系统配置中

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    应用凭据

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    Jenkins中调用sonar-scanner工具

    系统管理-全局工具配置

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    添加名称和容器内部路径

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    在项目中进行配置

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    sonar.projectname=${JOB_NAME}
    sonar.projectKey=${JOB_NAME}
    sonar.source=./
    sonar.java.binaries=target

    进行构建

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    构建报错:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    解决问题:因为之前在Jenkins服务器上使用命令进行了构建,产生过隐藏文件.scannerwork夹需要删除

    [root@jenkins mytest]# ls -a
    . demo_web.iml .git .gitignore .idea .scannerwork target
    .. docker .gitattributes HELP.md pom.xml src
    [root@jenkins mytest]# rm -rf .scannerwork/
    [root@jenkins mytest]# ls -a
    . .. demo_web.iml docker .git .gitattributes .gitignore HELP.md .idea pom.xml src target

    再次构建

    过程中调用了sonarqube

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    查看sonarqube网页,观察到代码测试结果

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    harbor镜像仓库

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    部署

    在Jenkins服务器上把harbor压缩包进行解压缩,进行设置后,启动安装

    [root@jenkins ~]# tar -xzvf harbor-offline-installer-v2.8.2.tgz -C /usr/local/

    [root@jenkins ~]# cd /usr//local/harbor/
    [root@jenkins harbor]# ls
    common.sh harbor.v2.8.2.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
    [root@jenkins harbor]# cp -p harbor.yml.tmpl harbor.yml
    [root@jenkins harbor]# vim harbor.yml
    hostname: 192.168.18.154
    # https related config
    #https:
    # https port for harbor, default is 443
    # port: 443
    # The path of cert and key files for nginx
    #certificate: /your/certificate/path
    #private_key: /your/private/key/path

    harbor_admin_password: harbor123

    [root@jenkins harbor]# ./install.sh

    打开harbor镜像仓库地址网页,默认端口80

    http://192.168.18.154:80

    输入用户名:admin

    密码:harbor123

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    登录成功进入页面

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    创建项目

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    修改docker配置文件,添加仓库地址

    [root@jenkins docker]# vim /etc/docker/daemon.json
    [root@jenkins docker]# cat /etc/docker/daemon.json
    {
    "insecure-registries": ["192.168.18.154:80"],#添加harbor仓库地址
    "registry-mirrors": [
    "https://3aa741e7c6bf42ae924a3c0143f0e841.mirror.swr.myhuaweicloud.com",
    "https://do.nark.eu.org",
    "https://dc.j8.work",
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn",
    "https://registry.docker-cn.com",
    "https://hub-mirror.c.163.com",
    "https://hub.uuuadc.top",
    "https://docker.anyhub.us.kg",
    "https://dockerhub.jobcher.com",
    "https://dockerhub.icu",
    "https://docker.ckyl.me",
    "https://docker.awsl9527.cn",
    "https://mirror.baidubce.com",
    "https://docker.1panel.live"
    ]
    }

    [root@jenkins docker]# systemctl restart docker

    #重启docker后需要重启harbor,jenkins,sonarqube容器
    #重启harbor
    [root@jenkins docker]# cd /usr/local/harbor/
    [root@jenkins harbor]# docker-compose restart
    Restarting nginx ... done
    Restarting harbor-jobservice ... done
    Restarting harbor-core ... done
    Restarting harbor-portal ... done
    Restarting registryctl ... done
    Restarting redis ... done
    Restarting harbor-db ... done
    Restarting registry ... done
    Restarting harbor-log ... done
    #重启jenkins
    [root@jenkins harbor]# cd /usr/local/docker/jenkins_docker/data/
    [root@jenkins data]# docker-compose restart
    Restarting jenkins ... done
    #重启sonarqube
    [root@jenkins data]# cd /usr/local/docker/sonarqube_docker/
    [root@jenkins sonarqube_docker]# docker-compose restart
    Restarting sonarqube ... done
    Restarting db ... done

    推送镜像

    Jenkins服务器本地登录harbor

    [root@jenkins sonarqube_docker]# docker login -u admin -p harbor123 192.168.18.154:80
    WARNING! Using –password via the CLI is insecure. Use –password-stdin.
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store

    Login Succeeded

    下载测试镜像nginx

    [root@jenkins sonarqube_docker]# docker pull nginx

    推送镜像到harbor

    #修改标签
    [root@jenkins sonarqube_docker]# docker tag nginx:latest 192.168.18.154:80/repo/nginx/test
    [root@jenkins sonarqube_docker]# docker push 192.168.18.154:80/repo/nginx/test

    查看harbor的repo中已经有了nginx:test镜像

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    拉取镜像

    在本地Jenkins服务器中测试拉取,在拉取前先删除原有镜像

    #先将本地有的镜像删除
    [root@jenkins sonarqube_docker]# docker rmi 192.168.18.154:80/repo/nginx/test

    [root@jenkins sonarqube_docker]# docker pull 192.168.18.154:80/repo/nginx/test

    [root@jenkins sonarqube_docker]# docker images | grep 192.168.18.154:80
    192.168.18.154:80/repo/nginx/test latest 4af177a024eb 2 weeks ago 161MB

    Jenkins服务中使用docker

    Jenkins需要把镜像制作并推送到harbor中,就需要具备docker环境

    让Jenkins容器使用宿主机中docker环镜

    修改docker.sock的权限

    [root@jenkins run]# cd /var/run/
    [root@jenkins run]# ll docker.sock
    srw-rw—- 1 root docker 0 Jan 30 09:18 docker.sock
    [root@jenkins run]# chown root.root docker.sock
    [root@jenkins run]# chmod o+rw docker.sock
    [root@jenkins run]# ll docker.sock
    srw-rw-rw- 1 root root 0 Jan 30 09:18 docker.sock

    修改Jenkins脚本配置文件

    [root@jenkins run]# cd /usr/local/docker/jenkins_docker/
    [root@jenkins jenkins_docker]# vim docker-compose.yml
    [root@jenkins jenkins_docker]# cat docker-compose.yml
    version: "3.1"
    services:
    jenkins:
    image: jenkins/jenkins:2.346.3-lts-jdk8
    container_name: jenkins
    ports:
    8080:8080
    50000:50000
    volumes:
    – ./data/:/var/jenkins_home/
    – /var/run/docker.sock:/var/run/docker.sock
    – /usr/bin/docker:/usr/bin/docker
    – /etc/docker/daemon.json:/etc/docker/daemon.json

    启动Jenkins服务

    [root@jenkins jenkins_docker]# docker-compose up -d
    Recreating jenkins ... done

    验证:进入Jenkins容器内部执行docker命令

    [root@jenkins jenkins_docker]# docker exec -it jenkins bash
    jenkins@488e9af58c84:/$ docker version
    Client: Docker Engine – Community
    Version: 26.1.4
    API version: 1.45
    Go version: go1.21.11
    Git commit: 5650f9b
    Built: Wed Jun 5 11:32:04 2024
    OS/Arch: linux/amd64
    Context: default

    Server: Docker Engine – Community
    Engine:
    Version: 26.1.4
    API version: 1.45 (minimum version 1.24)
    Go version: go1.21.11
    Git commit: de5c9cf
    Built: Wed Jun 5 11:31:02 2024
    OS/Arch: linux/amd64
    Experimental: false
    containerd:
    Version: 1.6.33
    GitCommit: d2d58213f83a351ca8f528a95fbd145f5654e957
    runc:
    Version: 1.1.12
    GitCommit: v1.1.12-0-g51d5e94
    docker-init:
    Version: 0.19.0
    GitCommit: de40ad0

    Jenkins服务中构建镜像推送到harbor仓库

    到Windows系统的idea中,删除docker-compose文件

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    修改一下内容3.0重新提交

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    添加3.0标签

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    项目-配置-构建后操作

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    mv target/*.jar docker/
    docker build -t mytest:$tag docker/

    选择对应的标签进行构建

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    在Jenkins服务器中查看镜像

    [root@jenkins jenkins_docker]# docker images | grep mytest
    mytest v3.0 c514ecef480c About a minute ago 543MB

    推送到harbor配置

    项目-配置-构建后操作

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    编辑内容如下:(登录harbor-定义镜像标签-推送harbor)

    docker login -u admin -p harbor123 192.168.18.154:80
    docker tag mytest:$tag 192.168.18.154:80/repo/mytest:$tag
    docker push 192.168.18.154:80/repo/mytest:$tag

    再次进行构建3.0项目

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    去harbor上查看

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    完善

    [root@jenkins jenkins_docker]# docker images | grep none
    <none> <none> c514ecef480c 6 minutes ago 543MB

    [root@jenkins jenkins_docker]# docker image prune -f
    [root@jenkins jenkins_docker]# docker images | grep none

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    再次构建

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    检验

    [root@jenkins jenkins_docker]# docker images | grep none

    镜像部署目标web服务器

    1:告知目标服务器拉取哪个镜像。告知内容(harbor地址;harbor仓库名;镜像名;镜像版本;容器 运行端口号)

    2:判断当前服务器是否正在运行该容器,如果正在运行则需要删除。

    3:如果目标服务器已经存在当前镜像,则需要删除该镜像。

    4:目标服务器拉取harbor上的镜像。

    5:将拉取的镜像运行为容器

    在Jenkins服务器中,编写脚本

    [root@jenkins ~]# vim deploy.sh
    [root@jenkins ~]# mv deploy.sh /usr/local/docker/jenkins_docker/data/workspace/mytest
    [root@jenkins mytest]# cat deploy.sh
    #! /bin/bash
    harbor_ip=$1
    harbor_repo=$2
    project=$3
    version=$4
    container_port=$5
    host_port=$6

    imageName=$harbor_ip/$harbor_repo/$project:$version

    echo $imageName

    #如果当前容器正在运行,则删除
    container_id=`docker ps -a | grep ${project} | awk '{print $1}'`
    echo $container_id

    if [ "$container_id" != "" ]
    then
    docker stop $container_id
    docker rm $container_id
    fi

    #如果当前镜像已存在,则删除
    tag=`docker images | grep ${project} | awk '{print $2}'`

    echo $tag

    if [[ "$tag" =~ "$version" ]]
    then
    docker rmi $imageName
    fi
    #非本地登录镜像仓库
    cp /lib/systemd/system/docker.service /lib/systemd/system/docker.service.bak
    sed -i 's|ExecStart=/usr/bin/dockerd -H fd:// –containerd=/run/containerd/containerd.sock|ExecStart=/usr/bin/dockerd -H fd:// –insecure-registry 192.168.18.154 –containerd=/run/containerd/containerd.sock|g' /lib/systemd/system/docker.service
    systemctl daemon-reload && systemctl restart docker && docker login -u admin -pharbor123 $harbor_ip
    #拉取镜像
    docker pull $imageName
    #运行容器
    docker run -d -p $host_port:$container_port –name $project $imageName
    echo "SUCCESS"

    打开项目-配置-General

    添加字符参数,容器启动时,主机端口

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    mv /usr/local/test/deploy.sh /usr/bin/
    chmod +x /usr/bin/deploy.sh
    deploy.sh 192.168.18.154 repo ${JOB_NAME} $tag $container_port $host_port

    进行构建

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    查看构建结果

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 在目标web服务器中查看镜像

    [root@web docker]# docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    192.168.18.154/repo/mytest v3.0 2e3c52668c1b About a minute ago 543MB
    mytest v2.0 3cb3fcdea642 5 hours ago 543MB
    mytest v1.0 223b4d285ff2 26 hours ago 543MB
    openjdk 8 b273004037cc 3 years ago 526MB

    查看容器

    [root@web docker]# docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    59c225799342 192.168.18.154/repo/mytest:v3.0 "/bin/sh -c 'java -j…" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp mytest

    查看网页

    http://192.168.18.155:8080/test

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    赞(0)
    未经允许不得转载:171主机测评 » 58.DevOps进阶
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址