当前位置:   article > 正文

Jenkins和常用插件的安装_jenkins docker插件

jenkins docker插件

1.基础知识

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

1.1 学习文档

官网doc
博客blog.mafeifan.com/

2. 安装Jenkins

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

建议使用的Docker映像是[`jenkinsci/blueocean` image](https://link.juejin.cn?target=https%3A%2F%2Fhub.docker.com%2Fr%2Fjenkinsci%2Fblueocean%2F "https://hub.docker.com/r/jenkinsci/blueocean/")(来自 the [Docker Hub repository](https://link.juejin.cn?target=https%3A%2F%2Fhub.docker.com%2F "https://hub.docker.com/"))。 该镜像包含当前的[长期支持 (LTS) 的Jenkins版本](https://link.juejin.cn?target=https%3A%2F%2Fwww.jenkins.io%2Fdownload "https://www.jenkins.io/download") (可以投入使用) ,捆绑了所有Blue Ocean插件和功能。这意味着你不需要单独安装Blue Ocean插件。
  • 1

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

2.1 通过docker安装Jenkins

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

2.1.1 通过docker run image 直接安装Jenkins
bash
复制代码
   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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

其他参数含义请点击这里

参数功能#1 -p(可选)将 jenkinsci/blueocean 容器的端口50000 映射到主机上的端口50000。详细的看官方文档#2 -v(可选,但强烈建议)映射在容器中的/var/jenkins_home 目录到具有名字 jenkins-datavolume。 如果这个卷不存在,那么这个 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/<your-username>/jenkins/home/<your-username>/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地址,如果没有看见,说明网卡没有启动,具体自行百度 image.png

2.2.1 输入初始密码

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

image.png

  • 或者进入容器命令行docker exec -it 容器名 bash,输入cat /var/jenkins_home/secrets/initialAdminPassword
2.2.2 点击 选择插件来安装

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

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

bash
复制代码
# 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容器
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

2.2.5 安装插件

进入plugin manager安装如下插件

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

2.3 普通方式安装Jenkins

3. Jenkins构建自由风格任务

3.1参数化构建

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

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

image.png

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

3.2 常用构建触发器

  1. 轮询scm

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

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

  1. githook 算是对前者的改进,最为推荐
  2. 其他工程构建后触发 顾名思义,就是前一个项目构建完成后开始构建任务

4. Jenkins 构建流水线任务

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

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

4.1 踩坑记录

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

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

groovy
复制代码
 timeout(time: 3, unit: 'MINUTES') {
           sh './health-check.sh'
       }
  • 1
  • 2
  • 3
  • 4
  • 5

清理工作区

www.thinbug.com/q/37468455

使用yarn构建前端项目

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

bash
复制代码
   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       
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5. Jenkins环境变量

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

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

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

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

groovy
复制代码
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}"
            }
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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]],并且不会有其他详细错误提示。

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

6.2 用户权限管理

需要安装 插件Role-based Authorization Strategy

6.3 Jenkins机器人配置

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

6.4 清理工作区插件(Workspace Cleanup

用法是cleanWs()

题外话

在此疾速成长的科技元年,编程就像是许多人通往无限可能世界的门票。而在编程语言的明星阵容中,Python就像是那位独领风 骚的超级巨星, 以其简洁易懂的语法和强大的功能,脱颖而出,成为全球最炙手可热的编程语言之一。


Python 的迅速崛起对整个行业来说都是极其有利的 ,但“人红是非多”,导致它平添了许许多多的批评,不过依旧挡不住它火爆的发展势头。

如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

学习资源推荐

除了上述分享,如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。

这里给大家展示一下我进的兼职群和最近接单的截图

兼职群

私单

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/802498
推荐阅读
相关标签