Jenkins和常用插件的安装

2023年 10月 8日 101.7k 0

Jenkins

1.基础知识

  • 从git拉取的代码默认放在Jenkins的workspace,如果通过docker run jenkinsci/blueocean,那么Jenkins的工作目录是 /var/jenkins_home/workspace
  • 直接安装的,则是在/var/lib/jenkins/workspace
  • 1.1 学习文档

    官网doc
    博客blog.mafeifan.com/

    2. 安装Jenkins

    这节内容来自于Jenkins官方文档

        建议使用的Docker映像是jenkinsci/blueocean image(来自 the Docker Hub repository)。 该镜像包含当前的长期支持 (LTS) 的Jenkins版本 (可以投入使用) ,捆绑了所有Blue Ocean插件和功能。这意味着你不需要单独安装Blue Ocean插件。

    注意 Blue Ocea可以理解成Jenkins UI页面的皮肤插件

    2.1 通过docker安装Jenkins

    Jenkins直接安装在Linux上,需要提前安装java的jdk,因为Jenkins依赖它。而利用docker安装Jenkins,可以直接使用官方dodcker镜像,不需要安装依赖,简单方便

    2.1.1 通过docker run image 直接安装Jenkins

       docker run 
         -u root  # 必须给予Jenkins足够权限,否则部署在远程服务器上会报错'无法连接Jenkins'
         --rm    #(可选)容器关闭时自动删除自己,即 `docker stop 容器id` ,这个docker 容器会被删除
         -d      # 在后台运行容器
         -p 8080:8080    # 映射`jenkinsci/blueocean` 容器端口8080到主机上的端口8080
         -p 50000:50000     #1
         -v jenkins-data:/var/jenkins_home    #2
         -v /var/run/docker.sock:/var/run/docker.sock    #3
         --name jenkins-service  # 给容器起别名
         --restart always  # 容器总是自动重启,避免Jenkins重启后容器停止而不启动
         jenkinsci/blueocean 
         
         # 无注释版本,请粘贴这个(没有加--rm)
       docker run 
         -u root 
         -d 
         -p 8080:8080 
         -p 50000:50000 
         -v jenkins-data:/var/jenkins_home 
         -v /var/run/docker.sock:/var/run/docker.sock 
         --name jenkins-service 
         --restart always 
         jenkinsci/blueocean
    

    其他参数含义请点击这里

    参数 功能
    #1 -p (可选)将 jenkinsci/blueocean 容器的端口50000 映射到主机上的端口50000。详细的看官方文档
    #2 -v (可选,但强烈建议)映射在容器中的/var/jenkins_home 目录到具有名字 jenkins-data 的volume。 如果这个卷不存在,那么这个 docker run 命令会自动为你创建卷。 如果您希望每次重新启动Jenkins(通过此 docker run ... 命令)时保持Jenkins状态,则此选项是必需的 。 如果你没有指定这个选项,那么在每次重新启动后,Jenkins将有效地重置为新的实例。 注意:  所述的 jenkins-data 卷也可以 docker volume create命令创建: docker volume create jenkins-data 代替映射 /var/jenkins_home 目录转换为Docker卷,还 可以将此目录映射到计算机本地文件系统上的目录。 例如,指定该选项 -v $HOME/jenkins:/var/jenkins_home 会将容器的 /var/jenkins_home 目录映射 到 本地计算机上目录中的 jenkins 子目录, 该$HOME目录通常是 /Users//jenkins 或/home//jenkins
    #3 -v (可选 /var/run/docker.sock 表示Docker守护程序通过其监听的基于Unix的套接字。 该映射允许 jenkinsci/blueocean 容器与Docker守护进程通信, 如果 jenkinsci/blueocean 容器需要实例化其他Docker容器,则该守护进程是必需的。 如果运行声明式管道,其语法包含agent部分用 docker- 例如, agent { docker { ... } } 此选项是必需的。 在Pipeline Syntax 页面上阅读更多关于这个的信息

    注意 此镜像里已经有git,所以不用自己额外再装git

    2.1.2 通过 docker-compose 安装Jenkins

    2.1.3 直接安装Jenkins

    如果作为直接部署网站的服务器且通过docker进行部署,只能使用此方式。否则会影响网站使用docker 部署,比如docker rmi -f $(docker images -qa),docker system prune --volumes -f(它会使所有Jenkin保存的东西被清除,比如密钥)

    提示 vscode可以安装docker插件,它有代码提示及语法高亮等功能

    2.2 配置Jenkins

    浏览器输入 ip + 端口,进入Jenkins
    通过ip addr可查看Linux的ip地址,如果没有看见,说明网卡没有启动,具体自行百度
    Jenkins和常用插件的安装-1

    2.2.1 输入初始密码

    • 通过查看日志 docker logs -n=25 容器id 直接看到密码

    Jenkins和常用插件的安装-2

    • 或者进入容器命令行docker exec -it 容器名 bash,输入cat /var/jenkins_home/secrets/initialAdminPassword

    2.2.2 点击 选择插件来安装

    2.2.3 选择无,因为服务器在国外,安装插件太慢。所以后面通过更改镜像的方式重新安装

    Jenkins和常用插件的安装-3

    2.2.4 配置Jenkins插件中心为国内镜像

    Jenkins和常用插件的安装-4

    # 1. 修改 plugin manager 中update site 的url为清华镜像源https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    # 2. 修改服务器配置
    docker exec -it 容器id /bin/bash
    cd  /var/jenkins_home/updates
    sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json
    sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
    # 3. 重启Jenkins服务 
    docker restart docker容器
    

    如果不是通过docker安装Jenkins而是直接安装,那么需要cd /var/lib/jenkins/updates,最后通过systemctl restart jenkins重启Jenkins

    2.2.5 安装插件

    进入plugin manager安装如下插件

    • Localization: Chinese (Simplified)(JenkinsUI页面的汉化包)

    • DingTalk(流水线工作的时候钉钉消息通知,具体配置请百度)

    • Git Parameter Plug-In

    • 安装 Publish Over SSH 作用: 将构建后的编译产出发布到服务器且允许Jenkins所在机器通过SSH服务登录到远程机执行脚本

    • 安装Generic Webhook Trigger Plugin作用:通用 Webhook 触发器构建

    • NodeJs 用于构建前端代码(npm build)

    • Pipeline: Stage View在非blue ocean界面,可以清晰的看见构建过程

    注意 安装完插件后需要重启Jenkins

    2.3 普通方式安装Jenkins

    3. Jenkins构建自由风格任务

    3.1参数化构建

    拉取git仓库代码(这里拉取码云)

    credentials是可以选择输入账号密码,也可以选择输入ssh密钥(自行百度)

    image.png

    3.1.1 选择参数化构建,即使用tag,方便代码回滚

    3.2 常用构建触发器

  • 轮询scm
  • (SCM,全称Software Configuration Management,中文翻译为软件配置管理,git是scm工具,就是实现scm的一种方法)

    Jenkins会定时扫描整个项目源码,系统开销较大,不推荐使用

  • githook
    算是对前者的改进,最为推荐

  • 其他工程构建后触发
    顾名思义,就是前一个项目构建完成后开始构建任务

  • 4. Jenkins 构建流水线任务

      流水线脚本(Jenkinsfile)一般放在ui界面、项目源码里面或是单独放在一个git仓库里(推荐选择后面两种,方便版本控制,因为Jenkinsfile也会有多个版本,而且也可以防止Jenkins崩溃等极端状况发生)

    参考文档1
    # Jenkins教程(三)添加凭据与流水线拉取Git代码

    4.1 踩坑记录

    惨痛教训 一定给任务设置超时监测

    给任务设置超时监测,会避免流水线出bug卡死服务器

     timeout(time: 3, unit: 'MINUTES') {
               sh './health-check.sh'
           }
    

    清理工作区

    www.thinbug.com/q/37468455

    使用yarn构建前端项目

    npm装包有时会出现依赖拉不下来,从而导致由于网络问题导致的构建失败,而yarn会在第一次构建的时候就生成缓存,后面构建的时候,会先看缓存区有没有package.json里用到的依赖包,如果有的话就不会下载,没有才会下载,提高了效率。

       node -v
       npm install -g yarn -registry=https://registry.npm.taobao.org
       yarn -v 
       yarn install --pure-lockfile 
       #--pure-lockfile 这个参数是在服务器install不生成yarn.lock,防止服务器和本地代码冲突 
       yarn run build       
    

    5. Jenkins环境变量

    参考文章
    www.artacode.com/post/ci-cd/…

    5.1 自定义环境变量和内置环境变量

    5.2 pipeline中的使用(声明式语法)

    使用变量一定要使用双引号,带变量的字符串只能用双引号,不能用单引号

    pipeline {
        agent any
        environment {
          git_url = 'https://gitee.com/xxxxxx'
          git_auth = 'e767d8bb-daf5-4d85-91c9-e34545215c44'
        }
        stages {
            stage('拉取代码') {
                steps {
                    echo "${git_url}"
                    echo "${git_auth}"
                }
            }
        }
    }
    

    6. Jenkins常用插件的使用

    6.1 publish over ssh 的使用

    注意 不能使用docker -it 容器名 command, 只能使用docker -i 容器名 command,因为是通过publish over ssh插件执行的命令,而不是在终端上。否则会报错ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [1]],并且不会有其他详细错误提示。

    # 执行sh脚本文件,在终端中输入完全没问题,但使用publish over ssh 执行就会退出,导致构建失败
    docker compose up -d
    docker exec -i web bash start.sh
    

    6.2 用户权限管理

    需要安装 插件Role-based Authorization Strategy

    6.3 Jenkins机器人配置

    主要是配置好Jenkins机器人的id,因为在Jenkinsfile中填的是id

    6.4 清理工作区插件(Workspace Cleanup)

    用法是cleanWs()

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论